Schritt 3: Programmieren Ihr Photon
Der letzte Schritt von unserem Gründach Regenmesser ist das Photon zu programmieren. Das Beispiel hier ist für bestimmte Verbindungen auf bestimmte Ports des Photons, so stellen Sie sicher, dass Sie dort Ihre eigenen Variablen setzen
#define DEBUG_SERIAL wahr
definieren Sie Ihr Thema, Titel und name
const String Thema = "Ihr/besitzen/Thema";
Sensoren dieser Pins verbunden sind, stellen Sie sicher, haben die gleichen oder benennen Sie sie um Ihre eigenen Eingaben
const Int analogPin0 = A0;
const Int analogPin1 = A1;
const Int analogPin2 = A2;
Anzahl der Sekunden zwischen Uploads in die Spark-Cloud. Dies kann niemals niedriger sein als 60 //because, die IFTTT nicht mehr auslöst als 1 pro Minute zulässt.
const Int IntervalOnline = 60;
Anzahl der Sekunden zwischen Uploads über serielle USB
const Int IntervalSerial = 10;
Anzahl der Millisekunden zwischen den Messungen. Dies könnte so niedrig wie nötig, aber höhere Werte //results in einem stabileren Verhalten des ADC.
const Int IntervalMeasurement = 10000;
Int measuredValue0 = 0;
Int measuredValue1 = 0;
Int measuredValue2 = 0;
Int Mean_pressure = 0;
Int Pres_old = 0;
Int Diff = 0;
Int Total_time = 0;
Float Total_rain = 0;
Float Added_eachother = 0.0;
String PressureString = "";
void setup() {}
Starten Sie die serielle Kommunikation
Wenn (DEBUG_SERIAL) Serial.begin(9600);
Legen Sie die InPin auf INPUT
PinMode (analogPin0, Eingabe);
PinMode (analogPin1, Eingabe);
PinMode (analogPin2, Eingabe);
Particle.Variable ("Druck", PressureString);
Particle.Variable ("Time", Total_time);
Delay(1000);
}
void loop() {}
Zeitstempel zu bekommen
Int t=millis();
alle IntervalMeasurement Millisekunden machen eine Messung
Wenn (t%(intervalMeasurement) < 1) {}
measuredValue0 = analogRead(analogPin0);
measuredValue1 = analogRead(analogPin1);
measuredValue2 = analogRead(analogPin2);
Mean_pressure = ((Schwimmer) (measuredValue0 + measuredValue1 + measuredValue2)) / 3.0;
Diff = Mean_pressure - Pres_old;
Total_rain = ((diff/0.117778)/(17.0*17.0)) * 10,0;
Added_eachother += Totale_regen;
Pres_old = Mean_pressure;
PressureString = String(added_eachother,4);
Total_time += 10; Delay(1);
}
senden Sie alle IntervalSerial Sekunden Messung über USB Serial
Wenn (DEBUG_SERIAL) {}
Wenn (t%(intervalSerial*1000) < 5) {}
Serial.println(pressureString);
Serial.println(mean_pressure);
Serial.println(totale_regen);
Serial.println(totale_tijd);
Delay(3);
} }
IntervalOnline-Sekundentakt, veröffentlichen Messung auf Spark Cloud
Wenn (t%(intervalOnline*1000) < 10) {}
String MeasurementText = String (Diff, DEC);
Particle.Publish (Thema, PressureString, 60, Öffentlichkeit);
Delay(3); }