Etape 11 : Modification du code de l’arduino pour votre équipement – nouveau code
En bas du code, vous trouverez des méthodes individuelles pour chaque commutateur ou la lumière (cuisine, chevet, etc..). Lorsque vous ajoutez un nouvel élément ou si vous voulez juste changer celles qui sont déjà là qu'il s’agit de la section, que vous devrez modifier tout d’abord. La structure d’un individu marche/arrêt méthode est :
switchName Sub (boolean sur, boolean multioff) {}
Les deux valeurs booléennes sont de savoir si l’interrupteur doit être activé (true) ou désactivé (false) et le second est de savoir si elle devrait s’éteindre tout temps chronométrés (pour s’assurer que choses n’aléatoirement activer/désactiver si vous finissez nécessitant une exécution avant elle attend de vous d’être fini).
La si instruction au sein de la méthode détermine si le commutateur est activé ou désactivé à l’aide d’une ligne de code qui ressemble à ceci :
setOnOff (x, x, sur) ;
ce qui appelle une méthode nommée « setOnOff ». Le code pour cela peut être vu vers le bas de l’esquisse. Cela prend soin de l’allumer et hors tension l’appareil et pour un retour via le port série. La disposition du code est :
setOnOff (groupe d’int, int plug, boolean sur)
La valeur booléenne « on » dans méthode de chaque appareil a déjà dit si vous voulez activer ou désactiver, vous devez seulement changer le groupe et brancher les valeurs pour chaque périphérique. Par exemple si je voulais tourner la fiche 4 dans le groupe 3, puis J’écrirais :
setOnOff (3, 4, sur) ;
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 suivante, qui devra être traitée.
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 bit 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 êtes arbitrage à. 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 de la bascule a été changé) il doit exister une logique de traiter les deux séparément. Comme ils ont tous deux commencent par P04 bit est logique d’avoir une deuxième nichée si déclaration.
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 au lieu d’un bouton, vous pouvez obtenir débarrasser de la nichée si fonction car 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é. Par exemple si vous voulez allumer la lampe de bureau vous appelez la méthode de « bureau » et lui dire que vous voulez qu’il soit sur et que vous voulez désactiver n’importe quel temps qui sont actuellement en cours :
Bureau (true, true) ;
Dans l’instruction « else », vous aurez besoin activer l’interrupteur même et encore une fois pour qu’il puisse annuler tout temps qui sont actuellement en action :
Bureau (false, true) ;
Si vous voulez plutôt cette touche particulière n’a pas désactiver n’importe quel temps, puis la deuxième variable doit être définie sur false (bureau (true, false); et bureau (false, false);)
La prochaine étape est 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) des boutons. Pour ces derniers, vous avez tout simplement plus d’un dispositif individuel méthode appelée (voir exemples de cela déjà dans le code).
La section 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 le bouton est enfoncé, 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. Avant la section où vous spécifiez que se passe-t-il chaque touche l’exécution doit être spécifiée. Démarrer avec un 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 si des déclarations impliquant temps interroge vous peuvent définir 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 trois minutes puis la syntaxe est :
Si (teethStart + 120 == {now.unixtime())}
C’est essentiellement de vérifier si le temps actuel est le même que le temps s’appuie sur le bouton Ajouter 120 secondes.
À la fin de l’instruction dans un moment de l’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 qu’un moment de l’exécution peut s’exécuter à 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 la réponse est supérieure à 1 alors plus d’un est actif en même temps. Si c’est le cas alors l’époque à laquelle ont commencé les temps est comparés et le runtime avec le plus grand nombre est maintenu actif. Vous devrez ajouter les durées d’arrosage supplémentaires à cette section, mais en regardant le code qui est déjà là, il devrait venir assez libre explicatives.