Lưu đồ khối xử lý

Một phần của tài liệu HỆ THỐNG MÔ PHỎNG VÀ CHẨN ĐOÁN MẠCH CÒI XE THÔNG QUA ĐIỆN THOẠI THÔNG MINH (Trang 77 - 82)

Lập trình khối xử lý tín hiệu (board Arduino MEGA)

Lập trình hiển thị giá trị khởi tạo lên LCD

Sau khi các giá trị được đo kiểm thì LCD sẽ có nhiệm vụ đọc các giá trị lên màn hình. Do màn hình LCD 16x02 chỉ hiển thị được 2 dòng nên ở đây ưu tiên hiển thị mảng thời gian và hiển thị về giá trị điện áp

Code kết nối chân và hiển thị giá trị trên LCD:

#include <LiquidCrystal.h> // Thêm thư viện LiquidCrystal

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// Khởi tạo các chân LCD 12,11,5,4,3,2

Lập trình khai báo biến

Lập trình khai báo biến là khởi tạo các giá trị cần thiết cho chương trình. Giá trị a và olda là giá trị trạng thái tín hiệu mới và cũ của chân đỏ. Hai giá trị này sẽ được so sánh với nhau, nếu chúng giống nhau có nghĩa là thao tác đo kiểm của sinh viên khơng có gì thay đổi nên nó sẽ khơng xuất giá trị, ngược lại nếu chúng khác nhau sẽ xuất ra giá trị trạng thái cho que đo đỏ. Giá trị b và oldb cũng tương tự.

int a, b, olda, oldb, dienap, t;

Khai báo các mảng tương ứng với các trạng thái của mơ hình: trạng thái bình thường chưa có lỗi, trạng thái được tạo lỗi, trạng thái tháo các linh kiện trong mạch ra đo kiểm.

int BT[] = {0, 12, 12, 12, 12, 0, 0, 0, 12, 12, 12, 12}; // Chế độ hoạt động bình thường khi nhấn còi

int PAN1[] = {0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0}; // Chế độ đứt dây 7-8 int PAN2[] = {0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Đứt cầu chì 3-4 int PAN3[] = {0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0}; // Đứt rơ le 5-6

int PAN4[] = {0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0}; // Đứt dây 10-11 khi khơng nhấn cịi

int PAN41[] = {0, 12, 12, 12, 12, 0, 0, 0, 12, 12, 0, 0}; // Đứt dây 10-11 khi nhấn còi

int BTT[] = {0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0}; // Chế độ hoạt động khi không nhấn nút

Khởi tạo biến M, S để thiết lập thời gian làm bài. Thiết lập trong trường hợp này là 10 phút

int M = 10; // phút int S = 00; // giây

Khởi tạo time1 và time2 để tạo độ trễ cho 2 sự kiện liên tiếp. unsigned long time2 = 0;

unsigned long time1 = 0;

Khởi tạo biến giatri để xác định chế độ hoạt động của mạch còi. Nếu giatri thay đổi sẽ thay đổi chế độ hoạt động

byte giatri = 0; // Chế độ hoạt động bình thường  Lập trình chương trình thiết lập

Ở phần void setup() ta thiết lập các điểm quét ở chế độ Input_Pullup, khởi tạo LCD và khai báo các chân công tắc, nút nhấn

Code lập trình chương trình thiết lập: void setup() {

lcd.begin(16, 2); //Thông báo đây là LCD 1602 for (int i = 1; i < 13; i++)

{

pinMode(i + 41, INPUT_PULLUP); // Thiết lập chân ở chế độ Pullup }

Serial.begin(9600);

pinMode(22, INPUT); // Thiết lập chân công tắc mở acquy pinMode(23, INPUT); // Thiết lập chân cơng tắc mở cầu chì pinMode(24, INPUT); // Thiết lập chân công tắc mở rơle

digitalWrite( 10, HIGH); // Thiết lập chân 10 ở giá trị HIGH pinMode(8, INPUT); // Thiết lập chân cơng tắc cịi

pinMode(7, OUTPUT); // Thiết lập chân tín hiệu cịi pinMode(9, INPUT); // Thiết lập chân công tắc Start lcd.setCursor(1, 0); lcd.print ("Time: "); lcd.setCursor(7, 0); lcd.print("0"); lcd.setCursor(8, 0); lcd.print(M); lcd.setCursor(9, 0); lcd.print(":"); lcd.setCursor(10, 0); lcd.print("0"); lcd.setCursor(11, 0); lcd.print(S); lcd.setCursor(0, 1); lcd.print("Volt:"); }  Lập trình chương trình qt phím

- Q trình qt dùng để xác định 2 que đo đang ở vị trí nào trên mơ hình mạch cịi xe. Việc qt thực hiện lần lượt từ chân chân đỏ (tương ứng với D40) tới chân đen (tương ứng với D41).

+ Nếu chân đỏ đang ở điểm đo nào trên mơ hình thì giá trị a (giá trị khi chân đỏ được quét) bằng vị trí điểm đo. Trong mơ hình mạch cịi xe thì có 12 điểm tương ứng với 12 vị trí đo cần xác định. Nếu chân đỏ không đo điểm nào trên mơ hình thì giá trị a bằng 0.

+ Chân đen tương tự chân đỏ nhưng giá trị chân đen sẽ là giá trị b. - Code lập trình chế độ chương trình qt phím:

void quetphim() {

pinMode(40, OUTPUT); // Chế độ Output của chân đỏ pinMode(41, INPUT); // Chế độ Input của chân đen for (int i = 1; i < 13; i++) { // 12 điểm đo if (digitalRead(i + 41) == 1) { a = 0; } if (digitalRead(i + 41) == 0) { a = i ; // Chân đỏ đang ở vị trí i break; } }

pinMode(40, INPUT); // Chế độ Input của chân đỏ pinMode(41, OUTPUT); // Chế độ Output của chân đen for (int k = 1; k < 13; k++) { if (digitalRead(k + 41) == 1) { b = 0; } if (digitalRead(k + 41) == 0) {

b = k; // Chân đen đang ở vị trí i

break;}}

Lập trình chương trình chế độ cịi

Khi 1 hệ thống cịi xe hoạt động bình thường thì phải đảm bảo còi xe phải kêu khi nhấn nút còi. Việc này được thực hiện bằng cách đọc giá trị của chân nút nhấn (chân D8). Nếu chân tín hiệu đang ở chế độ HIGH tương ứng với việc đang thực hiện nhấn cịi, lúc đó cịi sẽ kêu. Nếu chân tín hiệu đang ở chế độ LOW thì cịi sẽ khơng kêu.

Một phần của tài liệu HỆ THỐNG MÔ PHỎNG VÀ CHẨN ĐOÁN MẠCH CÒI XE THÔNG QUA ĐIỆN THOẠI THÔNG MINH (Trang 77 - 82)

Tải bản đầy đủ (DOCX)

(97 trang)
w