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.