Lập trình chương trình ở các chế độ hoạt động
Trong hệ thống mơ phỏng mạch cịi xe có tất cả là 5 chế độ hoạt động: Bình thường, Pan 1, Pan 2, Pan 3, Pan4.
Ở chế độ hoạt động bình thường, giá trị điện áp ở mỗi vị trí được tạo ra từ 2 mảng một chiều từ đó xác định giá trị điện áp của mỗi vị trí
+ Khi nhấn còi: int BT[] = { 0, 12, 12, 12, 12, 0, 0, 0, 12, 12, 12, 12}; + Khi không nhấn còi int int BTT[] = { 0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0};
Khi vị trí chân đo hiện tại khác vị trí trước đó (a != olda, b != oldb) thì vị trí các chân đo và điện áp sẽ được gửi đi thông qua cổng Serial
Ngồi ra, ở mỗi chế độ có các cơng tắc tháo/lắp. Việc đóng/mở cơng tắc được xác định bằng cách đọc giá trị từ các chân tín hiệu (chân D22, D23, D24). Nếu nếu chân tín hiệu đang ở chế độ LOW thì cơng tắc được bật. Các lệnh trong cơng tắc được thực hiện.
Ở các chế độ còn lại, cách thức hoạt động cũng tương tự với chế độ hoạt động bình thường, chỉ thay đổi các giá trị điện áp.
Code lập trình chế độ hoạt động bình thường: void Binhthuong()
{
if (digitalRead(22) == 0) BATT(); // Công tắc acquy được bật if (digitalRead(23) == 0) FUSE();// Cơng tắc cầu chì được bật if (digitalRead(24) ==0) RELAY(); // Công tắc rơ le được bật
if ((digitalRead(22) == 1)&& (digitalRead(23) == 1) && (digitalRead(24) == 1) && (digitalRead(8)==1)) // Khi còi được nhấn
{
digitalWrite(7,1);
HORNBT(); // Còi kêu khi đang ở chế độ bình thường
}
else digitalWrite(7,0);
if (( a != olda) or ( b != oldb)) {
Serial.print(",");
Serial.print(a); // Xuất vị trí chân đỏ ra Serial Serial.print(",");
Serial.print(b); // Xuất vị trí chân đen ra Serial Serial.print(",");
olda = a; oldb = b;
if ((a != 0) && (b != 0)){
dienap = (BTT[a - 1] - BTT[b - 1]);
Serial.print(dienap); // Xuất giá trị điện áp ra Serial
} else { dienap=0; Serial.print(dienap); } Serial.print(","); Serial.print("*"); } Lập trình chương trình ở chế độ tháo lắp
Ở chế độ tháo/lắp có các cơng tắc: tháo/lắp acquy, tháo/lắp cầu chì, tháo lắp rơle. Cách thức hoạt động cũng tương tự như các chế độ hoạt động nêu ở trên.
Code lập trình chế độ tháo/lắp cầu chì: void FUSE(){
if (( a != olda) or ( b != oldb)) { VITRI();
Serial.print(a); // Xuất giá trị chân đỏ ra Serial Serial.print(",");
Serial.print(b); // Xuất giá trị chân đen ra Serial Serial.print(",");
olda = a; oldb = b;
if ((a != 0) && (b != 0)){
dienap = (PAN2[a - 1] - PAN2[b - 1]);
Serial.print(dienap); // Xuất giá trị điện áp ra Serial
} else { dienap=0; Serial.print(dienap); } Serial.print(","); Serial.print("*"); }} Lập trình chương trình chính
Các chương trình con ở trên được tập hợp lại thành 1 chương trình chính. Khi sinh viên nhấn bắt đầu khởi tạo chương trình. Arduino sẽ nhận tín hiệu gửi từ điện thoại các số 0, 1, 2, 3, 4 từ đó sẽ khởi tạo các chương trình con tương ứng Binhthuong(), PanLoi1(), PanLoi2(), PanLoi3(), PanLoi4(). Các giá trị điện áp và các chân sinh viên tiến hành đo sẽ được hiển thị lên LCD. Đồng thời khi đó thời gian đếm ngược bắt đầu đếm ngược và hiển thị trên LCD cho sinh viên canh giờ.
void loop() {
START(); // Chương trình Start
if ((unsigned long) (millis() - time1) > 200 ) { quetphim(); if ( Serial.available() > 0 ) { giatri = Serial.read() - 48; Serial.println(giatri); }
if ( giatri == 0) Binhthuong(); // Chế độ bình thường if ( giatri == 1) PanLoi1(); // Chế độ lỗi 1
if ( giatri == 3) PanLoi3(); // Chế độ lỗi 2 if ( giatri == 2) PanLoi2(); // Chế độ lỗi 3 if ( giatri == 4) PanLoi4(); // Chế độ lỗi 4
if (dienap == 12) {
lcd.setCursor(5, 1); // Thiết lập vị trí hiển thị trên LCD
lcd.print(dienap); } else if (dienap == 0) { lcd.setCursor(6, 1); lcd.print(dienap); lcd.setCursor(5, 1); lcd.print(" "); } lcd.setCursor(7, 1); lcd.print("V"); time1 = millis();
dongho();
}
Reset();}} // Chương trình Reset
6.5 Hướng dẫn sử dụng
Đối với giảng viên: giảng viên cài đặt và mở ứng dụng trên điện thoại của
mình. Giảng viên cần kết nối Bluetooth để có thể giao tiếp với mơ hình. Cần nhập mã số sinh viên của sinh viên làm bài đồng thời đó cũng là tên file lưu trên điện thoại khi giảng viên muốn xem lại.