arduino ldr ile otomatik aydınlatma

Mericzafer

Üye
Katılım
2 Haz 2021
Mesajlar
25
Puanları
1
Yaş
35
mrb arkadaşlar arduinoyu yeni öğreniyorum bir ışık devresi yaptım. aşagıdaki gibi söyle bir problem var hava durumu değiştikce aydınlatmalar yanıp sönüyor. bunun önüne gecmek için mesala 990 nı iki veya üç kez okudugunda aydınlatma yansın 1020 dede aynısı olsun iki veya üç kez değerinin üstünde görürse öyle kapatsın. devreye eklemeler yapıp atarmısınız bana çok teşekkürler.


void setup() {

pinMode(2, OUTPUT);
pinMode(4,OUTPUT);
pinMode(7,OUTPUT);
Serial.begin(9600);


}
void loop() {
int isik = analogRead(A0);
Serial.println(isik);
delay(2000);

if(isik > 1020)
{
digitalWrite(2,LOW );
}
if(isik < 990)
{
digitalWrite(2,HIGH );}

if(isik > 990){
digitalWrite(4, LOW);
}
if(isik < 930){
digitalWrite(4, HIGH);
}

if(isik > 800){
digitalWrite(7, LOW);
}
if(isik < 720){
digitalWrite(7, HIGH);
}




}
 
nasıl koymam gerekiyor değeri 2 vya 3 kez okudugunda yansa daha saglıklı değilmi acaba.
 
Tam olarak ne yapmak istiyorsunuz? LDR'nin direnç değerine göre mi ledler yanacak?
 
Ortalama almak daha iyi olmaz mı? Sn. 3 kez okuma yapın ortalamasını alın oradan mukayese edin.
 
Kod:
#define LED2 2
#define LED4 4
#define LED7 7

int led2_sure = millis();
int led4_sure = millis();
int led7_sure = millis();

void setup()
{
  pinMode(LED2, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED7, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int isik = analogRead(A0);
  Serial.println(isik);
  delay(2000); // 23 sn. de millis() le yapılabilir.

  if(isik > 1020 && millis() - led2_sure > 3000) // 3 saniye
  {
    digitalWrite(LED2, LOW);
  }
  if(isik < 990)
  {
    digitalWrite(LED2, HIGH);
    led2_sure = millis(); // led2 yandığında süreyi sıfırla.
  }

  if(isik > 990 && millis()- led4_sure > 3000) // 3 saniye)
  {
    digitalWrite(LED4, LOW);
  }
  if(isik < 930)
  {
    digitalWrite(LED4, HIGH);
    led4_sure = millis(); // led4 yandığında süreyi sıfırla.
  }

  if(isik > 800 && millis()- led7_sure > 3000) // 3 saniye
  {
    digitalWrite(LED7, LOW);
  }
  if(isik < 720)
  {
    digitalWrite(LED7, HIGH);
    led7_sure = millis(); // led7 yandığında süreyi sıfırla.
  }

}
Saniyeli gecikme. delay'daki 2 saniye bekliyor!
Sönme (LOW) kısmına ekledim.
 
Son düzenleme:
Tam olarak ne yapmak istiyorsunuz? LDR'nin direnç değerine göre mi ledler yanacak?
mrb. mesala akşamları hava çok acılıp kapanıyor. serial monitörde pinMode(2, OUTPUT) 990 altına düştümü yanıyor, 1020 üstüne cıkınca sönüyör. bir kere gördümü ardiuno işleme alıyor hemen. ben istiyorum ki. serial monitör 990 altını 3 kez görmeden pinmode2 hıgt yapmasın. hava değişimlerini en azından istenilen değerin altında olduğunu kendi içeisinde teyitlesin ve müdale etsin. anlatabildimmi acaba. yardım ederseniz sevinirim
 
Kod:
#define LED2 2
#define LED4 4
#define LED7 7

int led2_sure = millis();
int led4_sure = millis();
int led7_sure = millis();

void setup()
{
  pinMode(LED2, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED7, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int isik = analogRead(A0);
  Serial.println(isik);
  delay(2000); // 23 sn. de millis() le yapılabilir.

  if(isik > 1020 && millis() - led2_sure > 3000) // 3 saniye
  {
    digitalWrite(LED2, LOW);
  }
  if(isik < 990)
  {
    digitalWrite(LED2, HIGH);
    led2_sure = millis(); // led2 yandığında süreyi sıfırla.
  }

  if(isik > 990 && millis()- led4_sure > 3000) // 3 saniye)
  {
    digitalWrite(LED4, LOW);
  }
  if(isik < 930)
  {
    digitalWrite(LED4, HIGH);
    led4_sure = millis(); // led4 yandığında süreyi sıfırla.
  }

  if(isik > 800 && millis()- led7_sure > 3000) // 3 saniye
  {
    digitalWrite(LED7, LOW);
  }
  if(isik < 720)
  {
    digitalWrite(LED7, HIGH);
    led7_sure = millis(); // led7 yandığında süreyi sıfırla.
  }

}
Saniyeli gecikme. delay'daki 2 saniye bekliyor!
Sönme (LOW) kısmına ekledim.
mrb yardımlarınız için teşekkürler. ama benim yaptığım sistemle bu sistem aynı çalışıyor.
 

Forum istatistikleri

Konular
130,977
Mesajlar
944,370
Kullanıcılar
454,622
Son üye
Dagdanadam

Yeni konular

Çevrimiçi üyeler

Geri
Üst