B1 – Sử dụng cổng vào/ra (Arduino Input/Output Basics)

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);       
}

Leave a Reply

Your email address will not be published. Required fields are marked *