Toprak Nem Sensörü ve Oled ekran uygulaması
TOPRAK NEM SENSÖRÜ VE OLED UYGULAMASI
Günümüzde her evde çeşitli bitki beslenmektedir.İşte bu bitkilerin su ihtiyaçları bulunmaktadır.İlk uygulamamız bu bitkilerin su ihtiyacını sensör ve ekran kullanarak onların susuz bırakmamak için yapacağız.Daha sonraki uygulamada bu projemizin üzerine ses ve su takviyesi bulunması için motor elemanlarını ekleyeceğiz. Uygulamamızda gerekli malzemeler aşağıdaki gibidir.Malzemeler
- Arduino uno
- Atlama kabloları
- Toprak sensörü
- Oled LCD modül
Devremizi ilk olarak bilgisayar üzerinde tasarlayalım
Devremizin bağlantılarını yapalım.
Toprak sensörü için;
- GND ucunu arduino gnd ucuna,
- VCC ucunu arduino vcc ucun,
- A0 ucunu arduino A0 ucuna bağlayınız.
Oled ekran için;
- VCC ucunu arduino vcc ucuna,
- Gnd ucunu arduino gnd ucuna,
- SDA ucunu arduino SDA ucuna,
- SCL ucunun aduino SCL ucuna bağlayınız.
Şimdi arduino dokumuzu yazmaya;
/*********************************************************************
ucboyutbilgi.net herkes için bilgi
*********************************************************************/
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
const int wetProbe = 300; // wet readings are around 1.5v or analog input value ~30
const int dryProbe = 620; // dry readings are around 3v or analog input value ~620
// Analog Sensor Input Pin
int sensorInput = 0; // soil probe is on analog input 0
// Variables
int validSensorReading = 0; // valid sensor analog reading to record
int sensorReading; // new sensor reading to evaluate and record or discard
int sensorResult; // scaled sensor data [0..3] = [wet, damp, moist, dry]
void setup() {
Serial.begin(9600); // some debug messages will display sensor raw data
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C address of the display
display.clearDisplay(); // clear the display buffer
}
void loop() {
sensorReading = analogRead(sensorInput);
if (abs(validSensorReading - sensorReading) > 10) {
validSensorReading = sensorReading;
}
Serial.print ("Old Sensor Reading: ");
Serial.println (validSensorReading);
Serial.print ("New Sensor Reading: ");
Serial.println (sensorReading);
sensorResult = map(validSensorReading, wetProbe, dryProbe, 0, 7); // scale analog input to a smaller range for wet to dry
Serial.print ("Scaled Sensor Reading 0-7: ");
Serial.println (sensorResult);
Serial.println ();
// display the correct soil moisture level on the display
// lower voltages represent more wet levels
switch (sensorResult) {
case 0:
displayTextProbe("ISLAK");
break;
case 1:
displayTextProbe("NEMLI");
break;
case 2:
displayTextProbe("AZ NEMLI");
break;
case 4:
displayTextProbe("KURU");
break;
case 7: // same as case 3, due to how map works.
displayTextProbe("ASIRI KURU");
break;
}
delay(500);
}
void displayTextProbe(const char * sensorDisplay) {
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.clearDisplay();
display.println("TOPRAK: ");
display.println(sensorDisplay);
display.display();
delay(1);
}
İsterseniz arduino kodunu buradan indirebilirsiniz.
Hiç yorum yok: