Nasıl yaniÖnceki komutun tersini yaparsan iptal etmiş olursun
if (digitalRead(Buton) == 1)
digitalWrite(13, !digitalRead(13)); // mevcut durumun tersini yap, HIGH ise LOW, LOW ise HIGH yap
void setup()
{
/* .. */
}
bool dugmeyeBasildi()
{
/* .. */
}
bool durumaGoreBekle(unsigned long sure)
{
unsigned long bitis = millis() + sure;
while (millis() < bitis)
{
if (dugmeyeBasildi())
{
return true;
}
delay(10); /* duruma göre değişebilir */
}
return false;
}
void sagaHareketEt()
{
Serial.println("------------");
Serial.println("Sağa gidiyorum");
Serial.println("------------");
for (int i = 0; i < 3; ++i)
{
digitalWrite(SAG_ISIGI, HIGH);
durumaGoreBekle(1000);
digitalWrite(SAG_ISIGI, LOW);
durumaGoreBekle(1000);
}
}
void solaHareketEt()
{
Serial.println("------------");
Serial.println("Sola gidiyorum");
Serial.println("------------");
for (int i = 0; i < 3; ++i)
{
digitalWrite(SOL_ISIGI, HIGH);
durumaGoreBekle(1000);
digitalWrite(SOL_ISIGI, LOW);
durumaGoreBekle(1000);
}
}
void loop()
{
/* .. */
}
Şu şekilde, bir buton 2-3 ledi aynı anda yakıyor. Bir butona bastığımda 2-3 led yanarken, diğer butona bastığımda yanan ledlerin kapanıp son bastığım butonun ledlerinin yanmasını istiyorum.Buton1 bastığınız zaman 1 numaralı led high yaparken diğerlerini low yapın. Buton 2 ye bastığınız zaman 2 numaralı ledi high yapın diğerlerini low. Bütün konutları bu şekilde yazarsanız hanği butona basarsanız onun ledi yanar diğerleri söner.
String durum = "boşta";
void setup()
{
/* .. */
}
bool dugmeyeBasildi()
{
if (digitalRead(ilkDugme) == LOW)
{
durum = "sagaGit";
return true;
}
if (digitalRead(ikinciDugme) == LOW)
{
durum = "solaGit";
return true;
}
/* .. */
return false;
}
bool durumaGoreBekle(unsigned long sure)
{
/* .. */
}
void sagaHareketEt()
{
/* .. */
}
void solaHareketEt()
{
/* .. */
}
void komutlariIsle(String komut)
{
switch(komut)
{
case "sagaGit":
sagaHareketEt();
break;
case "solaGit":
solaHareketEt();
break;
/* .. */
default:
break;
}
}
void loop()
{
komutlarıIsle(durum);
/* .. */
}
Hocam böyle yazmışsınız teşekkür ederimde ben bunu kendi koduma geçiremiyorum. Rica etsem Arduino dosyamı atsam değiştirebilirmisiniz?Burada tek yapmanız gereken yukarıdaki örnekte dugmeyeBasildi() işlevinin içini doldurmak.
Eğer düğmeye ya da düğmelerden herhangi birine basıldı ise bu işlev true döndürecek.
C++:String durum = "boşta"; void setup() { /* .. */ } bool dugmeyeBasildi() { if (digitalRead(ilkDugme) == LOW) { durum = "sagaGit"; return true; } if (digitalRead(ikinciDugme) == LOW) { durum = "solaGit"; return true; } /* .. */ return false; } bool durumaGoreBekle(unsigned long sure) { /* .. */ } void sagaHareketEt() { /* .. */ } void solaHareketEt() { /* .. */ } void komutlariIsle(String komut) { switch(komut) { case "sagaGit": sagaHareketEt(); break; case "solaGit": solaHareketEt(); break; /* .. */ default: break; } } void loop() { komutlarıIsle(durum); /* .. */ }