Sáng kiến kinh nghiệm Giúp học sinh tiếp cận các bài toán thực tiễn khi dạy lập trình C++ thông qua nền tảng Arduino

Việc dạy và học lập trình ở các trường THPT hiện nay

Việc dạy học lập trình ở các trường THPT phần lớn đang chú trọng giải quyết các bài toán về toán học. Học sinh chưa hiểu được lập trình để làm gì ngoài việc tính toán với các con số; Học sinh sẽ tự hỏi lập trình có ứng dụng như thế nào trong thực tế bởi đa phần các bài tập trong sách đều liên quan đến tính toán hoặc thuần túy về toán học, không gắn liền với thực tiễn, Vì thế để học sinh có thể vận dụng kiến thức của môn học vào giải quyết những vấn đề thực tiễn là rất khó nếu chỉ căn cứ vào lý thuyết thuần túy do giáo viên truyền đạt.

Khi dạy học để mô phỏng kiến thức bài học giáo viên chủ yếu dựa vào các phần mềm để test thử các câu lệnh mà chưa có ví dụ trực quan để mô phỏng. Vì thế học sinh rất khó khăn trong việc tiếp thu kiến thức và cảm thấy rất nhàm chán khi học về lập trình.

Các cuộc thi khoa học kỹ thuật

Trong những năm gần đây các cuộc thi khoa học kỹ thuật, sáng tạo thanh thiếu niên nhi đồng, kiến tạo tương lai, đề án 1655, ngày càng được lan tỏa khắp các vùng miền với sự tham gia đông đảo của các em học sinh. Cuộc thi nhằm khuyến khích học sinh trung học nghiên cứu khoa học; sáng tạo kĩ thuật, công nghệ và vận dụng kiến thức của các môn học vào giải quyết những vấn đề thực tiễn; góp phần đổi mới hình thức tổ chức dạy học gắn với phát triển văn hóa đọc; thúc đẩy giáo viên tự bồi dưỡng nâng cao năng lực chuyên môn, nghiệp vụ,.

Cuộc thi là minh chứng điển hình cho việc thực hành, trải nghiệm, ứng dụng kiến thức vào giải quyết một đề tài cụ thể có tính ứng dụng thực tiễn. Điều đó khích lệ, tạo động lực cho giáo viên thay đổi để học sinh cũng thay đổi trong việc học đi đôi với hành.

Tại trường THPT Tương Dương 1 số lượng học sinh biết đến và tham gia vào các cuộc thi về khoa học kĩ thuật là chưa nhiều, đặc biệt là lĩnh vực lập trình còn rất hạn chế.

 

docx 43 trang Nhật Nam 03/10/2024 1140
Bạn đang xem 20 trang mẫu của tài liệu "Sáng kiến kinh nghiệm Giúp học sinh tiếp cận các bài toán thực tiễn khi dạy lập trình C++ thông qua nền tảng Arduino", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Sáng kiến kinh nghiệm Giúp học sinh tiếp cận các bài toán thực tiễn khi dạy lập trình C++ thông qua nền tảng Arduino

Sáng kiến kinh nghiệm Giúp học sinh tiếp cận các bài toán thực tiễn khi dạy lập trình C++ thông qua nền tảng Arduino
XTERNAL): Sử dụng điện áp được áp dụng cho chân AREF làm điện áp tham chiếu (Lưu ý: chỉ 0-5V).
Các hàm toán học
min(i, j): Trả về giá trị thấp nhất trong hai giá trị i và j max(i, j): Trả về giá trị cao nhất trong hai giá trị i và j
abs(i): Trả về giá trị tuyệt đối của i
sin(angle): Trả về sin của một góc tính bằng radian cos(angle): Trả về cosin của một góc tính bằng radian tan(angle): Trả về tang của một góc tính bằng radian sqrt(i): Trả về căn bậc hai của i
pow(cơ số, số mũ): Tính lũy thừa bậc (số mũ) của (cơ số).
constrain(i, minval, maxval): Ràng buộc giá trị i giữa minval (giá trị nhỏ nhất) và maxval (giá trị lớn nhất)
map (val, fromL, fromH, toL, toH): Chuyển đổi val từ phạm vi này sang phạm vi khác
random(i): Trả về một số nguyên dài ngẫu nhiên nhỏ hơn i random(i, j): Trả về một số nguyên dài ngẫu nhiên giữa i và j randomSeed(k): Sử dụng giá trị k để seed hàm random()
Giao tiếp nối tiếp (serial communication) Serial.begin(speed): Bắt đầu giao tiếp nối tiếp ở tốc độ xác định Serial.end(): Kết nối giao tiếp nối tiếp
Serial.print(DATA): Xuất DATA vào cổng nối tiếp. DATA có thể là ký tự, chuỗi, số nguyên và số thực dấu phẩy động (floating point number)
Serial.available(): Trả về số ký tự có sẵn để đọc trong bộ đệm nối tiếp Serial.read(): Đọc ký tự đầu tiên trong bộ đệm nối tiếp (trả về -1 nếu không có
dữ liệu)
Serial.write(DATA): Ghi DATA vào bộ đệm nối tiếp. DATA có thể là một ký tự, số nguyên hoặc array (mảng)
Serial.flush(): Xóa bộ đệm nối tiếp sau khi giao tiếp chiều đi hoàn tất
Servo
Servo myServo: Tạo biến myServo của loại Servo myServo.attach(PIN_NUMBER): myServo được liên kết với pin tại vị trí
PIN_NUMBER
myServo.write(angle): Ghi một góc từ 0 đến 180 cho servo gắn với myServo myServo.writeMicroseconds(uS): Ghi một giá trị tính bằng micro giây vào
servo được gắn với myServo (thường từ 1000 đến 2000 với 1500 là điểm giữa)
myServo.read(): Trả về một số nguyên chứa góc hiện tại của servo trong khoảng từ 0 - 180
myServo.attached(): Trả về true nếu servo được gắn vào pin myServo.detach(): Tách myServo bằng một pin đính kèm
Một số bài toán thực tiễn lập trình trên mạch Arduino
Đèn tín hiệu giao thông
Mô hình thực tế: Đèn tín hiệu giao thông đóng vai trò quan trọng trong hệ thống giao thông đô thị. Hệ thống này thường được lắp đặt tại các ngã 3, ngã 4 hay các cung đường vị trí đường đặc biệt. Cột đèn thường sẽ có 3 màu đèn gồm: Đỏ, Vàng, Xanh. Mỗi màu chứa đựng một hiệu lệnh riêng. Hệ thống đèn giao thông sẽ thay lực lượng cảnh sát giao thông phân luồng chỉ dẫn. Người tham gia giao thông chỉ cần quan sát và tuân thủ đúng theo hiệu lệnh chỉ dẫn này.
Mô hình Tin học: Lập trình điều khiển LED tín hiệu giao thông.
Bắt đầu
Cài đặt chức năng của các
Sơ đồ thuật toán:
Chờ 30 giây
Đèn đỏ
Chờ 3 giây
Đèn vàng
Chờ 30 giây
Đèn xanh
Các linh kiện cần thiết và sơ đồ đấu nối:
Tên linh kiện
Số lượng
Sơ đồ đấu nối
Arduino Uno
1


Led
3


Điện trở
3
Bo cắm
1
Dây cắm
7
Nguồn

Giải quyết vấn đề bằng lập trình:
Code
void setup()
{
pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT);
}
void loop()
{
digitalWrite(11, HIGH); delay(30000); //Chờ 30 giây digitalWrite(11, LOW); digitalWrite(12, HIGH); delay(3000);	//Chờ 3 giây digitalWrite(12, LOW); digitalWrite(13, HIGH); delay(30000); //Chờ 30 giây digitalWrite(13, LOW);
}
Nhấn nút còi kêu
Mô hình thực tế: Còi điện thường được sử dụng trong hệ thống báo động, chuông cửa, chuông ở trường học, các còi xe máy, ô tô,...
Mô hình Tin học: Lập trình điều khiển còi kêu bằng nút nhấn.
Bắt đầu
Cài đặt chức năng của các chân
Sơ đồ thuật toán:
Đ
Nút được nhấn
S
Còi dừng kêu
Còi kêu
Các linh kiện cần thiết và sơ đồ đấu nối:
Tên linh kiện
Số lượng
Sơ đồ đấu nối
Arduino Uno
1

Nhút nhấn
1
Còi Buzzer 5VDC
1
Bo cắm
1
Dây cắm
4
Nguồn
2 pin 3,7V
Giải quyết bằng lập trình:
Code
int button = 11; int coi = 13;

void setup() { pinMode(coi,OUTPUT); pinMode(button,OUTPUT);
}
void loop() {
int buttonStatus = digitalRead(button); if (buttonStatus == HIGH) { digitalWrite(coi, HIGH);
} else {
digitalWrite(coi, LOW);
}
}
Đèn sáng đuổi nhau
Mô hình thực tế: Đèn nháy được sử dụng rất nhiều để trang trí vào dịp giáng sinh, lễ tết,... Đèn nháy có rất nhiều hiệu ứng: đèn sáng đuổi nhau, nháy liên hồi, đổi màu,
Mô hình tin học: Lập trình điều khiển đèn led sáng dần tắt dần.
Bắt đầu
Cài đặt chức năng của các chân
Sơ đồ thuật toán:
Tắt lần lượt 8 Led
Sáng lần lượt 8 Led
Các linh kiện cần thiết và sơ đồ đấu nối:
Tên linh kiện
Số lượng
Sơ đồ đấu nối
Arduino Uno
1

Led
8

Điện trở

8

Bo cắm
1
Dây cắm
10
Nguồn
2 pin 3,7V
Giải quyết bằng lập trình:
Code
Dùng vòng lặp for
(Sử dụng trong trường hợp kết nối liền mạch)
Dùng mảng 1 chiều
(Sử dụng trong trường hợp kết nối không liền mạch)
int BASE = 2; //led nối tới chân số 2 int NUM = 8;	//số led
void setup()
{
for (int i = BASE; i < BASE + NUM; i ++)
{
pinMode(i, OUTPUT);
}
}
void loop()
{
//tắt dần 8 led
for (int i = BASE; i < BASE + NUM; i ++)
{
digitalWrite(i, LOW); delay(200);
const	char led[8]={1,3,4,5,6,7,9,10}; void setup()
{
for (int i=0; i <=7; i++)
{
pinMode(led[i], OUTPUT);
}
}
void loop()
{
//tắt dần 8 led
for (int i=0; i <=7; i++)
{
digitalWrite(led[i], LOW); delay(200);
}
//bật dần 8 led

}
//bật dần 8 led
for (int i = BASE; i < BASE + NUM; i ++)
{
digitalWrite(i, HIGH); delay(200);
}
}
for (int i=0; i <=7; i++)
{
digitalWrite(led[i], HIGH); delay(200);
}
}
Bật/tắt đèn theo ánh sáng môi trường
Mô hình thực tế: Khi trời tối đèn tự động sáng, khi trời sáng đèn tự động tắt. Mô hình này thường được sử dụng điều khiển đèn ngủ trong các hộ gia đình, hệ thống đèn đường, sân vườn,
Mô hình Tin học: Lập trình tự động bật/tắt đèn LED theo ánh sáng môi trường.
Bắt đầu
Cài đặt chức năng các chân
Sơ đồ thuật toán:
Đ
Môi trường tối
S
Led tắt
Led sáng
Đọc giá trị cảm biến ánh sáng
Các linh kiện cần thiết và sơ đồ đấu nối:
Tên linh kiện
Số lượng
Sơ đồ đấu nối
Arduino Uno
1

Cảm biến ánh sáng
1

Led
1

Điện trở
2
Bo cắm
1
Dây cắm
5
Nguồn
2 pin 3,7V
Giải quyết vấn đề bằng lập trình:
Code
int sensorPin = A0; int ledPin = 9;
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop() {
int sensorValue= analogRead(sensorPin); if(sensorValue < 300)
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
delay(300);

}
Chữ số trên đồng hồ điện tử (Led 7 thanh)
Mô hình thực tế: Led 7 thanh (7 đoạn) là thiết bị hiển thị điện tử để hiển thị số. Led 7 thanh được sử dụng rộng rãi trong đồng hồ số, đồng hồ đo điện tử, hiển thị số tại các cột đèn giao thông, máy tính,...
Mô hình tin học: Lập trình điều khiển led 7 thanh (7 đoạn) hiển thị các số từ 0 đến 9.
Bắt đầu
Cài đặt chức năng của các chân
Sơ đồ thuật toán:
Hiển thị số 9
Hiển thị số 8
Hiển thị số 7
Hiển thị số 6
Hiển thị số 5
Hiển thị số 4
Hiển thị số 3
Hiển thị số 2
Hiển thị số 1
Hiển thị số 0
Các linh kiện cần thiết và sơ đồ đấu nối:
Tên linh kiện
Số lượng
Sơ đồ đấu nối
Arduino Uno
1


Led 7 thanh
1
Điện trở
7
Bo cắm
1
Dây cắm
9
Nguồn
2 pin 3,7V
Giải quyết bằng lập trình:
Code
const int aPin = 2; const int bPin = 3; const int cPin = 4; const int dPin = 5; const int ePin = 6; const int fPin = 7; const int gPin = 8; void setup()
{
pinMode(aPin, OUTPUT); pinMode(bPin, OUTPUT); pinMode(cPin, OUTPUT); pinMode(dPin, OUTPUT); pinMode(ePin, OUTPUT); pinMode(fPin, OUTPUT); pinMode(gPin, OUTPUT);
}
void loop()
// Hiển thị số 4 void display4()
{
allOn(); digitalWrite(aPin, LOW); digitalWrite(dPin, LOW); digitalWrite(ePin, LOW);
}
// Hiển thị số 5 void display5()
{
allOn(); digitalWrite(bPin, LOW); digitalWrite(ePin, LOW);
}
// Hiển thị số 6 void display6()
{

{
display0(); delay(1000); display1(); delay(1000); display2(); delay(1000); display3(); delay(1000); display4(); delay(1000); display5(); delay(1000); display6(); delay(1000); display7(); delay(1000); display8(); delay(1000); display9(); delay(1000);
}
//Hiển thị số 0 void display0()
{
allOn(); digitalWrite(gPin, LOW);
}
// Hiển thị số 1 void display1()
{
allOff(); digitalWrite(bPin, HIGH); digitalWrite(cPin, HIGH);
}
// Hiển thị số 2 void display2()
{
allOn(); digitalWrite(fPin, LOW); digitalWrite(cPin, LOW);
}
// Hiển thị số 3 void display3()
{
allOn();
allOn(); digitalWrite(bPin, LOW);
}
// Hiển thị số 7 void display7()
{
allOff(); digitalWrite(aPin, HIGH); digitalWrite(bPin, HIGH); digitalWrite(cPin, HIGH);
}
// Hiển thị số 8 void display8()
{
allOn();
}
// Hiển thị số 9 void display9()
{
display8(); digitalWrite(ePin, LOW);
}
void allOn()
{
digitalWrite(aPin, HIGH); digitalWrite(bPin, HIGH); digitalWrite(cPin, HIGH); digitalWrite(dPin, HIGH); digitalWrite(ePin, HIGH); digitalWrite(fPin, HIGH); digitalWrite(gPin, HIGH);
}
void allOff()
{
digitalWrite(aPin, LOW); digitalWrite(bPin, LOW);

digitalWrite(ePin, LOW); digitalWrite(fPin, LOW);
}
digitalWrite(cPin, LOW); digitalWrite(dPin, LOW); digitalWrite(ePin, LOW); digitalWrite(fPin, LOW); digitalWrite(gPin, LOW);
}
Xe điều khiển từ xa
Mô hình thực tế: Điều khiển từ xa được ứng dụng rất nhiều trong thực tế: Các thiết bị dân dụng trong gia đình; trong các trò chơi điện tử; ô tô, máy bay điều khiển từ xa; trong quân đội; trong vũ trụ;
Mô hình Tin học: Lập trình điều khiển xe ô tô bằng Bluetooth.
Bắt đầu
Cài đặt chức năng các chân
Sơ đồ thuật toán:
Đ
Tiến
S
Đ
Lùi
S
Đ
Rẽ phải
S
Cài đặt động cơ trái dừng, động cơ phải quay tiến
Cài đặt động cơ phải dừng, động cơ trái quay tiến
Cài đặt động cơ trái, phải quay lùi
Cài đặt động cơ trái, phải quay tiến
Các linh kiện cần thiết và sơ đồ đấu nối:
Tên linh kiện
Số lượng
Sơ đồ đấu nối
Arduino Uno R3
1


L298N
1

Bluetooth-HC05 (HC06)
1
Motor
2
Bánh đa hướng
1
Khung xe
1
Dây cắm
20
Nguồn
4 pin 3,7V
Giải quyết vấn đề bằng lập trình:
Code
#include 
// định nghĩa chân 2 là chân truyền tín hiệu
int bluetoothTx = 2;
// định nghĩa chân 3 là chân nhận tín hiệu
int bluetoothRx = 3;
SoftwareSerial	bluetooth(bluetoothTx, bluet

File đính kèm:

  • docxsang_kien_kinh_nghiem_giup_hoc_sinh_tiep_can_cac_bai_toan_th.docx
  • pdfNguyễn Thị Hương Trà, Vương Văn Phong-THPT Tương Dương 1-Tin học.pdf