Arduino; 0-9 Buton Kullanarak Sayıcı Tasarımı
Sayıcılar günümüzde pek çok alanda kullanılmaktadır.Bugünkü yazımızda sayıcılar ile ilgi basit bir uygulama yapacağız.Genelde yazılarımda sayıcıların temel olarak nasıl yapıldığını anlattım.Projemiz 0-9 kadar sayan bir sayıcı devresi kuracağız.Fakat her butona bastığımızda sayı sayacak.Projemiz için kullanacağımız devre elemanlarını sayalım.
Devre elemanları
1-Arduino uno
2-Tekli segment
3-Atlama kabloları
4-Board
5-220 ohm direnç 2 adet
6-Buton
Devremizi çizmeden önce kullanacağımız segment uçlarını aşağıdaki şekilde verdim.
Devremizin şeması aşağıdaki gibidir.
- 1 nolu segment ucu arduino dijital 6 pinine;
- 2 nolu segment ucu arduino dijital 5 pinine;
- 3 nolu segment ucu arduino gnd pinine;
- 4 nolu segment ucu arduino dijital 4 pinine;
- 5 nolu segment ucu boş;
- 6 nolu segment ucu arduino dijital 9 pinine;
- 7 nolu segment ucu arduino dijital 8 pinine;
- 8 nolu segment ucu arduino gnd pinine;
- 9 nolu segment ucu arduino dijital 2 pinine;
- 9 nolu segment ucu arduino dijital 3 pinine bağlarız.
buton kısmı,
- Butonumuzun ucunu arduino dijital 10 pinine bağlarız.
const int a = 8; //For displaying segment "a"
const int b = 9; //For displaying segment "b"
const int c = 4; //For displaying segment "c"
const int d = 5; //For displaying segment "d"
const int e = 6; //For displaying segment "e"
const int f = 2; //For displaying segment "f"
const int g = 3; //For displaying segment "g"
bool bPress = false;
const int buttonPin = 10;
// Variables will change:
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
void setup() {
// put your setup code here, to run once:
pinMode(a, OUTPUT); //A
pinMode(b, OUTPUT); //B
pinMode(c, OUTPUT); //C
pinMode(d, OUTPUT); //D
pinMode(e, OUTPUT); //E
pinMode(f, OUTPUT); //F
pinMode(g, OUTPUT); //G
pinMode( buttonPin , INPUT_PULLUP );
Serial.begin(9600);
displayDigit(buttonPushCounter);
}
void loop() {
buttonState = digitalRead(buttonPin);
// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == LOW) {
// if the current state is HIGH then the button went from off to on:
bPress = true;
buttonPushCounter++;
if( buttonPushCounter > 9) buttonPushCounter =0 ;
Serial.println("on");
} else {
// if the current state is LOW then the button went from on to off:
Serial.println("off");
}
// Delay a little bit to avoid bouncing
delay(50);
}
// save the current state as the last state, for next time through the loop
lastButtonState = buttonState;
if( bPress ){
turnOff();
displayDigit(buttonPushCounter);
}
}
void displayDigit(int digit)
{
//Conditions for displaying segment a
if(digit!=1 && digit != 4)
digitalWrite(a,HIGH);
//Conditions for displaying segment b
if(digit != 5 && digit != 6)
digitalWrite(b,HIGH);
//Conditions for displaying segment c
if(digit !=2)
digitalWrite(c,HIGH);
//Conditions for displaying segment d
if(digit != 1 && digit !=4 && digit !=7)
digitalWrite(d,HIGH);
//Conditions for displaying segment e
if(digit == 2 || digit ==6 || digit == 8 || digit==0)
digitalWrite(e,HIGH);
//Conditions for displaying segment f
if(digit != 1 && digit !=2 && digit!=3 && digit !=7)
digitalWrite(f,HIGH);
if (digit!=0 && digit!=1 && digit !=7)
digitalWrite(g,HIGH);
}
void turnOff()
{
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
}
kodu buradan indirebilirsiniz
Hiç yorum yok: