Arduino Button
Arduino Button
1. Khảo sát button:
Proteus:
Arduino IDE:
const int button = 2;
void setup() {
// put your setup code here, to run once:
pinMode(button, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
int t = digitalRead(button);
Serial.println(t);
delay(200);
}
Trước khi nhấn nút thì dòng điện chạy từ nguồn đến chân 2, nhận giá trị mức 1. Sau khi nhấn nút thì dòng điện chạy đến Vcc (nối đất) nên nhận giá trị 0.
Serial.begin() thiết lập giao tiếp nối tiếp giữa bo Arduino và một thiết bị khác. Cách sử dụng phổ biến nhất của giao tiếp nối tiếp mà bạn sẽ thiết lập là giữa Arduino và máy tính của bạn thông qua cáp USB hay là cáp Universal Serial Bus.
Lý do phổ biến nhất để sử dụng serial.begin() là khi bạn muốn xuất một số thông tin từ Arduino ra màn hình máy tính.
9600 là tốc độ baud và sử dụng khung truyền mặc định 8-N-1 (8 bit dữ liệu, không sử dụng bit kiểm tra chẵn lẻ, 1 bit kết thúc).
2. Nhấn button để nháy led:
Khi nhấn button thì sẽ nháy led, không nhấn button nữa thì sẽ tắt led.
Arduino IDE:
const int button = 2;
const int LED = 13;
void setup() {
// put your setup code here, to run once:
pinMode(button, INPUT);
pinMode(LED, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
int t = digitalRead(button);
// nhan nut thi LED sang, tha ra thi LED tat
digitalWrite(LED, t ? 0 : 1);
// if(t == 0) digitalWrite(LED, 1);
// else digitalWrite(LED, 0);
}
3. Nhấn button để mở và tắt led:
Khi nhấn button thì sẽ mở led, nhấn button 1 lần nữa thì sẽ tắt led.
Arduino IDE:
const int button = 2;
const int LED = 13;
int LEDStatus = 0;
void setup() {
// put your setup code here, to run once:
pinMode(button, INPUT);
pinMode(LED, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
int t = digitalRead(button);
// thay đổi trạng thái đèn led khi nhấn nút
// đèn đang tắt thì nhấn nút đèn sáng
// đèn đang sáng, nhấn nút thì đèn tắt
if (t == LOW) LEDStatus = !LEDStatus;
digitalWrite(LED, LEDStatus);
}
3. Khử nhiễu cho button
Có 2 cách khử nhiễu:
a. Dùng phần mềm
b. Dùng tụ.
Arduino IDE dùng phần mềm khử nhiễu cho button:
const int button = 2;
const int LED = 13;
bool buttonState = 0;
bool lastButtonState = 1;
unsigned long Time = 0;
bool nutnhan = 0;
int kiemtranutnhan();
void setup() {
// put your setup code here, to run once:
pinMode(button, INPUT);
pinMode(LED, OUTPUT);
// Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LED, kiemtranutnhan());
// if(t == 0) led_status = !led_status;
// digitalWrite(LED, led_status);
// if (t == 0) digitalWrite(LED, 1);
// else digitalWrite(LED, 0);
// Serial.println(t);
// delay(200);
}
int kiemtranutnhan(){
int reading = digitalRead(button);
if(reading != lastButtonState) Time = millis();
if(millis() - Time > 0){
if(reading != buttonState){
buttonState = reading;
if(buttonState == LOW) nutnhan = !nutnhan;
}
}
lastButtonState = reading;
return nutnhan;
}