Bước đầu tiên trong quá trình làm quen với Arduino là sử dụng các chân điều khiển tín hiệu vào/ra thông dụng. Trong bài này ta sẽ đọc trạng thái tại một chân lối vào và gửi tín hiệu về máy tính trên bo UNO.
- Gắn dây theo sơ đồ:
Linh kiện: 01 công tắc + 01 điện trở giá trị 1KOhm (hoặc hơn)
- Chú ý: Bên dưới công tắc có 4 chân tạo thành 2 cặp chân. Đường gạch kẻ dọc bên dưới công tắc đánh dấu 2 phía của công tắc, khi nhấn công tắc thì chân công tắc ở 2 phía được nối với nhau.
- Để biết giá trị điện trở: sử dụng đồng hồ đo hoặc đọc giá trị theo mã màu.
Trạng thái ban đầu, công tắc chưa nhấn thì chân số 2 trên bo nối qua điện trở đi xuống đất. Trạng thái này thường được quy định là 0, mức thấp. Khi nhấn công tắc, chân số 2 được nối với mức điện áp 5V. Trạng thái này thường được quy định là 1, mức cao.
Phân tích chương trình
- Đầu tiên là cài đặt chân lối vào, trường hợp này là chân 2:
pinMode(2,INPUT);
Như trong bài trước, để tác động lên LED ta cài đặt chân gắn LED là lối ra. Vì mạch UNO có gắn sẵn LED ở chân 13:
pinMode(13, OUTPUT);
- Gọi hàm truyền thông, tín hiệu truyền qua cáp USB về máy tính. Tốc độ thông dụng là 9600:
Serial.begin(9600);
- Đặt biến để nhận trạng thái của chân (2) lối vào. Biến int là biến số nguyên
int sensorValue = digitalRead(2);
- Truyền trạng thái về máy tính:
Serial.println(sensorValue);
- Mở cửa sổ theo dõi trạng thái tín hiệu truyền về:
- Nếu chương trình báo lỗi cổng COM, vào Device Manager kiểm tra lại cổng. Ví dụ COM1 bị đổi sang COM4.
- Khi đó vào Tools –> chọn lại Port
- Thử nghiệm bật tắt LED trên bo bằng việc kết hợp sử dụng chân lối ra như bài đầu tiên.
/* DigitalReadSerial Đọc trạng thái chân 2, hiện kết quả trên máy tính This example code is in the public domain. */ // chân 2 nối đến công tắc. Đặt tên biến: int pushButton = 2; // các hàm này chỉ chạy 1 lần sau khi cấp điện: void setup() { // khởi tạo tốc độ truyền 9600 bits per second: Serial.begin(9600); // gán chân 2 là lối vào: pinMode(pushButton, INPUT); } // lặp lại liên tục: void loop() { // đọc giá trị chân: int buttonState = digitalRead(pushButton); // hiện trạng thái: Serial.println(buttonState); // chờ 1ms để hạn chế lỗi delay(1); }