arkadaslar seri porttan c# ile haberleşip 3 sn. ara ile data çekmekteyim. aynı zamanda led yak ve söndür butonları ile ledi kontrol etmekteyim. sıkıntım analog datayı okuyup 3sn delay veriyorum. analog data gelir gelmez led yak butonuna basınca 3 sn sonra yanıyor. delay kullanmadan bekleme yapmak mumkunmu bu sorun sureklı karsıma cıkıyor. yani delay olan yerler sayacak ve aynı zamanda program işleyişine devam edecek. led yaka basınca 3sn delayı beklemeden hemen yanacak. kodlarım; void setup() { // put your setup code here, to run once: pinMode(13, OUTPUT); Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: if (Serial.available()) { int x = Serial.read(); if(x == ‘A’) { digitalWrite(13,HIGH); } else if(x == ‘B’) { digitalWrite(13,LOW); } } int sensorValue = analogRead(A0); // print out the value you r Serial.write(sensorValue); delay(3000); }
void setup() { // put your setup code here, to run once: pinMode(13, OUTPUT); Serial.begin(9600); int zamansay=0; } void loop() { // put your main code here, to run repeatedly: if (Serial.available()) { int x = Serial.read(); if(x == ‘A’) { digitalWrite(13,HIGH); } else if(x == ‘B’) { digitalWrite(13,LOW); } } if (zamansay>3000) { int sensorValue = analogRead(A0); // print out the value you r Serial.write(sensorValue); zamansay=0; } delay(1); zamansay=zamansay+1; }
kodlar için tşkler okoman. kodlar ilk başta çalışmadı. 3000 değerini int olarak küçük bir değer gibi görüyor. int zamansay=0; ın ben ön tarafına unsigned long ekleyerek çözdüm problemi. iyi forumlar.
şimdi küçük bi sorunum daha var aşağıdaki kodlarda şunu yapmak istedim. ana kapidan gelen sinyal var ve zaman 5snyeden küçükse alarm çıkışı aktif olsun. (LOW ile aktif oluyor). ve alarm zamani 1 artarak devam etsin. ne zaman, zaman 5snyeyi geçerse çıkış dursun ve zaman 0 olsun. ama zaman 5snyeyi geçmesine rağmen çıkış deaktif olmuyor. yardımcı olacaklar için şimdiden teşekkürler. if (anakapi_durum == HIGH && alarm_zamani < 5000) { digitalWrite(alarm, LOW); alarm_zamani=alarm_zamani+1; } else { delay(1); alarm_zamani=0; digitalWrite(alarm, HIGH); }
& operatörü yerine ayrı ayrı if koşulları veripte denedin mi?