Étape 8: Étape 8: Télécharger le Code de l’Arduino
• Télécharger programme ArduinoJ’ai joint le code dans un fichier .zip. Voici le texte :
/*
À partir de 03:00 le 20 octobre 2012, il s’agit de la plupart des version de travail avec tout ce qu’il !
Cette version peut être téléchargée à 2 périphériques configurés avec un récepteur sans fil sur la broche 4
et un émetteur sans fil sur la broche 3 (et à partir de cette époque est actuellement sur les deux mes appareils de test)
Tour à tour sur et en dehors d’un système de rendement lumineux alimenté raccordé au numérique
broche 9 lorsqu’en appuyant sur un bouton poussoir relié à la broche 2.
Envoie un signal RF (un message de la lettre « A » par l’intermédiaire de VirtualWire) aux autres périphériques exécutant le même programme,
amenant à se comporter comme si leur touche a été enfoncée.
Sondages pour les messages de RF (à l’aide de la bibliothèque VirtualWire) ; réception de tout message sur le canal provoque unité
se comporter comme si la touche a été enfoncée.
TO : Sondage pour un message spécifique
Le circuit :
* LED joint de pin 13 à terre (pour le débogage)
* External lights circuit attaché jusqu'à la broche 9
* bouton poussoir joint à pin 2 de + 5V
* Résistance de K 10 attaché à la broche 2 du sol
Voir Sommaire de l’INB OmniGraffle diagramme pour un mashup de ce qui précède avec le circuit d’éclairage (sans dispositifs RF)
http://bildr.org/2011/03/High-Power-Control-with-Arduino-and-tip120/
créé 2005
par DojoDave < http://www.0j0.org>
mis à jour le 30 août 2011
par Tom Igoe
mis à jour le 20 octobre 2012
par Jason Taylor
mis à jour le 8 novembre 2012
par Thomas Deckert
Exemple de code original est dans le domaine public, y compris le code exemple bouton de
http://www.Arduino.cc/en/Tutorial/Button
et des exemples de transmission/réception de chantier VirtualWire
*/
#include < VirtualWire.h >
les constantes ne changeront pas. Ils sont utilisés ici pour
Définissez les codes pin :
const int buttonPin = 2 ; le nombre de la tige poussoir
const int ledPin = 9 ; le nombre de l’axe de rendement lumineux - n’oubliez pas « ledPin » ici signifie « feux extérieurs »
const int RF_TX_PIN = 3 ; le nombre de l’axe pour l’émetteur
const int RF_RX_PIN = 4 ; le nombre de la broche pour le récepteur
const int debugLED = 13 ; le nombre de la broche pour le débogage (par défaut) a conduit sur le bouclier
variables vont changer :
buttonState booléen = false ; variable pour la lecture de l’état de bouton poussoir
oldButtonState booléen = buttonState ;
ledState booléen = false ;
Boolean commencé = false ; démarre une séquence
long waitUntil = 0 ;
long startTime = 0 ;
long flashStartTime = 0 ;
holdTime int = 12000 ; durée de la séquence de la cale
flashTime int = 15000 ; durée de la séquence complète de flash
stroboscope int = 500 ; durée d’un flash
Duree de l’int = 0 ;
void setup() {}
Serial.Begin(9600) ;
initialiser les broches de la LED en tant que sortie :
pinMode (ledPin, sortie) ;
initialiser la tige poussoir comme entrée :
pinMode (buttonPin, entrée) ;
vw_setup(2000) ; Bits par seconde
vw_set_tx_pin(RF_TX_PIN) ; Le programme d’installation transmettre broche
vw_set_rx_pin(RF_RX_PIN) ; Le programme d’installation recevoir code pin.
vw_rx_start() ; Commencer l’exécution de PLL récepteur
}
void loop() {}
Chaque fois par le biais de loop(), affectez la même valeur que la variable d’État Pin 9
digitalWrite (ledPin, ledState) ;
lire la valeur du bouton au début de la boucle, avant de faire quoi que ce soit
buttonState = digitalRead(buttonPin) ;
déclencheurs plus léger temps chaque fois que vous appuyez sur le bouton--Ajouter debounce si le temps le permet
Si (buttonState! = oldButtonState) startSeq() ; toute modification d’état de bouton temps sur que nous ajoutons des temps de lumières
trucs pour gérer la réception d’un message d’un autre appareil
droit aussi s’étend maintenant temps même si le bouton a été activé sur place et en face, en même temps !
uint8_t buf [VW_MAX_MESSAGE_LEN] ;
uint8_t buflen = VW_MAX_MESSAGE_LEN ;
Si (vw_get_message (buf, & buflen)) {/ / Non-bloquant
int i ;
Serial.Print ("a:") ;
pour (i = 0; i < buflen; i ++) {}
digitalWrite (debugLED, en haut) ; test LED
Serial.println (buf [i], HEX) ;
}
digitalWrite (debugLED, faible) ;
startSeq() ; tout moment nous faire passer un message, nous ajoutons des temps de lumières sur
}
Si (démarré) {/ / le bouton est enfoncé, alors
code de clignotant de travail précédent
Si (millis() > = (flashStartTime)) {/ / si la LED a été plus souvent le temps d’attente...
Si (millis() < = (flashStartTime + flashTime)) {/ / inscrire séquence flash s’il n’a pas encore entré
Si (((millis() - flashStartTime) mode stroboscopique %) == 0) {/ / activer/désactiver chaque durée de stroboscope. PROBLÈME LIGNE ! (dit Jake)
ledState =! ledState ;
Serial.println(Millis() - flashStartTime, DEC) ;
}
}
else {(ledState = false); a commencé = false;} / / arrête après séquence flash
}
}
lire la valeur du bouton à la fin de boucle pour voir si ça change
oldButtonState = buttonState ;
}
void startSeq () {/ / donc actuellement si l’état du bouton change dans les deux sens nous obtenons un autre début de seq... ?
code pour envoi un message à un autre kit lumière
const char * msg = « A » ;
digitalWrite (debugLED, true) ; activer le débogage de LED
Serial.println("SS") ;
vw_send ((uint8_t *) msg, strlen(msg)) ;
vw_wait_tx() ; Attendez que le message entier a disparu
Serial.println("es") ;
digitalWrite (debugLED, false) ; désactiver le débogage de LED
fin du code pour l’envoi de message à un autre kit lumière
maintenant, nous allons obtenir les lumières sur ce mât clignotant !
commencé = true ;
startTime=millis() ; enregistrements lorsqu’ils sont dans le programme s’appuie sur le bouton
flashStartTime = startTime + holdTime ; séquence de clignotement commencera après la tenue de séquence
waitUntil = startMillis ;
ledState = true ; allumer la LED et lance la séquence de chaque fois que vous appuyez sur le bouton
}