Skip to content

Instantly share code, notes, and snippets.

@rswamy
Created August 9, 2013 17:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rswamy/6195328 to your computer and use it in GitHub Desktop.
Save rswamy/6195328 to your computer and use it in GitHub Desktop.
garden sensor prototype - arduino code
#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