Étape 3: Programmation votre Photon
La dernière étape de notre jauge de pluie de toiture végétalisée consiste à programmer le Photon. L’exemple ici est fait pour les connexions spécifiques à certains ports du Photon, alors assurez-vous que vous mettez vos propres variables là-dedans
#define DEBUG_SERIAL vrai
définir votre sujet, le titre et le nom
sujet de String const = « your/propre/rubrique » ;
Sondes sont reliées à ces pins, assurez-vous d’avoir les mêmes ou les renommer à votre propre entrée
const int analogPin0 = A0 ;
const int analogPin1 = A1 ;
const int analogPin2 = A2 ;
nombre de secondes entre les téléchargements vers le nuage d’étincelles. Cela ne peut jamais être inférieur à 60 //because IFTTT ne permet pas de déclencheurs plus que 1 par minute.
const int intervalOnline = 60 ;
nombre de secondes entre les téléchargements via l’USB serial
const int intervalSerial = 10 ;
nombre de millisecondes entre les différentes mesures. Cela pourrait être aussi bas que nécessaire, mais la plus élevée des valeurs //results dans un comportement plus stable de l’ADC.
const int intervalMeasurement = 10000 ;
int measuredValue0 = 0 ;
int measuredValue1 = 0 ;
int measuredValue2 = 0 ;
int mean_pressure = 0 ;
int pres_old = 0 ;
diff int = 0 ;
int total_time = 0 ;
float total_rain = 0 ;
float added_eachother = 0.0 ;
String pressureString = "" ;
void setup() {}
commencer la communication série
Si (DEBUG_SERIAL) Serial.begin(9600) ;
l’inPin la valeur d’entrée
pinMode (analogPin0, entrée) ;
pinMode (analogPin1, entrée) ;
pinMode (analogPin2, entrée) ;
Particle.variable (« pression », pressureString) ;
Particle.variable ("Time", total_time) ;
Delay(1000) ;
}
void loop() {}
obtenir le timestamp
int t=millis() ;
toutes les millisecondes intervalMeasurement, faire une mesure
Si (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) ;
}
toutes les secondes intervalSerial, envoyer la mesure via USB Serial
Si {(DEBUG_SERIAL)
Si (t%(intervalSerial*1000) < 5) {}
Serial.println(pressureString) ;
Serial.println(mean_pressure) ;
Serial.println(totale_regen) ;
Serial.println(totale_tijd) ;
Delay(3) ;
} }
toutes les secondes intervalOnline, publier mesure à étincelle nuage
Si (t%(intervalOnline*1000) < 10) {}
String measurementText = String (diff, DEC) ;
Particle.Publish (rubrique, pressureString, 60, PUBLIC) ;
Delay(3) ; }