Étape 4: Code
Après que montage de tout le circuit, que vous avez à faire est obtenir le noyau connecté à l’internet, et après que qui est fait de son temps à télécharger le code pour le noyau. Voici le code à télécharger...
---/ / Publish et tableau de bord avec photo-résistances / /---/ / cette app va publier un événement lorsque le faisceau de lumière entre le LED et la photorésistance est cassé. Il va publier un événement différent lorsque la lumière est encore intacte. Tout comme avant, nous allons commencer par déclarer quelles broches tout est bien branché. int mené = D0 ; C’est où est branché votre LED. L’autre côté va à une résistance connectés au GND. int boardLed = D7 ; Il s’agit de la LED qui se trouve déjà sur votre appareil. Sur la base, c’est la LED dans le coin supérieur droit. Le Photon, il est à côté de la broche de D7. photorésistance int = A0 ; C’est où est branché votre photorésistance. L’autre côté va à la broche « power » (ci-dessous). int puissance = A5 ; Il s’agit de l’autre extrémité de votre photorésistance. L’autre côté est branchée sur la broche « photorésistance » (voir ci-dessus). Les valeurs suivantes s’équiper lorsque votre appareil démarre et étalonne : int intactValue ; Il s’agit de la valeur moyenne que la photorésistance lecture lorsque le faisceau est intact. int brokenValue ; Il s’agit de la valeur moyenne que la photorésistance lit quand le faisceau est rompu. int beamThreshold ; Il s’agit d’une valeur à mi-chemin entre ledOnValue et ledOffValue, au-dessus de laquelle nous considérons le voyant lumineux est sur et ci-dessous qui nous supposerons il est éteint. bool beamBroken = false ; Cet indicateur serviront pour marquer si nous avons un nouveau statut ou maintenant. Nous l’utiliserons dans la boucle. Nous commençons avec la fonction de réglage. void setup() {/ / cette partie est essentiellement le même : pinMode(led,OUTPUT); / / Our LED pin est sortie (la LED s’allumant) pinMode(boardLed,OUTPUT); / / notre bord LED est sortie comme bien pinMode(photoresistor,INPUT); / / notre broche photorésistance est entrée pinMode(power,OUTPUT) (lecture de la photorésistance); / / la goupille de mise sous tension de la photorésistance est sortie (envoi une alimentation régulière) / / ensuite, écrivez la puissance de la photorésistance pour être le maximum possible , qui est 4095 en mode analogique. digitalWrite(power,HIGH) ; Puisque tout le monde met en place leurs leds différemment, nous allons également commencer en étalonnant notre photorésistance. Celui-ci va nécessiter certaines entrées de l’utilisateur ! Tout d’abord, la D7 LED s’allume pour vous dire de mettre la main devant le faisceau. digitalWrite(boardLed,HIGH) ; Delay(2000) ; Ensuite, la D7 LED s’éteint et le LED s’allume. digitalWrite(boardLed,LOW) ; digitalWrite(led,HIGH) ; Delay(500) ; Maintenant, nous allons prendre quelques lectures... int on_1 = analogRead(photoresistor) ; lire la photorésistance delay(200) ; attendre 200 millisecondes int on_2 = analogRead(photoresistor) ; lire la photorésistance delay(300) ; attendre 300 millisecondes / / maintenant flash pour nous faire savoir que vous avez pris les lectures... digitalWrite(boardLed,HIGH) ; Delay(100) ; digitalWrite(boardLed,LOW) ; Delay(100) ; digitalWrite(boardLed,HIGH) ; Delay(100) ; digitalWrite(boardLed,LOW) ; Delay(100) ; Maintenant, la LED de D7 ira à vous dire d’enlever la main... digitalWrite(boardLed,HIGH) ; Delay(2000) ; Le voyant de D7 passe OFF... digitalWrite(boardLed,LOW) ; // ... Et nous prendrons deux lectures plus. int off_1 = analogRead(photoresistor) ; lire la photorésistance delay(200) ; attendre 200 millisecondes int off_2 = analogRead(photoresistor) ; lire la photorésistance delay(1000) ; attendre 1 seconde / / clignoter la LED D7 sur et en dehors des trois fois pour nous faire savoir que nous sommes prêts à aller! digitalWrite(boardLed,HIGH) ; Delay(100) ; digitalWrite(boardLed,LOW) ; Delay(100) ; digitalWrite(boardLed,HIGH) ; Delay(100) ; digitalWrite(boardLed,LOW) ; Delay(100) ; digitalWrite(boardLed,HIGH) ; Delay(100) ; digitalWrite(boardLed,LOW) ; Maintenant, nous en moyenne le « on » et « off » valeurs pour obtenir une idée de ce que la résistance sera quand le voyant est allumé et éteint intactValue = (on_1 + on_2) / 2 ; brokenValue = (off_1 + off_2) / 2 ; Nous allons également calculer la valeur entre ledOn et ledOff, au-dessus duquel nous supposerons que le led est sur et sous laquelle nous supposons le voyant lumineux est éteint. beamThreshold = (intactValue + brokenValue) / 2 ; } / / Maintenant pour la boucle. void loop() {/ * dans cette fonction de boucle, nous allons vérifier pour voir si le faisceau a été rompu. Lorsque l’état de la change de faisceau, nous enverrons un Spark.publish() vers le nuage afin que si nous le voulons, nous pouvons vérifier par d’autres appareils lorsque la LED est allumée ou éteinte. Nous allons aussi allumer la LED D7 lorsque la photorésistance détecte un faisceau breakagse. * / if (analogRead(photoresistor) > beamThreshold) {/ * si vous êtes au-dessus du seuil, nous supposerons que le faisceau est intact. Si le faisceau était intact avant, cependant, nous n’avez pas besoin de changer quoi que ce soit. Nous allons utiliser l’indicateur beamBroken pour nous aider à découvrir ceci. Cet indicateur surveille l’état actuel de la poutre. Après que la poutre est cassée, il a la valeur TRUE et lorsque le faisceau se reconnecte, il est défini sur FALSE. * / if (beamBroken == true) {/ / si le faisceau a été rompu avant, alors c’est un nouveau statut. / / nous enverrons un publier vers le nuage et la LED s’allume. / / envoyer une publication à vos appareils... Spark.Publish("beamStatus","intact",60,Private) ; Et clignoter la LED intégrée. digitalWrite(boardLed,HIGH) ; Delay(500) ; digitalWrite(boardLed,LOW) ; Enfin, définissez l’indicateur afin de refléter l’état actuel de la poutre. beamBroken = false ; } else {/ / sinon, ce n’est pas un nouveau statut, et nous n’avons rien à faire.}} else {/ / si vous êtes en dessous du seuil, le faisceau est probablement cassé. si (beamBroken == false) {/ / envoyer une publication... Spark.Publish("beamStatus","Broken",60,Private) ; Et clignoter la LED intégrée. digitalWrite(boardLed,HIGH) ; Delay(500) ; digitalWrite(boardLed,LOW) ; Enfin, définissez l’indicateur afin de refléter l’état actuel de la poutre. beamBroken = true ; } else {/ / sinon, ce n’est pas un nouveau statut, et nous n’avons rien à faire.}} }