Vökvun
Árni & Katý
Kunnugleg vandræði, verkferlar og skipulag
Hver hefur ekki lent í því að vinna í (forritunar) verkefni og:
- Gleymt hvernig allt virkar?
- Týnt forritsbútnum sínum?
- Týnt rafmagnsteikningunni sinni?
- Fyllst örvætingu og bræði?
Lausnir og samvinna
Fyrir ekki svo löngu bjó Katý til kerfi til fyrir sjálfvirka vökvun á pottaplöntu.
Fyrir utan vatnsforðabúr og pottaplöntu, samanstendur verkefnið af eftirfarndi hlutum:
- Ardunio Micro
- Rakaskynjara
- Vatnshæðarskynjara
- Rafmagnspumpu
- Rafrásarbretti með:
- “Barreljack” tengi fyrir 5v straumgjafa
- Mosfet til að straumfæða dæluna
- LED ljósi til aðvörunar
Virknin var rifjuð upp og verkefnum skipt niður:
- Katý sá um að finna réttu pinnan og skoða tengingar
- Árni skrifaði nýjan kóða
Pinnar og tengingar
Katý: Setja inn punkta
Lentum í því að lausir vírar í tengi leiddu saman. Eftir að það var hreinsað, virkaði brettið eðlilega.
Kóði
Til að flýta fyrir skrifaði ég nýtt forrit í Wokwi. Wokwi hermirinn flýtir gríðarlega fyrir vinnu við Arduino verkefni. Á meðan Katý fann út úr pinnunum, notaði ég aðra pinna til bráðabirgða.
Forritið
const int soilSensor = A0;
const int floaterPin = A4;
const int ledPin = 13;
const int pumpPin = A5;
int waitTime = 5000;
int waterState = 0;
int motorTime = 3000;
int raki;
int rakaGildi = 250;
void setup() {
Serial.begin(9600); // open serial port, set the baud rate as 9600 bps
pinMode(floaterPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(pumpPin, OUTPUT);
}
void loop() {
// Gefið er að ef það er nægt vatn, þá er staðan HIGH/true
// og kerfið heldur áfram
// Ef það vantar vatn, þá er staðan LOW/false, kveikt á viðvörunarljósi
// kerfið bíður eftir næstu vatnsmælingu
//waterState = digitalRead(floaterPin);
waterState = 1;
Serial.println(waterState);
digitalWrite(ledPin, !waterState);
if (waterState == true){
Serial.println("Það er nægt vatn");
// Athuga rakastig
raki = analogRead(soilSensor);
Serial.println(raki);
// TODO: Aðlaga þetta að rétta skynjaranum!
if (raki > rakaGildi){
Serial.println("Litill raki");
// Keyra dælu
// ATH: Skoða vel straumþörf á dælu.
// Mæli með að nota relay/transistor til að keyra dæluna.
Serial.println("Kveiki á dælu");
digitalWrite(pumpPin, HIGH);
delay(motorTime);
Serial.println("Slekk á dælu");
digitalWrite(pumpPin, LOW);
} else {
Serial.println("Nægur raki");
}
} else {
Serial.println("Það vantar vatn");
}
// Bið á mili vatnsmælinga
delay(waitTime);
}
Þessi forrits bútur var svo uppfærður með réttum pinnum og nægði til að koma Katý aftur á skrið.