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.
Ö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);
}