Aquaponic balkong GARDEN (11 / 15 steg)
Steg 11: Lokala ARDUINO kontroll skiss--aquaponic balkong trädgård församling
Lokalt läge kommer att användas för system cykling och testning av sensorer. Enkla Timerfunktionen är egentligen allt som behövs på först så det är vad denna skiss handlar om. Det är basen kod för att få systemen och kör med en Arduino UNO. och styra växa säng ventilen. När denna del av bygget är master sedan lägga i sensorn behandlingen och kontroll kommer att vara nästa arbetsplanen. All källkod för att åstadkomma detta kan hittas i Instructable sensorer och Automation element. Länkar kommer att ges vid www.rik94566.wordpress.com.
SKISS FÖR TIMER KONTROLL AV VENTILEN:
< p > /*Balcony_Timer_Ver1.0.0 < br > * 05.30.2015 - versioner av rik kretzinger--AGponic, INC.
*
* Beskrivning:
* Denna skiss slår growbed tömningsventilen på och av på bestämda tidsintervall.
* Flera oberoende växlade händelser kan konfigureras. Varje
* utgång kan konfigureras med oberoende
* till och från varaktigheter med minst 1 sekund (1000)
* och högst ca 18 timmar (2 ^ 16 sekunder).
* 1 sekund (1000)-1 minut (60000)-1 timme (3 600 000)
*
*/
Timerfunktionen den kräver libaries--Balcony_Timer_V1.00
#include < EventFuse.h >< eventfuse.h >
#include < MsTimer2.h >< mstimer2.h >< /mstimer2.h >< /eventfuse.h >< /p >< p > / / Timer #define uttalanden från--Balcony_Timer_V1.00 av rjk
#define OutputCount 4
#define OffTime 0
#define OnTime 1
#define OutputPin 2 < /p >< p > / / dokumentera när och varifrån här (i det här avsnittet kommer från Balcony_Timer_V1.00 av rjk)
Arrayen utgångar definierar hur länge varje utgång - A B C D kommer
stängas av, på, och vilka stift att använda för vilka utgångar.
Off och värden finns i enheter av "fästingar". Längd
av en fästing styrs av inställningarna för MsTimer2. 1 second(1000) - 1 minut (60000)-1 timme (3 600 000)
ändringar i denna kodrad MsTimer2::set (60000, timerTick); nedan
iväg på pin
byte utgångar [OutputCount] [3] = {{10, 30, 2}, / / ventil timer för växa säng ON/OFF cykel--å ger ström till ventil
{0, 0, 0}, / / output B - avstängda tills behövs
{0, 0, 1}, / / utgång C - avstängda tills behövs
{0, 0, 13},}; Utgång D - avstängda tills behövs
vid start av skiss är relä i OFF-läge för
tid av OFF tiden för utgång A (ventil) < /p >< p > / / från Balcony_Timer_V1.0.0
void OutputHandler (FuseID fuseID, int outputID) {
slå upp PIN-koden är associerade med denna utgång
byte pin = utgångar [outputID] [OutputPin]; < /p >< p > / / få och Invertera dagens pin och skriva
tillbaka till hamnen att Invertera dagens pin.
int state = 1 & ~ digitalRead(pin);
digitalWrite (pin, statligt); < /p >< p > / / Reset fuse längden med ett nytt intervall. Det aktuella läget
i PIN-koden används för att avgöra vilket intervall ska användas.
eventFuse [fuseID] .fuseLen = utgångar [outputID] [staten].
} < /p >< p > / / lagt från Balcony_Timer_V1.0.0
void timerTick() {
eventFuse.burn(1);
} < /p >< p > void setup() {
Taget från Balcony_Timer_V1.0.0
Ställa in och init alla utgångar till off
för (byte jag = 0; jag < outputcount; i ++) {= "" = "" pinmode (= "" utgångar [i] [outputpin], = "" output); = "" digitalwrite (= "" låg = ""); = "" Ange = "" till = "" hög = "" och = "" ventil = "" kommer = "" vara = "" på = "" på = "" tid = "" av = "" skiss = "" starta < = "" p = "" >< / outputcount; >< /p >< p > / / ställa upp en händelse säkring för denna utgång.
eventFuse.newFuse (i, utgångar [i] [OffTime], INF_REPEAT, OutputHandler);
} < /P >< p > / / ställa in MsTimer2 för en mintue per fästing.
MsTimer2::set (1000, timerTick); 1 minut tidsram per fästing
MsTimer2::start();
} < /p >< p > void loop() {
} < /p >