Paso 3: Programación su fotón
El último paso de nuestro pluviómetro de techo verde es programar el fotón. El ejemplo está hecho para conexiones específicas a determinados puertos de los fotones, así que asegúrese de que poner sus propias variables allí
#define DEBUG_SERIAL TRUE
definir el tema, título y nombre
tema de cadena const = "su/propio/tema";
Los sensores están conectados a estos pernos, asegúrese de tener el mismo o cambiar a su propia entrada
const int analogPin0 = A0;
const int analogPin1 = A1;
const int analogPin2 = A2;
número de segundos entre subidas a la nube de chispas. Esto nunca puede ser inferior a 60 //because IFTTT no permite desencadenadores de más de 1 minuto.
const int intervalOnline = 60;
número de segundos entre cargas sobre el USB serial
const int intervalSerial = 10;
número de milisegundos entre las mediciones. Esto podría ser tan bajo como sea necesario, pero más //results valores en un comportamiento más estable de la ADC.
const int intervalMeasurement = 10000;
int measuredValue0 = 0;
int measuredValue1 = 0;
int measuredValue2 = 0;
int mean_pressure = 0;
int pres_old = 0;
diff de int = 0;
total_time int = 0;
Float total_rain = 0;
Float added_eachother = 0.0;
String pressureString = "";
void setup() {}
iniciar la comunicación Serial
Si Serial.begin(9600) (DEBUG_SERIAL);
establecer la inPin a entrada
pinMode (analogPin0, entrada);
pinMode (analogPin1, entrada);
pinMode (analogPin2, entrada);
Particle.variable ("presión", pressureString);
Particle.variable ("tiempo", total_time);
Delay(1000);
}
void loop() {}
obtener fecha y hora
int t=millis();
cada milisegundos intervalMeasurement, hacer una medición
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);
}
cada intervalSerial segundos, enviar medida Serial USB
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);
} }
cada intervalOnline segundos, publicar medida a nube de chispa
Si (t%(intervalOnline*1000) < 10) {}
String measurementText = String (diff, DEC);
Particle.Publish (tema, pressureString, 60, público);
Delay(3); }