Étape 4: Programmer le Photon
Dans cette étape il y aura décrit comment le programme fonctionne.
Tout d’abord les valeurs de mesure seront générés avec la FSR. Une condition est faite telle que lorsque l’interrupteur est pressé que la valeur de mesure particulière sera la mesure zéro. Cette valeur sera soustrait le reste des valeurs générées. Le niveau d’eau sera calculé avec une fonction polynomiale qui décrit le niveau d’eau en fonction des valeurs de mesure assez bien. Lorsque le niveau d’eau dépasse un certain niveau, une condition est implicite pour laisser le clignotement de la LED en affectant à la cheville de dialogue haute et basse avec un certain délai. Puisque la fonction polynôme ne décrit pas la fonction bien à toutes les valeurs, la condition que la valeur mesurée doit être inférieure à une certaine valeur est impliquée aussi bien.
Le code utilisé pour déterminer le niveau d’eau est donné ci-dessous, les commentaires sont ajoutés pour plus de clarté.
Code :
Définir quelles broches seront utilisés comme quel type de goupille
intmeasurementPin = A0 ;
intlampPin = D0 ;
intknopPin = D5 ;
Définissez les valeurs initiales à zéro
intanalogValue = 0 ;
float measurementValue = 0.0 ;
float measurementValue2 = 0.0 ;
float offset = 0.0 ;
flotteur niveau = 0.0 ;
Définir les paramètres de minuteur
Minuterie measurementTimer(10000,pubMeas) ;
Minuterie serialTimer(500,serialMeas) ;
void setup() {}
Déclencher les minuteries
measurementTimer.start() ;
serialTimer.start() ;
Définir quels NIP seront comme quoi
pinMode (measurementPin, entrée) ;
pinMode (lampPin, sortie) ;
pinMode (knopPin, INPUT_PULLUP) ;
Commencer la communication sérielle
Serial.Begin(9600) ;
}
Début de la boucle, ici les valeurs seront générés en permanence
void loop() {}
Lire la measurmentvalue de l’analogpin (A0)
measurementValue = analogRead(measurementPin) ;
measurementvalue2 est la valeur de la mesure après avoir défini le zeromeasurement(offset)
measurementValue2 = measurementValue - compenser ;
« qualifier de niveau d’eau encore zéro (ne pas nécessaire???) »
niveau = 0.0 ;
((float) measurementPin)
Lorsque vous appuyez sur KnopPin ofset est le measurementvalue actuel, il s’agit de la zeromeasurement
Si (digitalRead(knopPin)==LOW) {}
offset = measurementValue ;
}
Si measurementvalue est supérieure à 1000 le tube n’est pas installé alors ces juste ne fera pas de sens
if(measurementValue<1000.0) {}
Si le zeromeasurement n’a pas été respecté le niveau sera toujours 0cm.
Si {(offset > 0.01)
Assurez-vous de n’utiliser que de la formule pour calculer le niveau lorsqu’et le tube est insalled et le zeromeasurement
(appartenant à l’installation du tube de mesure) est remplie
niveau = 0,0003 * measurementValue2 * measurementValue2-0,0017 * measurementValue2 +2.745 ;
}
« qualifier de niveau d’eau encore zéro (ne pas nécessaire???) »
else {}
niveau = 0.0 ;
}
}
Delay(1) ;
Lorsque le niveau > 75,0 la LED clignote, si vous souhaitez modifier les termes pour clignoter la lumière vous pouvez le faire dans la ligne ci-dessous.
if(waterlevel>75.0) {}
Et quand measurementValue < 1000.0, sinon la LED clignote avant la zeromeasurement due à utiliser
d’une fonction polynomiale, qui ne peut pas définir le niveau dans le bon sens au-dessus de certaines measurementValues
if(measurementValue<1000.0) {}
Laissez le clignotement de la LED
digitalWrite (lampPin, HIGH) ; définit la LED sur
Delay(200) ; attend 200mS
digitalWrite (lampPin, basse) ; la LED se met
Delay(200) ; attend 200mS
Fermez tous les loops
}
}
}
Publier le résultat sur th
void pubMeas() {}
Particle.Publish("HennoMeting",String(waterlevel,3),Private) ;
}
void serialMeas() {}
Imprimer la measurementValue pour la confirmation et le niveau parce que c’est ce que vous voulez mesurer
Serial.println(String(measurementValue,3)) ;
Serial.println(String(waterlevel,3)) ;
}
Clignotant
Après avoir connecté le Photon avec votre ordinateur, vous avez besoin flasher ce code à ce sujet. Si vous ne savez pas comment cela fonctionne, suivez les instructions suivantes :