Stap 3: Programmeren uw Photon
De laatste stap van onze groene dak regenmeter is om te programmeren van het foton. In het voorbeeld hier is gemaakt voor specifieke verbindingen met bepaalde poorten van het foton, dus zorg ervoor dat u uw eigen variabelen in daar
#define DEBUG_SERIAL waar
uw onderwerp, de titel en de naam definiëren
Const String onderwerp = "uw/eigen/onderwerp";
Sensoren zijn verbonden aan deze pinnen, zorg ervoor dat u dezelfde of hen anders noemen aan uw eigen inbreng
Const int analogPin0 = A0;
Const int analogPin1 = a1 worden verkregen;
Const int analogPin2 = A2;
het aantal seconden tussen upload naar de Cloud vonk. Dit mag nooit lager zijn dan 60 //because IFTTT niet mogelijk is om meer triggers dan 1 per minuut.
Const int intervalOnline = 60;
aantal seconden tussen uploads via de seriële USB
Const int intervalSerial = 10;
het aantal milliseconden tussen metingen. Dit zou kunnen zijn zo laag als nodig, maar de hogere waarden-//results in een meer stabiele gedrag van de 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;
zweven total_rain = 0;
zweven added_eachother = 0,0;
PressureString koord = "";
VOID Setup {}
Start seriële communicatie
Als (DEBUG_SERIAL) Serial.begin(9600);
Stel de inPin op aansluiting.
pinMode (analogPin0, INPUT);
pinMode (analogPin1, INPUT);
pinMode (analogPin2, INPUT);
Particle.variable ("druk", pressureString);
Particle.variable ("Time", total_time);
delay(1000);
}
void loop {}
tijdstempel
int t=millis();
elke intervalMeasurement milliseconden, doen een meting
Als (t%(intervalMeasurement) < 1) {}
measuredValue0 = analogRead(analogPin0);
measuredValue1 = analogRead(analogPin1);
measuredValue2 = analogRead(analogPin2);
mean_pressure = ((float) (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);
}
elke intervalSerial seconden, stuur meting via seriële USB
Als (DEBUG_SERIAL) {}
Als (t%(intervalSerial*1000) < 5) {}
Serial.println(pressureString);
Serial.println(mean_pressure);
Serial.println(totale_regen);
Serial.println(totale_tijd);
delay(3);
} }
elke intervalOnline seconden, publiceren meting naar Spark Cloud
Als (t%(intervalOnline*1000) < 10) {}
MeasurementText koord = String (diff, DEC);
Particle.publish (onderwerp, pressureString, 60, publiek);
delay(3); }