Étape 10 : Modification du code de l’arduino pour votre équipement – ancien code
Cette étape portera sur l’ancien code :
Défilement vers le bas à peu près à mi-chemin, il y a une rubrique intitulée
« / / / L’article suivant est pour allumer et éteindre des appareils individuels / / / »
Il s’agit de la section qui devront d’abord être traitées par.
Il s’ensuit 12 lignes de code à la recherche très similaire pour les différents appareils/lumières.
La première ligne de chaque instruction if suit la même structure :
ElseIf (packBuff [0] = « P » & & packBuff [1] == « x » & & packBuff [2] == « x »)
Il s’agit de la section dans laquelle vous spécifiez quel sélecteur depuis votre téléphone vous parlez. Par exemple, si vous voulez spécifier ce qui doit être fait lorsque vous appuyez sur un bouton qui est configuré pour envoyer le message P04 vous remplaceriez le code ci-dessus pour :
ElseIf (packBuff [0] = « P » & & packBuff [1] == « 0 » & & packBuff [2] == « 4 »)
Parce que tous les cabillots ont deux messages pouvant être envoyés (coller avec l’exemple P04, il peut être P04H ou P04L selon l’État auquel la bascule a été changé) il faut faire une logique de traiter les deux séparément. Comme ils ont tous deux commencent par P04 il est logique d’avoir une deuxième instruction nichée si .
Si (packBuff [3] == « H ») {}
Cela indique le code quoi faire si elle est activée. Les lignes du relevé deux plus bas :
else {}
indique le code quoi faire si la dernière lettre n’est pas H (L), ce qui signifie que vous pouvez spécifier ce que vous voulez qu’il fasse quand il est éteint.
Si vous utilisez un bouton plutôt qu’un bouton que vous pouvez vous débarrasser de l’instruction nichée si comme il ne sera pas un supplémentaire H ou L dans le message.
La ligne de code juste sous la fi » (packBuff [3] == « H ») {"est l’action à effectuer lorsqu’il est allumé.
setOnOff (3, 1, true) ;
Ce qui appelle une méthode nommée « setOnOff ». Le code pour cela peut être vu au fond de l’esquisse. Il s’occupe d’allumer les appareils et au large et pour un retour via le port série. La disposition du code est :
setOnOff (groupe d’int, int plug, boolean sur)
Donc, si je voulais la fiche qui a été installé comme groupe 3, channel 4 pour allumer que J’écrirais :
setOnOff (3, 4, vrai)
Si je voulais éteindre la même fiche, J’écrirais :
setOnOff (3, 4, faux) ;
Pour modifier le simple marche/arrêt des appareils individuels, que vous devrez remplir les messages corrects pour être lu (p. ex. le P04 dans l’exemple précédent) et remplissez l’interrupteur correct d’être affectés et si vous le voulez ou non (par exemple le switchOnOff (3, 4, vrai) dans l’exemple précédent).
À la fin de chaque tour marche/arrêt de chaque appareil, il y a une autre ligne de code :
multiOff = 1
Cette ligne indique que, lorsque le bouton est enfoncé, il s’arrête à n’importe quel moment de l’exécution qui implique retardé sur / offs. Son but est d’arrêter quoi que ce soit de façon aléatoire marche ou arrêt lorsque vous aurez terminé l’activité plus tôt que la course s’attendait à temps. Si vous ne voulez pas un bouton particulier d’annuler actuelles durées d’arrosage puis comment ou supprimer cette partie du code.
L’étape suivante traite de boutons que, lorsque pressé, aura une incidence sur plus d’une fiche douille (p. ex. entertainment allumer ou d’éteindre la TV, Xbox et système de son ou tous les voyants marche/arrêt). Pour ces vous tout simplement avoir plus d’un « switchOnOff » à terme (voir les exemples du présent déjà dans le code).
La section suivante, légèrement plus complexe est la section de « run-time ». Mise en place d’automatismes de chronométrage nécessite plus de quelques modifications.
La première chose à faire est de déclarer deux variables avant void(setup) : un int qui agira comme une valeur booléenne et un unsigned long qui va stocker l’heure actuelle.
Lorsque vous appuyez sur un bouton d’exécution vous voudrez pour activer ou désactiver tout ce que vous voulez fait au début. Vous devrez ensuite définir l’unsigned long à l’heure actuelle (en secondes depuis le 1er janvier 1970), puis l’int 1 (p. ex. teethStart = now.unixtime() ; et teethActive = 1;).
Lorsque l’int == 1 commencera au moment de l’exécution. L’exécution doit être spécifiée avant la section dans laquelle vous indiquez ce qui se passe lorsque vous appuyez sur chaque touche. Commencer avec une instruction if qui vérifie si l’int == 1. Dans l’affirmative, puis démarrer l’exécution (par exemple si (teethActive == 1) {}).
La section suivante sera le premier avec des éléments de calendrier. En mettant en place des instructions if , impliquant des questions de temps, vous pouvez définir des choses à allumer et éteindre à un nombre donné de secondes après que la touche a été enfoncée au départ.
Par exemple, si vous voulez quelque chose pour activer/désactiver après deux minutes puis la syntaxe est :
Si (teethStart + 120 == {now.unixtime())}
C’est essentiellement de vérifier si l’heure actuelle est le même que le temps s’appuie sur le bouton plus de 120 secondes.
À la fin d’une instruction d’exécution l’int d’activation doit être définie à 0 si le runtime n’est plus vérifié par le biais (rendant l’ensemble du système plus efficace).
La variable int active (par exemple teethActive) doit être ajoutée à la déclaration de multiOff.
Il y a une autre section, qui fait en sorte que pas plus d’un moment de l’exécution peut être active à un moment donné. Il conserve la dernière étant allumé en cours d’exécution.
Dans cette section tous les entiers (ints) activation est additionnées et si le résultat est supérieur à 1, plus d’un moment de l’exécution intervient en même temps. Si c’est le cas alors les temps au cours de laquelle les temps ont été allumés sont comparées et au moment de l’exécution avec le plus grand nombre (celui qui a commencé la dernière) est maintenu actif. Vous devrez ajouter un temps supplémentaires à cette section, mais en regardant le code qui est déjà là, il devrait être assez explicite.