KOMPAKT och ROBUST automatiserade jordbruk REMOTE (11 / 11 steg)
Steg 11: koder
REMOTE PROGRAM:
#include < glcd.h >
#include < SoftwareSerial.h >
SoftwareSerial xbee(2,3);
#include "fonts/SystemFont5x7.h"
int p;
int s, au;
char a, b, c;
void setup()
{
Serial.BEGIN(9600);
XBee.BEGIN(9600);
pinMode(A5,INPUT);
pinMode(12,INPUT);
pinMode(13,INPUT);
GLCD. Init();
GLCD. CursorTo(6,1);
GLCD.print("DREAMERS");
GLCD. CursorTo(3,3);
GLCD.print ("föra DREAMS");
GLCD. CursorTo(6,5);
GLCD.print ("till verklighet");
Delay(2000);
GLCD. ClearScreen();
}
void loop()
{
IF(XBee.available())
{
en = xbee.read();
b = xbee.read();
c = xbee.read();
}
Serial.Print("a:");
Serial.Print(a);
Serial.Print("\t");
Serial.Print("b:");
Serial.Print(b);
Serial.Print("\t");
Serial.Print("c:");
Serial.Print(c);
Serial.Print("\t");
Serial.println();
int Knp1 = analogRead(A5);
int btn2 = digitalRead(12);
int btn3 = digitalRead(13);
om (btn3 == 1)
{
Au = 49.
p = 48.
s = 48.
}
annat if (btn3 == 0)
{
Au = 48.
om (Knp1 > 1000)
{
p = 49.
}
annat
{
p = 48.
}
om (btn2 == 1)
{
s = 49.
}
annat
{
s = 48.
}
}
XBee.write(AU);
XBee.write(p);
XBee.write(s);
om (btn3 == 1)
{
GLCD. ClearScreen();
GLCD. CursorTo(4,0);
GLCD.print ("automatisk läge");
}
annat if (btn3 == 0)
{
GLCD. ClearScreen();
GLCD. CursorTo(5,0);
GLCD.print ("manuell läge");
om (Knp1 > 1000)
{
GLCD. CursorTo(0,2);
GLCD.print ("PUMP på");
}
annat
{
GLCD. CursorTo(0,2);
GLCD.print ("PUMP OFF").
}
om (btn2 == 1)
{
GLCD. CursorTo(0,4);
GLCD.print ("SPRINKLER på");
}
annat
{
GLCD. CursorTo(0,4);
GLCD.print ("SPRINKLER OFF");
}
}
om (en == '1' & & au == 49)
{
GLCD. CursorTo(0,2);
GLCD.print ("PUMP på");
GLCD. CursorTo(0,4);
GLCD.print ("SPRINKLER på");
}
annars om (en == '0' & & au == 49)
{
GLCD. CursorTo(0,2);
GLCD.print ("PUMP OFF").
GLCD. CursorTo(0,4);
GLCD.print ("SPRINKLER OFF");
}
Delay(10);
}
FÄLTET PROGRAM:
#include < SoftwareSerial.h >
SoftwareSerial Rxbee(2,3);
int pump.
int sprink;
char au, b, c, m, lev;
void setup()
{
Serial.BEGIN(9600);
Rxbee.BEGIN(9600);
pinMode(8,OUTPUT);
pinMode(A0,INPUT);
pinMode(A1,INPUT);
pinMode(A2,INPUT);
pinMode(A3,INPUT);
pinMode(A4,INPUT);
}
void loop()
{
IF(Rxbee.available())
{
Au = Rxbee.read();
Serial.Print(AU);
Serial.Print("\t");
b = Rxbee.read();
Serial.Print(b);
Serial.println("\t");
c = Rxbee.read();
Serial.println(c);
}
om (au == '1')
{
int temp = analogRead(A0);
flyta t = temp *. 48828125;
Serial.Print("t:");
Serial.println(t);
om (lev == 48)
{
IF(Mos < 1000)
{
digitalWrite(8,LOW);
pump = 48.
Serial.Print ("auto pump off").
}
annat
{
pump = 49.
digitalWrite(8,HIGH);
Serial.Print ("auto pump på");
}
annat
{
pump = 48.
digitalWrite(8,LOW);
}
}
annars om (au == '0')
{
om (b == '1' & & c == '1')
{
digitalWrite(8,HIGH);
Serial.println (man båda på");
}
annars om (b == '1' & & c == '0')
{
Serial.println ("man pumpen på");
digitalWrite(8,HIGH);
}
annars om (b == '0' & & c == '1')
{
Serial.println ("mannen sprink på");
digitalWrite(8,HIGH);
}
annars om (b == '0' & & c == '0')
{
Serial.println (man båda off");
digitalWrite(8,LOW);
}
annat
{
Serial.println("no");
digitalWrite(8,LOW);
}
}
int lev0 = analogRead(A1);
int lev1 = analogRead(A2);
int lev2 = analogRead(A3);
int mos = analogRead(A4);
Serial.println(lev0);
Serial.println(lev1);
Serial.println(lev2);
Serial.println(Mos);
vatten nivåmätare ***
om ((lev0 < 1000) & & (lev1 < 1000) & & (lev2 < 1000))
{
Serial.println ("vatten nivå full").
Lev = 51.
}
annars om ((lev0 < 1000) & & (lev1 < 1000))
{
Serial.println ("nivå 2").
Lev = 50;
}
annars om (lev0 < 1000)
{
Serial.println ("nivå 1").
Lev = 49.
}
annat
{
Serial.println ("inget vatten");
Lev = 48.
}
/ *** fukt värde *** /
IF(Mos > 1005)
{
Serial.Print ("mos inget vatten");
m = 48.
}
annat if(mos >990)
{
Serial.Print ("delvis våta fältet");
m = 49.
}
annars om (mos > 980)
{
Serial.Print ("våta fältet");
m = 50;
}
annars om (mos > 960)
{
Serial.Print ("tillräckligt vatten");
m = 51.
}
annat
{
Serial.Print ("vatten overflow");
m = 52;
}
Rxbee.write(pump);
Rxbee.write(Lev);
Rxbee.write(m);
Delay(10);
}