Étape 2: Programmation du bijou
Pour programmer le bijou, j’ai suivi le guide d’aide Adafruit à https://learn.adafruit.com/introducing-trinket
La langue est la même que l’Arduino, mais le programme d’installation pour le programmeur est différent.
J’ai écrit le code pour garder trace du temps, allumer le moniteur de 19:00 -11:59 AM et le week-end et mettez l’appareil hors de midi -6:59 PM. Il y a une complication avec chronométrage de la babiole, alors vous devrez fondamentalement double check it et aussi près que possible de l’obtenir. Chaque fois que cristal utilisé peut varier si simplement dire 1000 millis = seconde ne soient pas exacte. Le nombre qui a fonctionné pour mon bijou était 30235 millis = une minute. Je suppose que le taux de processeur fonctionne à la moitié de ce qu’il est censé alors 1 minute = 30000 millisecondes plutôt que 60000, ainsi que 235 supplémentaire pour tenir compte de l’erreur que j’ai trouvé.
Voir mon code ci-dessous et ci-joint :
Actuellement programmé pour être branché à 10:00 le samedi.
Pour changer cela modifier jour et/ou heure inférieure int jour = 7 ; 1 = dimanche... 7 = samedi int heure = 10 ; nécessite le plug in à midi / / / int relayPinoff = 1 ; le nombre de broches de la LED, INA int relayPin = 0 ; le nombre de l’axe de relais, INB //OUTA en bas à gauche, OUTB à droite int minute = 0 ; int puissance = 1 ; 0 = off 1=on(NC) relais va commencer en mode de NC, power sur unsigned long previousMillis = 0 ; les variables de suivi est de type long, car le temps, mesuré en millisecondes, / / deviendra rapidement un plus grand nombre que peuvent être stockés dans un intervalle long int. = 30235 ; intervalle d’une minute. Millis n’est pas très précise
void setup() {/ / définir les broches numériques comme sorties : pinMode (relayPinoff, sortie); pinMode (relayPin, sortie); digitalWrite (relayPinoff, basse); digitalWrite (relayPin, HIGH); //switch le relais à NC (chauffage) delay(25) ; //for temps du relais de 7ms digitalWrite (relayPin, basse);} void loop() {//rollover à 4,294,967,295ms = 4,294,967s = 71582.78 m = 1193.046 h = 49,7 jour //even si après retournement courant - précédente calculera la différence correcte / / 7302-4,294,967,255 = 7342ms //1hr=60min=3600s=3600000ms , 1 m = 60 s = 60000ms / / vérifier pour voir si il est temps de passer le relais ; autrement dit, si le temps / / est entre midi ou 1900 hrs la relais/alimentation pour appareil de chauffage doit être éteint. Si la différence entre l’heure actuelle et la dernière fois mis à jour / / la minute est plus grande que l’intervalle, c'est-à-dire, il a été encore une minute / / puis mise à jour le compteur des minutes et compteur d’heures si nécessaire. unsigned long currentMillis = millis() ; Si (currentMillis - previousMillis > intervalle) {//this section s’exécute chaque minute si (minute == 59) {minute = 0; si (heure == 23) {heure = 0; //midnight si (jour < 7) {jour = jour + 1;} d’autre {jour = 1;}} else {heure = heure + 1;}} d’autre {minute = + 1 minute;} previousMillis = currentMillis ;
Si (jour > = 2 & & jour < = 6) {//weekdays si (heure > = 12 & & heure < 19 & & power == 1) {//power éteint pendant le pic digitalWrite de midi-19:00 hrs (relayPinoff, HIGH); //switch le relais à aucun (chauffage éteint) //digitalWrite (LEDPin, basse); //mark ce radiateur est éteint delay(25) ; temps relais //for de 7ms digitalWrite (relayPinoff, basse); //latching relais ne nécessite aucune alimentation après mise sous tension = 0;} ElseIf (heure > = 19 || heure < 12 & & power == 0) {digitalWrite (relayPin ÉLEVÉ) ; passer le relais à NC (chauffage) //digitalWrite (LEDPin, élevé) ; marquer que chauffe-eau est en fonction de la delay(25) ; pour le temps du relais de 7ms digitalWrite (relayPin, basse) ; puissance = 1 ; {}} ElseIf (jour == 1 || jour == 7 & & power == 0) {//unnecessary elseif, mais montre point digitalWrite(relayPin, HIGH) ; //switch le relais à NC (chauffage) //digitalWrite (LEDPin, HIGH); //mark ce chauffe-eau est en fonction de la delay(25) ; //for temps du relais de 7ms digitalWrite (relayPin, basse); puissance = 1;}} }