5.00 / 1 oy

Arduino ile ıslaklık derecesine bağlı olarak farklı sayıda led yakmak

Arduino'da sıvı sensörü ile led yakma uygulamalarını birleştirip sıvı temas ettiğinde yanan led uygulaması geliştirmiştik. Elimizde sıvı miktarına göre az ya da çok sıvı teması olduğunu gösterebilen bir sıvı sensörü olduğuna göre output olarak ne kadar sıve teması olduğunu da farklı derecelerde gösterebiliriz. Bunun için breadboard'a 3 adet led bağlayarak ne kadar sıvı teması gerçekleştiğini yanan led sayısından görebileceğiz.

arduino water sensor 3 leds

Örneğin yukarıdaki denemede 2 led yakacak kadar sıvı teması gerçekleşmiş.

Eğer amacımız en ufak sıvı temasında tüm ledleri yakmak olsaydı aşağıdaki kodları kullanabilirdik.

#define sensor A0
#define led1 2
#define led2 3
#define led3 4
int data;

void setup() {
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  
  Serial.begin(9600);
}
void loop() {
  data = analogRead(sensor);

  if (data > 0)
    {
      digitalWrite(led1,HIGH);
      digitalWrite(led2,HIGH);
      digitalWrite(led3,HIGH);
    }
  else
    {
      digitalWrite(led1,LOW);
      digitalWrite(led2,LOW);
      digitalWrite(led3,LOW);
    }
  
  //Serial.print(data);  
  //Serial.print("\n");
  delay(1000);
}

3 led için şu eşik değerlerini belirleyerek aşağıdaki kodları yazdım, eğer eşik değerlerini değiştirmek isterseniz if içerisindeki değerleri güncellemeniz yeterlidir.

Sıvı teması yoksa: hiçbir led yanmasın

sıvı teması var ve 500'den küçükse: 1 led yansın

sıvı teması var ve 1000'den küçükse: 2 led yansın

sıvı teması var ve 1000'den büyükse: 3 led yansın

 

Proje Kodları

#define sensor A0
#define led1 2
#define led2 3
#define led3 4
int data;

void setup() {
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  
  Serial.begin(9600);
}
void loop() {
  data = analogRead(sensor);

  if (data == 0)
    {
      digitalWrite(led1,LOW);
      digitalWrite(led2,LOW);
      digitalWrite(led3,LOW);
    }
  else if (data < 500)
    {
      digitalWrite(led1,HIGH);
      digitalWrite(led2,LOW);
      digitalWrite(led3,LOW);
    }
  else if (data < 1000)
    {
      digitalWrite(led1,HIGH);
      digitalWrite(led2,HIGH);
      digitalWrite(led3,LOW);
    }
  else
    {
      digitalWrite(led1,HIGH);
      digitalWrite(led2,HIGH);
      digitalWrite(led3,HIGH);
    }
  
  Serial.print(data);  
  Serial.print("\n");
  delay(1000);
}

 

mr. faruk

03.06.2020 16:20

Bu soru henüz yanıtlanmamış.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Arduino ile ıslaklık derecesine bağlı olarak farklı sayıda led yakmak

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.