kızılötesi (infrared) kumanda ile beşik sallama

arkadaşlar öncelikle herkeze selamlar, aranıza yeni katıldım umarım birlikte güzel paylaşımlarda bulunuruz. benim yapmak istediğim proje bebeğim için uzaktan kumada ile kontrol edilen bir sallanan beşik yapmak. 1 adet servo motor ve infrared alıcım var. çalışması şöyle; kumadadan bir bir tuşa bastığımda beşik sürekli for döngüsünde belirtilen şekilde durmadan dönsün , diğer bir tuşa bastığımda da beşik dursun istiyorum. alttaki kodlarla bunu sağladım , ancak arada bu iki tuş haricinde bir kod gelince de beşik duruyor. bu koların dışında bir kod gelirse döngüyü hiç etkilememesini nasıl sağlarım ? #include IRremote.h> #include Servo.h> Servo myservo; int pos = 0; int a = 0; int INFRARED_PIN = 2; IRrecv irrecv(INFRARED_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); myservo.attach(8); myservo.write(0); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value); irrecv.resume(); } if(2064==results.value) { for (pos = 0; pos <= 180; pos += 1) { myservo.write(pos); delay(15); } for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } else if(2177==results.value) { myservo.write(0); results.value=0; }

Yapacağınız if else komutlarını switch case ile yapsanız hem daha kolay olur hemde sorununuzu çözebilirsiniz.

if(results.value ==1) { } elseif(results.value ==0) { } else { hiçbişey yapma } mantık bu

musaunal ilginiz için teşekkürler. void loop() { if (irrecv.decode(&results)) { Serial.println(results.value); irrecv.resume(); } switch(results.value) { case"2062": for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos); delay(15); } for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } case"2177": { myservo.write(0); results.value=0; } şeklinde case li yapmayı denedi ancak "case if komutu içerisinde değil gibi ingilizce bir hata verdi. bir yanlış varmı?

kurdmem ilginiz için teşekkürler. alttaki gibi yaptım. satırların sonuna else { } şeklinde bıraktım ancak hala if ve else if dışındaki bir kod geldiğinde motor duruyor. else “hiçbirşey yapma” nasıl sağlayabilirim.

int degisken=0; void loop() { if (irrecv.decode(&results)) { degisken=results.value; irrecv.resume(); } if(degisken ==1) { makina saga sola dondur ikisini birlikte yap } if(degisken ==0) { makina dursun. } //böyle deneyin calisacaktir.

yardımlarınız için teşekkürler. çok güzel oldu herbiriniz farklı fikirler verdiniz.

Switch case konusunda cevap vermeyi unutmuşum. kumandadan aldığınız kodun başına 0x yazarak yapın. void loop() { if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); } } void translateIR() { switch(results.value) { case 0xFF42BD: //YUKARI if (before==0){ digitalWrite(led,HIGH); Serial.println(“LED ACIK”); lcd.write(“LED ACIK”); before=1; } else{ lcd.clear(); Serial.println(“LED KAPALI”); lcd.write(“LED KAPALI”); delay(500); lcd.clear(); digitalWrite(led,LOW); before=0; } break; case 0xFFD22D: digitalWrite(led,LOW); digitalWrite(sari,LOW); digitalWrite(buzzer,LOW); Serial.println(“KAPALI”); lcd.clear(); break; default: } delay(500); }

yaptığın uygulamayının resim yada videosunu paylaşabilir misin.