Stap 8: Arduino Sketch
Deze sketch is voor het hele weerstation met behulp van de Adafruit datalogger. Het kan dus moet worden aangepast aan uw eigen toepassing.
Hier is de code van de desbetreffende regenmeter.
#define RainPin 5
Regen variabele
BOOL RainHigh = false;
Const float LowAmt = 5.0; Wanneer regen slinkt, neemt deze ml op reis
Const float HiAmt = 5.0; Wanneer regen hoog is, neemt deze ml op reis
zweven RainAccum = 0,0; Regen accumulator sinds begin van monster
ongeldig setup(void) {}
Regen krijgen start staat
Als (digitalRead(RainPin)==HIGH)
{
RainHigh = true;
}
anders
{
RainHigh = false;
}
In setup bepalen ik of de RainPin hoog of laag. Dit bepaalt alleen welke emmer is en het uitgangspunt om te beginnen met het tellen van de uiteinden van de emmer.
void loop(void)
{
Regen rekenmachine, zoekt regen voortdurend
Zoekt u laag naar hoog
Als ((RainHigh==false) & & (digitalRead(RainPin)==HIGH))
{
RainHigh = true;
RainAccum += LowAmt;
}
Als ((RainHigh==true) & & (digitalRead(RainPin)==LOW))
{
RainHigh = false;
RainAccum += HiAmt;
}
In de hoofdlus zoek ik een overgang van de huidige status. Als het zich voordoet, dan voeg ik de juiste hoeveelheid water. Nu in mijn geval, ik heb ze beide ingesteld op 5 mL.
Mijn schets stuurt RainAccum naar de seriële poort en schrijft u deze naar de SD elke 10 seconden. Ik realiseer me 5 mL betekent niet veel en geen van beide doet het bedrag elke 10 seconden, maar voor mijn doeleinden werkt.
Hier zijn sommige berekeningen voor de regenmeter.
2.54 cm = 1 inch (precies)
Diameter van het verzamelen van de trechter is 5,5" of 13,97 cm.
Gebied is Pi * R2 of Pi * D2/4 of 23.76 In2 of 153.28 cm2
Amerikaanse maatregelen regen in inch dus het zou 23.76 In3 of 389.33 cm3
Cm3 is hetzelfde als mL
Dus 1 inch regen zou 389.33 mL.
5mL is ongeveer 0.0128 duim regen
Nu, kunt u het weerstation met alleen de Arduino software via de seriële monitor. De datalogger registreert ook dezelfde gegevens plus een datum- en tijdstempel naar een CSV-bestand.