Created
August 9, 2013 17:12
-
-
Save rswamy/6195328 to your computer and use it in GitHub Desktop.
garden sensor prototype - arduino code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define lightPin A0 | |
#define tempPin A1 | |
#define yLED 2 | |
#define rLED 3 | |
#define rLED2 4 | |
#define voltageFlipPin1 6 | |
#define voltageFlipPin2 5 | |
#define moistSensorPin A2 | |
int flipTimer = 300; | |
int currentLight; | |
int currentTemp; | |
int currentMoist; | |
void setup() { | |
pinMode(lightPin, INPUT); | |
pinMode(tempPin, INPUT); | |
pinMode(yLED, OUTPUT); | |
pinMode(rLED, OUTPUT); | |
pinMode(rLED2, OUTPUT); | |
pinMode(voltageFlipPin1, OUTPUT); | |
pinMode(voltageFlipPin2, OUTPUT); | |
pinMode(moistSensorPin, INPUT); | |
Serial.begin(115200); | |
} | |
// | |
// TEMP SENSOR FUNCTIONS | |
// | |
// learn.adafruit.com | |
float getTempF () { | |
int reading = analogRead(tempPin); | |
float voltage = reading * 5.0; | |
voltage /= 1024.0; | |
float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset to degrees | |
float temperatureF = (temperatureC * 1.8) + 32.0; | |
return temperatureF; | |
} | |
// | |
// MOISTURE SENSOR FUNCTIONS | |
// | |
int getMoisture(int val1,int val2){ | |
int avg = (val1 + val2) / 2; | |
return avg; | |
} | |
int reportMoisture(int avg) { | |
String msg = "Moisture: "; | |
msg += avg; | |
Serial.print(msg); | |
} | |
// code from gardenbot.org | |
void setSensorPolarity(boolean flip){ | |
if(flip){ | |
digitalWrite(voltageFlipPin1, HIGH); | |
digitalWrite(voltageFlipPin2, LOW); | |
}else{ | |
digitalWrite(voltageFlipPin1, LOW); | |
digitalWrite(voltageFlipPin2, HIGH); | |
} | |
} | |
void loop() { | |
currentLight = analogRead(lightPin); | |
currentTemp = getTempF(); | |
// moist sensor | |
setSensorPolarity(true); | |
int val1 = analogRead(moistSensorPin); | |
delay(flipTimer); | |
setSensorPolarity(false); | |
int val2 = 1023 - analogRead(moistSensorPin); | |
delay(flipTimer); | |
currentMoist = getMoisture(val1,val2); | |
// light sensor LED | |
if (currentLight < 400) | |
digitalWrite(yLED, HIGH); | |
else | |
digitalWrite(yLED, LOW); | |
//temp sensor LED | |
if (currentTemp > 80) | |
digitalWrite(rLED, HIGH); | |
else | |
digitalWrite(rLED, LOW); | |
// moist sensor LED | |
if (currentMoist > 600) | |
digitalWrite(rLED2, HIGH); | |
else | |
digitalWrite(rLED2, LOW); | |
Serial.print("Moisture: "); | |
Serial.print(currentMoist); | |
Serial.print(" Light: "); | |
Serial.print(currentLight); | |
Serial.print(" Temp: "); | |
Serial.println(currentTemp); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment