diff --git a/Soile_Moisture_Sensor_Arduino_MEGA-16_Sensors.ino b/Soile_Moisture_Sensor_Arduino_MEGA-16_Sensors.ino new file mode 100644 index 0000000..0864f4f --- /dev/null +++ b/Soile_Moisture_Sensor_Arduino_MEGA-16_Sensors.ino @@ -0,0 +1,239 @@ +// For Mega you can add al of the commands and uncomment. For nano you will need to comment +// out some of the script. + +//// pump digital pins, 16 digital pins but grove only seems to have the +//// split mapped diferent on the split cables. So only using 8. +//const int pumpPin0 = 0; +//const int pumpPin1 = 1; +//const int pumpPin2 = 2; +//const int pumpPin3 = 3; +//const int pumpPin4 = 4; +//const int pumpPin5 = 5; +//const int pumpPin6 = 6; +//const int pumpPin7 = 7; + +// soil moisture analog pins, 16 analog pins but grove only seems to have the +// split mapped diferent on the split cables. So only using 8. +const int soilSensorA0 = A0; +const int soilSensorA1 = A2; +const int soilSensorA2 = A4; +const int soilSensorA3 = A6; +const int soilSensorA4 = A8; +const int soilSensorA5 = A10; +const int soilSensorA6 = A12; +const int soilSensorA7 = A14; + +// soil moisture reading that is dry +const int dry = 680; +// soil moisture reading that is moist +const int moist = 680; +// print delay +const int printDelay = 5000; +// per sensor script delay +//const int sensorsDelay = 5000; +// Serial write speak +const int serialWrite = 19200; + +// site number if you have more than one +const int siteNumber = 1; +// Cycle Delay every 2 hours +//const int cycleDelay = 7200000; +// water delay +//const in waterDelay = 10000; + +void setup() { +// pinMode(pumpPin1, OUTPUT); +// pinMode(soilSensor0, INPUT); +// Serial.begin(serialwrite); +// digitalWrite(pumpPin1, HIGH); +// delay(sensordelay); +// pinMode(pumpPin1, OUTPUT); +// pinMode(soilSensor1, INPUT); +// Serial.begin(serialwrite); +// digitalWrite(pumpPin2, HIGH); +// delay(sensordelay); +// pinMode(pumpPin2, OUTPUT); +// pinMode(soilSensor2, INPUT); +// Serial.begin(serialwrite); +// digitalWrite(pumpPin3, HIGH); +// delay(sensordelay); +// pinMode(pumpPin3, OUTPUT); +// pinMode(soilSensor3, INPUT); +// Serial.begin(serialwrite); +// digitalWrite(pumpPin4, HIGH); +// delay(sensordelay); +// pinMode(pumpPin4, OUTPUT); +// pinMode(soilSensor4, INPUT); +// Serial.begin(serialwrite); +// digitalWrite(pumpPin5, HIGH); +// delay(sensordelay); +// pinMode(pumpPin5, OUTPUT); +// pinMode(soilSensor5, INPUT); +// Serial.begin(serialwrite); +// digitalWrite(pumpPin6, HIGH); +// delay(sensordelay); +// pinMode(pumpPin6, OUTPUT); +// pinMode(soilSensor6, INPUT); +// Serial.begin(serialwrite); +// digitalWrite(pumpPin6, HIGH); +// delay(sensordelay); +// pinMode(pumpPin7, OUTPUT); +// pinMode(soilSensor7, INPUT); +// Serial.begin(serialwrite); +// digitalWrite(pumpPin7, HIGH); +// delay(sensordelay); + Serial.begin(serialWrite); +} + +void loop() { + + // Delay to allow any reboots to happen + delay(120000); + + Serial.println("Sensing Moisture on Zone " + String(siteNumber) + "!"); + delay(printDelay); + + // Moisture Sensor A0 + int moisture0 = analogRead(soilSensorA0); + Serial.println("Pot 1: " + String(moisture0)); + delay(5000); + + if (moisture0 >= dry) { + // the soil is too dry, water! + Serial.println("Pot 1 is dry"); + delay(5000); + } + + if (moisture0 <= moist) { + // the soil is too dry, water! + Serial.println("Pot 1 is moist"); + delay(5000); + } + + // Moisture Sensor A2 + int moisture1 = analogRead(soilSensorA1); + Serial.println("Pot 2: " + String(moisture1)); + delay(5000); + + if (moisture1 >= dry) { + // the soil is too dry, water! + Serial.println("Pot 2 is dry"); + delay(5000); + } + + if (moisture1 <= moist) { + // the soil is too dry, water! + Serial.println("Pot 2 is moist"); + delay(5000); + } + + // Moisture Sensor A4 + int moisture2 = analogRead(soilSensorA2); + Serial.println("Pot 3: " + String(moisture2)); + delay(5000); + + if (moisture2 >= dry) { + // the soil is too dry, water! + Serial.println("Pot 3 is dry"); + delay(5000); + } + + if (moisture2 <= moist) { + // the soil is too dry, water! + Serial.println("Pot 3 is moist"); + delay(5000); + } + + // Moisture Sensor A6 + int moisture3 = analogRead(soilSensorA3); + Serial.println("Pot 4: " + String(moisture3)); + delay(5000); + + if (moisture3 >= dry) { + // the soil is too dry, water! + Serial.println("Pot 4 is dry"); + delay(5000); + } + + if (moisture3 <= moist) { + // the soil is too dry, water! + Serial.println("Pot 4 is moist"); + delay(5000); + } + + // Moisture Sensor A8 + int moisture4 = analogRead(soilSensorA4); + Serial.println("Pot 5: " + String(moisture4)); + delay(5000); + + if (moisture4 >= dry) { + // the soil is too dry, water! + Serial.println("Pot 5 is dry"); + delay(5000); + } + + if (moisture4 <= moist) { + // the soil is too dry, water! + Serial.println("Pot 5 is moist"); + delay(5000); + } + + // Moisture Sensor A10 + int moisture5 = analogRead(soilSensorA5); + Serial.println("Pot 6: " + String(moisture5)); + delay(5000); + + if (moisture5 >= dry) { + // the soil is too dry, water! + Serial.println("Pot 6 is dry"); + delay(5000); + } + + if (moisture5 <= moist) { + // the soil is too dry, water! + Serial.println("Pot 6 is moist"); + delay(5000); + } + + // Moisture Sensor A11 + int moisture6 = analogRead(soilSensorA6); + Serial.println("Pot 7: " + String(moisture6)); + delay(5000); + + if (moisture6 >= dry) { + // the soil is too dry, water! + Serial.println("Pot 7 is dry"); + delay(5000); + } + + if (moisture6 <= moist) { + // the soil is too dry, water! + Serial.println("Pot 7 is moist"); + delay(5000); + } + + // Moisture Sensor A12 + int moisture7 = analogRead(soilSensorA7); + Serial.println("Pot 8: " + String(moisture7)); + delay(5000); + + if (moisture7 >= dry) { + // the soil is too dry, water! + Serial.println("Pot 8 is dry"); + delay(5000); + } + + if (moisture7 <= moist) { + // the soil is too dry, water! + Serial.println("Pot 8 is moist"); + delay(5000); + } + + Serial.println("Done Sensing Moisture!"); + delay(5000); + + Serial.println("Next moisture check is in a couple hrs!"); + delay(printDelay); + + delay(3600000); +}