Arduino mark sond med DS18B20 och DIY fukt hårdvara (4 / 5 steg)
Steg 4: Arduino Uno koden för mark sond
Koden är mestadels ganska rakt fram men det är viktigt att puls fukt sonden i stället för att leverera en konstant spänning. För en, detta sparar energi, men viktigast av allt, det förhindrar att elektroderna korrodera för snabbt. I det här exemplet är för enheten pulserande från stift 9.
< font color = "#555555" face = "Arial" style = "bakgrundsfärg: rgb (255, 255, 255);" >< / font > #include < DallasTemperature.h >
#include < OneWire.h >
Sök efter dessa inkluderar filer på internet och hämta den senaste versionen som en zip-fil.
#define ONE_WIRE_BUS_PIN 10
OneWire oneWire(ONE_WIRE_BUS_PIN);
DallasTemperature sensorer (& oneWire);
DeviceAddress Probe01 = {0x28, 0x7C, 0x8A, 0x5D, 0x05, 0x00, 0x00, 0xFD}; Detta är det värde som vi fick från ena sladden sökningen.
Värdet ovan kommer att vara olika för varje enskild DS18B20 temp sensor som någonsin gjorts. Dont' försök och använder min som det brukar fungera!
int sensorPin = A0;
int sensorValue = 0; variabel för att lagra värdet kommer från fukt sensor
osignerade långa moistureValue = 0;
float tempsoil;
int moisturePowerPin = 9;
void setup() {
pinMode (moisturePowerPin, produktionen);
Serial.BEGIN(115200);
sensors.BEGIN(); Temperaturgivare DS18B20.
sensors.setResolution (Probe01, 10);
Serial.println ("skriva ut markens temperatur och fukt innehåll...");
Serial.println("");
fördröjning (1000);
}
void loop() {
sensors.requestTemperatures(); DS18B20 bibliotek funktionsanropet.
Serial.Print ("Probe01 mark temp:");
printSoilTemperature(Probe01);
digitalWrite (moisturePowerPin, hög); Krafter upp fukt sensorn 0.1 sekunder att förhindra korrosion.
sensorValue = analogRead (sensorPin) * 0.102; Sensorn kalibreras genom att multiplicera med 0.102.
Serial.Print ("fukt sensor:"); Serial.Print(sensorValue); Serial.println ("%");
Serial.println("");
fördröjning (100);
digitalWrite (moisturePowerPin, låg);
fördröjning (10000);
}
void printSoilTemperature (DeviceAddress deviceAddress) / / funktion som skriver ut jord temperaturen.
{
float temp = sensors.getTempC(deviceAddress);
tempsoil = härda;
om (tempsoil ==-127.00)
{
Serial.Print ("fel få temperatur");
}
annat
{
Serial.Print(tempsoil); Serial.println ("grader C");
}
}