Button and 7seg with Arduino

3:32:00 AM
Giới thiệu Có lẽ chúng ta đã quá quen với các loại button, nút nhấn rồi. Tuy nhiên, có thể, chỉ có thể thôi nhé, bạn vẫn chưa biết hết về các loại nút nhấn phổ biến. Vì vậy, hôm nay, mình sẽ tổng hợp giúp bạn các loại button phổ biến và cách dùng của nó. Button là gì ? Button là nút bấm, bạn có thể tìm thấy nó ở mọi thứ trong cuộc sống, chẳng hạn như cái nút trong bàn phím của bạn.  

button


Các loại button Button có rất nhiều loại, và mỗi loại lại có ứng dụng riêng của nó. Vì vậy, chỉ cần vận dụng hợp lý và sáng tạo các loại button - nút bấm, bạn sẽ làm nên những dự án cực.

1. Button (thường) (6mm hoặc 12mm)
Đây là loại button rất phổ biến, cũng như đèn LED, loại button này cũng có các kính thước cạnh 6mm hoặc 12m. Loại 6mm hay được dùng trong các dự án nhỏ và loại còn lại dùng cho các dự án bự hơn và cần nút to để ngầu hơn. Mình thì cực thích loại 12mm vì nó to, dễ hàn và bấm sướng tay, không đau tay như loại 6mm. Và giá thành thì khá rẻ, loại 6mm có giá khoảng 1500 dồng và 2500 đồng cho loại 12mm.



Nút nhấn 6mm
Nút nhấn 12mm
Loại này tuy là 4 chân, nhưng thực chất cũng chỉ là 2 chân mà thôi, bạn xem hình dưới là rõ ngay.
button
Ngoài ra, vì có 4 chân nên nó khá vững chãi và rất khó hư! 
Ảnh mô phỏng proteus.
7seg and button with Arduino 
Code chương trình.
 byte numbers[10] = { 
                    B11111100, B01100000, B11011010, B11110010, B01100110, 
                    B10110110, B10111110, B11100000, B11111110, B11110110 
                    };
void setup() { 
    for(int i = 2; i <= 8; i++) {
        pinMode(i, OUTPUT); 
    }
    pinMode(9, INPUT);
}

int counter = 0;
bool go_by_switch = true;
int last_input_value = LOW;

void loop() {
    if(go_by_switch) {
        int switch_input_value = digitalRead(9);
        if(last_input_value == LOW && switch_input_value == HIGH) {
            delay(100); 
            counter = (counter + 1) % 10;
        }
        last_input_value = switch_input_value;
    } else {
        delay(100); 
        counter = (counter + 1) % 10;
    }
    writeNumber(counter);
}

void writeNumber(int number) {
    if(number < 0 || number > 9) {
        return;
    }
    byte mask = numbers[number];
    byte currentPinMask = B10000000;
    for(int i = 2; i <= 8; i++) {
        if(mask & currentPinMask) digitalWrite(i,HIGH); 
        else digitalWrite(i,LOW);
    currentPinMask = currentPinMask >> 1;
    }
}

Share this

Related Posts

Previous
Next Post »