int buton3Pin=5;
int buton2Pin=4;
int butonPin=2;
int ledPin=3;
int led2Pin=6;
int sayac=0;
int butondurum=0;
void setup () {
pinMode (ledPin,OUTPUT);
pinMode (butonPin,INPUT);
pinMode (buton2Pin,INPUT);
pinMode (buton3Pin,INPUT);
}
void loop1(void){
sayac==0;
butondurum=digitalRead(butonPin);
if(butondurum==HIGH){
sayac=sayac+1;
while (digitalRead(butonPin));
if(sayac==3){
digitalWrite(ledPin,HIGH);
}
}
}
void loop2(void){
while(digitalRead(buton2Pin));
if(butondurum==HIGH)
digitalWrite(ledPin,LOW);
sayac=0;
}
void loop3(void){
butondurum=digitalRead(buton3Pin);
if(butondurum==HIGH){
digitalWrite(led2Pin,HIGH);
}
}
void loop(void) {
loop1();
loop2(); // loop komutlarını tetikleyecek
loop3();
}
debounce_esik = 10;
void loop(void)
{
delay(1);
od = sd;
sd = digitalRead(butonPin);
if (sd == od)
{
if (aos == debounce_esik)
{
// 10 defa peş peşe aynı değer gördük, bu buton hakkaten basıldı.
// yeni durumu td ye kaydet ve tekrar temiz buton aramaya başla
aos = 0;
td = sd;
}
else
{
// daha 10 defa aynı değeri göremedik, saymaya devam et
++aos;
}
}
else
{
// Şimdiki değer öncekinden farklı, sayacı sıfırla ve tekrar 10 tane eşit değer görmeyi bekle
aos = 0;
}
}
const int led1 = 3;
const int led2 = 4;
const int buton1 = 5;
const int buton2 = 6;
const int buton3 = 7;
int deger=0;
void setup() {
Serial.begin(9600);//seri port ekran için
pinMode(buton1, INPUT);
pinMode(buton2, INPUT);
pinMode(buton3, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
if(digitalRead(buton1) == HIGH )
{
digitalWrite(led1, HIGH);
}
if(digitalRead(buton2) == HIGH )
{
delay(10);
deger++; //buton a her basışta dereğeri artırmak için
Serial.println(deger); //seri port ekran için
delay(1000);//seri port ekran için
}
if ( deger==3 )// değer 3 e eşit olunca 2.led i yakıyor
{
digitalWrite(led2, HIGH);
}
if(digitalRead(buton3) == HIGH )
{
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
deger=0;
}
}
@taydin:Türk usülü çözmeye çalışma kardeşim işin doğrusu debounce yapmak. O tip çözümler bir yere kadar sonuç verir. Bir devrede işe yarar diğerinde yaramaz. Önemli olan hocaya kör topal çalışan birşey göstermek değil işi öğrenmek.
Ben, daha pratik bulduğum için, yukarda verdiğiniz kod parçasını analiz ettim ve geliştirip tamamladım. Çok güzel çalışıyor. Net ve temiz.Timer içerisinde bir değişkeniniz olsun.
Harici veya static tanımlansın.
Butona basılınca saymaya başlasın.
Bu belli bir değere (sizin debounce
olarak tanımladığınız zaman kadar)
gelince "buton hala basılı mı?" kontrol
edilsin ve bu değişken sıfırlansın.