Trần Công Thịnh gửi vào
- 11894 lượt xem
Hôm trước có một bạn Comment hỏi hướng dẫn để sài trong bài share của mình nên mình mạn phép viết thêm 1 bài đơn giản để giúp các bạn hiểu rõ hơn cách này của mình :)
Ở đây đơn giản là mình sử dụng 3 button tương ứng với 3 tốc độ của động cơ. khi nhấn button bất kỳ, hàm ngắt được gọi lên rồi sau đó kiểm tra nút nào được nhấn và sẽ băm xung PWM điều khiển tốc độ động cơ tương ứng.



I. Ý nghĩa
Button 1 tốc độ là a, button 2 tốc độ là b, button 3 tốc độ là c.
Ngắt button có tác dụng rất nhiều khi các bạn làm việc với nhiều led 7seg hay led ma trận vì nó dùng ngắt nên nhạy khi nhấn vào, chống dội tốt và không làm mờ led 7seg và led ma trận.
Hôm sau mình sẽ làm 1 clip so sánh cho các bạn thấy sức mạnh của ngắt button với button có dội bằng code nhé :)
II. SƠ ĐỒ NỐI CHÂN
III. Code
int interruptPin = 2; //xem thêm tại http://arduino.vn/reference/attachinterrupt //Trên uno bạn chỉ có thể dùng chan số 2 và số 3 nhé :) #define PWM 3 void setup() { pinMode(8, INPUT); pinMode(9, INPUT); pinMode(10, INPUT); pinMode(PWM, OUTPUT); pinMode(interruptPin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING); } //hàm ngắt void blink() { delay(30); //chống hiện tượng dội cho tất cả nút đang nhấn if( !digitalRead(8)) { analogWrite(PWM, 50); } //đọc giá trị từng chân xem chân nào đang nhấn. if( !digitalRead(9)) { analogWrite(PWM, 100); } if( !digitalRead(10)) { analogWrite(PWM, 150); } } void loop() {}