Tek Pin İle Çoklu Buton Kullanma Uygulaması

#define buton A0 #define birinciled 1 #define ikinciled 2 #define ucunculed 3 #define dordunculed 4 #define besinciled 5 void setup() { pinMode(buton, INPUT); pinMode(birinciled, OUTPUT); pinMode(ikinciled, OUTPUT); pinMode(ucunculed, OUTPUT); pinMode(dordunculed, OUTPUT); pinMode(besinciled, OUTPUT); } void loop() { if (analogRead(buton) >= 1020) { digitalWrite(birinciled, HIGH); digitalWrite(ikinciled, LOW); digitalWrite(ucunculed, LOW); digitalWrite(dordunculed, LOW); digitalWrite(besinciled, LOW); } else if (analogRead(buton) >= 920 && analogRead(buton) <= 950) { digitalWrite(birinciled, LOW); digitalWrite(ikinciled, HIGH); digitalWrite(ucunculed, LOW); digitalWrite(dordunculed, LOW); digitalWrite(besinciled, LOW); } else if (analogRead(buton) >= 840 && analogRead(buton) <= 860) { digitalWrite(birinciled, LOW); digitalWrite(ikinciled, LOW); digitalWrite(ucunculed, HIGH); digitalWrite(dordunculed, LOW); digitalWrite(besinciled, LOW); } else if (analogRead(buton) >= 780 && analogRead(buton) <= 800) { digitalWrite(birinciled, LOW); digitalWrite(ikinciled, LOW); digitalWrite(ucunculed, LOW); digitalWrite(dordunculed, HIGH); digitalWrite(besinciled, LOW); } else if (analogRead(buton) >= 720 && analogRead(buton) <= 740) { digitalWrite(birinciled, LOW); digitalWrite(ikinciled, LOW); digitalWrite(ucunculed, LOW); digitalWrite(dordunculed, LOW); digitalWrite(besinciled, HIGH); } else { digitalWrite(birinciled, LOW); digitalWrite(ikinciled, LOW); digitalWrite(ucunculed, LOW); digitalWrite(dordunculed, LOW); digitalWrite(besinciled, LOW); } delay(10); }
LED’in çıkış değerini, Butona basıldıkça çıkış değerinin tersi durumu olacak şekilde değiştir. Basit kullanım (On/Off)

int led = 12; int buton = 7; void setup() { pinMode(led, OUTPUT); pinMode(buton,INPUT); } void loop() { if (digitalRead(buton)) // butondan okunan değer "FALSE" gelirse { digitalWrite(led,(!digitalRead(led))); //ledin çıkış değerini, çıkış değerinin tersi olacak şekilde değiştir. False ise True /-/ true ise false yap delay(500); // butona basılmak için beklenen süre } }
Butona Basılan Süre kadar LED’i yakma
int led = 12; int buton = 7; long sure = 0; void setup() { pinMode(led, OUTPUT); pinMode(buton, INPUT); Serial.begin(9600); } void loop() { while (digitalRead(buton)) { sure = sure + 1; delay(1); } delay(200); if (sure) { Serial.print(sure/1000); Serial.println(" Saniye"); digitalWrite(12, HIGH); delay(sure); } digitalWrite(12, LOW); sure=0; }
Tek butonla RGB LED’in renklerini değiştirme

int R = 9; int G = 10; int B = 11; int buton = 7; int sayac = 0; void setup() { Serial.begin(9600); pinMode(R, OUTPUT); pinMode(G, OUTPUT); pinMode(B, OUTPUT); pinMode(buton, INPUT); } void loop() { if (digitalRead(buton)) { sayac = sayac + 1; delay(500); while (sayac) { Serial.println(sayac); if (sayac > 3) { sayac = 1; } break; } } if (sayac == 1) mavi(); else if (sayac == 2) kirmizi(); else if (sayac == 3) yesil(); } void mavi() { digitalWrite(R, LOW); digitalWrite(G, LOW); digitalWrite(B, HIGH); } void kirmizi() { digitalWrite(R, HIGH); digitalWrite(G, LOW); digitalWrite(B, LOW); } void yesil() { digitalWrite(R, LOW); digitalWrite(G, HIGH); digitalWrite(B, LOW); }
Bir tane LED’in birden fazla butonla kontrolü

int buton1 = 7; int buton2 = 8; int led = 12; int leddurum; void setup() { pinMode(buton1, INPUT); pinMode(buton2, INPUT); pinMode(led, OUTPUT); } void loop() { leddurum=digitalRead(led); if (digitalRead(buton1) ||digitalRead(buton2) ) { delay(500); if (leddurum==1) { digitalWrite(led,LOW); } else if (leddurum==0) { digitalWrite(led,HIGH); } } }
Veya aşağıdaki kodlarla da yapılabilir.
int buton1 = 2; int buton2 = 3; int led = 12; void setup() { pinMode(buton1, INPUT); pinMode(buton2, INPUT); pinMode(led, OUTPUT); } void loop() { while (digitalRead(buton1) ||digitalRead(buton2)) { digitalWrite(led, !digitalRead(led)); delay(500); } }