Bildirim
led kontrolü
Daha Fazla
Bu Konudaki Kullanıcılar:
Daha Az
2 Misafir - 2 Masaüstü
Giriş
Mesaj
-
-
sorun 1dk bekleme kısmında. Bunu yanlış anladığınız için hatayı göremiyorsunuz. delay(60000) kısmında arduino, 1dk bekliyor. yani 2. butondan gelen veriyi alamıyor çünkü arduino sürenin dolmasını bekliyor. bu bekleme işimi while döngüsü ile yapmanız lazım. mesela aklıma gelen bir yol: 1. buton aktif olduğu andaki zamanı kaydedin ve zamanı kaydettikten sonra bir while döngüsü oluşturun. Her bir döngüde 2. butondaki veriyi kontrol edin ve döngünün en sonundaki zamanı da kaydedin. bu iki zamanı kıyaslayarak, oluşturduğunuz döngüyü 1 dk ile sınırlayabilirsiniz. Yanış hatırlamıyorsam micros() gibi bir fonksiyon var zamanı veren. yine de bir bakın tekrardan. -
Aynen arkadaşın dediği gibi baş belası delay komutundan oluyor.
Duraklama yapmak için millis komutunu araştırın.
< Bu mesaj bu kişi tarafından değiştirildi symbolcu -- 4 Şubat 2019; 11:43:41 >
< Bu ileti tablet sürüm kullanılarak atıldı > -
#kaskas123 ve #symbolcu ilginizden dolayı tesekkur ederim.
uzun zamandır yazamadım kusura bakmayın. farklı bir yol izleyerek bu sorunu hallettim kodu paylaşıyorum.
yalnız bir ihtiyac daha dogdu bu devrede 1 adet ledimizi herseyden bağımsız bir sekilde 5 yada 10 sn yanıp sönmesi gerekiyor.bu konuda bir tavsiye verebilirmisiniz.
#define BUTON_TIMER 2
#define BUTON_LED 3
#define LED1 9
#define LED2 10
#define LED3 11
#define LED4 12
#define LED5 13
long sayac=0;
int READ_TIMER=0;
int READ_LED=0;
int control1=0;
int control2=0;
int LED_OUTPUT=0;
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(BUTON_TIMER, INPUT);
pinMode(BUTON_LED, INPUT);
Serial.begin(9600);
}
void loop() {
LED_OUTPUT=0;
digitalWrite(LED2,LED_OUTPUT);
READ_TIMER=0;
READ_TIMER = digitalRead(BUTON_TIMER);
while(READ_TIMER == 1){
digitalWrite(LED1,1);
sayac++;
delay(10);
READ_LED=digitalRead(BUTON_LED);
if(READ_LED==1){
control1=1;
sayac++;
delay(10);
}
if(control1==1){
READ_LED = digitalRead(BUTON_LED);
if(READ_LED == 0){
sayac++;
delay(10);
control2 = 1;
}
}
if (control1 == 1 && control2==1){
LED_OUTPUT=!LED_OUTPUT;
digitalWrite(LED2,LED_OUTPUT);
control1=0;
control2=0;
}
if(sayac>6000){
digitalWrite(LED1, LOW);
sayac=0;
break;
}
}
}
-
Dediğim aynen geçerli.Millis komutu ile her şeyden bağımsız led yakıp söndürebilirsin.
Tabii komutu iyi anlayıp fonksiyon kurman gerek.
< Bu ileti mini sürüm kullanılarak atıldı >
Sayfa:
1
Ip işlemleri
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X