Étape 3: codage
Pop Quiz : dans la vidéo, quel article du code s’exécute comme le commutateur est sous tension. Indice, il commence avec le commutateur en position et je mettez le dans l’ordre de 1 sur 5 à droite puis retour à 1 à la fin. Toutefois, les sections du code ne sont pas séquentielles ; IE: position de l’interrupteur 1 n’exécute pas le code dans la section étiquetée 1er dans le sketch. Je vais vous donner à celui-ci - interrupteur position 1 = CA: dans le sketch et CA: est la dernière section dans le sketch, pas le premier comme un pourrait soupçonner.
La j’ai ce travail consiste à vérifier les broches analogiques (2-6) pour la tension de l’interrupteur rotatif. Je ne dérange pas avec n’importe quel math fantaisie ou quoi que ce soit ici. Après avoir suivi les broches que j’ai vu qu’ils toujours enregistré un nombre autour de 20-30, à l’exception de la tige de que l’interrupteur a été actuellement tension d’alimentation à. Que la broche serait autour de quelque chose comme 500-600 (Désolé, ne me souviens pas le nombre exact). Alors j’ai juste le look de code pour une épingle c’est > 200, puis exécutez la partie correspondante du code que je veux pour cette position de l’interrupteur.
Croquis de boîte contrôle pour le contrôle de la circulation ARROWSTIK light bar, rédigé par Bradley S. Worthington-White
DÉFINITION DES CONSTANTES
Les relais utilisés sont normalement fermés, R_ON & R_OFF ci-dessous simplifier l’écriture l’esquisse d’un peu plus facile, retour de R_ON et de R_OFF pour les relais normalement ouverts
const int R_ON = faible ; Relais
const int R_OFF = élevé ; Relais OFF
définition NIP pour les feux de la rampe d’éclairage
const int LArrow = 2 ; Flèche vers la gauche (un voyant)
const int deux = 3 ; Deux feux extérieur à gauche
const int Centre = 4 ; Centrer les deux feux
const int RTwo = 5 ; Juste deux lumières extérieures
const int RArrow = 6 ; Flèche (une lumière) de droite
DÉFINITION DES VARIABLES
le waittime(s) ci-dessous est modifiés dans les différentes sections de l’esquisse, le cas échéant
waittime int ; waittime
int waittime2 ; deuxième waittime
int waittime3 ; et un troisième waittime
void setup()
{
s’assurer que tous les voyants sont éteints au démarrage ou reset
digitalWrite (RArrow, R_OFF) ;
digitalWrite (RTwo, R_OFF) ;
digitalWrite (Center, R_OFF) ;
digitalWrite (deux, R_OFF) ;
digitalWrite (LArrow, R_OFF) ;
déterminer les modes de la broche numérique pour les relais de commutation
pinMode (RArrow, sortie) ;
pinMode (RTwo, sortie) ;
pinMode (Centre, sortie) ;
pinMode (deux, sortie) ;
pinMode (LArrow, sortie) ;
modes de mettre broche analogique pour l’entrée le sélecteur en 5 position
pinMode (entrée, A1) ;
pinMode (entrée, A2) ;
pinMode (entrée, A3) ;
pinMode (entrée, A4) ;
pinMode (entrée, A5) ;
}
void loop()
{
Assurez-vous que la valeur de toutes les broches analogiques est zéro (0) au démarrage ou réinitialiser
analogWrite(A1,0) ;
analogWrite(A2,0) ;
analogWrite(A3,0) ;
analogWrite(A4,0) ;
analogWrite(A5,0) ;
Commutateur: / / lit la position de l’interrupteur et va à la section étiquetée dans sketch qui s’applique
Si (analogRead(A1) > 200) goto CA1 ;
ElseIf (analogRead(A2) > 200) goto LA1 ;
ElseIf (analogRead(A3) > 200) goto RA1 ;
ElseIf (analogRead(A4) > 200) goto AL1 ;
ElseIf (analogRead(A5) > 200) goto KR1 ;
KR1 : //Knight Rider
définition de waittime(s) pour cette séquence
waittime = 75 ;
waittime2 = 25 ;
digitalWrite(LArrow,R_ON) ;
Delay(waittime) ;
digitalWrite(LTwo,R_ON) ;
Delay(waittime2) ;
digitalWrite(LArrow,R_OFF) ;
Delay(waittime) ;
digitalWrite(Center,R_ON) ;
Delay(waittime2) ;
digitalWrite(LTwo,R_OFF) ;
Delay(waittime) ;
digitalWrite(RTwo,R_ON) ;
Delay(waittime2) ;
digitalWrite(Center,R_OFF) ;
Delay(waittime) ;
digitalWrite(RArrow,R_ON) ;
Delay(waittime2) ;
digitalWrite(RTwo,R_OFF) ;
Delay(waittime) ;
digitalWrite(RTwo,R_ON) ;
Delay(waittime2) ;
digitalWrite(RArrow,R_OFF) ;
Delay(waittime) ;
digitalWrite(Center,R_ON) ;
Delay(waittime2) ;
digitalWrite(RTwo,R_OFF) ;
Delay(waittime) ;
digitalWrite(LTwo,R_ON) ;
Delay(waittime2) ;
digitalWrite(Center,R_OFF) ;
Delay(waittime) ;
digitalWrite(LArrow,R_ON) ;
Delay(waittime2) ;
digitalWrite(LTwo,R_OFF) ;
Delay(waittime) ;
digitalWrite(LArrow,R_OFF) ;
Goto interrupteur ; chaque section retourne toujours pour passer pour vérifier si la position de l’interrupteur a changé
LA1 : séquence de direction //LEFT
waittime = (125) ; définition de waittime(s) pour cette séquence
waittime2 = (200) ;
waittime3 = (50) ;
digitalWrite (RTwo, R_ON) ; commence par allumer les lumières dans l’ordre de gauche à droite
Delay(waittime) ;
digitalWrite (Center, R_ON) ;
Delay(waittime) ;
digitalWrite (deux, R_ON) ;
Delay(waittime) ;
digitalWrite (LArrow, R_ON) ;
Delay(waittime) ;
digitalWrite (LArrow, R_OFF) ; Flèche gauche clignote s’allume après tout
Delay(waittime2) ;
digitalWrite (LArrow, R_ON) ;
Delay(waittime2) ;
digitalWrite (LArrow, R_OFF) ;
Delay(waittime2) ;
digitalWrite (LArrow, R_ON) ;
Delay(waittime2) ;
digitalWrite (LArrow, R_OFF) ;
tourner les lumières, de droite à gauche - rapidement
digitalWrite (RTwo, R_OFF) ;
Delay(waittime3) ;
digitalWrite (Center, R_OFF) ;
Delay(waittime3) ;
digitalWrite (deux, R_OFF) ;
Delay(waittime3) ;
Goto interrupteur ; Vérifiez la position de l’interrupteur
RA1: / / séquence de direction à droite
waittime = (125) ; définition de waittime(s) pour cette séquence
waittime2 = (200) ;
waittime3 = (50) ;
commence par allumer les lumières dans l’ordre de gauche à droite
digitalWrite (deux, R_ON) ;
Delay(waittime) ;
digitalWrite (Center, R_ON) ;
Delay(waittime) ;
digitalWrite (RTwo, R_ON) ;
Delay(waittime) ;
digitalWrite (RArrow, R_ON) ;
Delay(waittime) ;
Flèche droite clignote s’allume après tout
digitalWrite (RArrow, R_OFF) ;
Delay(waittime2) ;
digitalWrite (RArrow, R_ON) ;
Delay(waittime2) ;
digitalWrite (RArrow, R_OFF) ;
Delay(waittime2) ;
digitalWrite (RArrow, R_ON) ;
Delay(waittime2) ;
digitalWrite (RArrow, R_OFF) ;
tourner les lumières, de gauche à droite - rapidement
digitalWrite (deux, R_OFF) ;
Delay(waittime3) ;
digitalWrite (Center, R_OFF) ;
Delay(waittime3) ;
digitalWrite (RTwo, R_OFF) ;
Delay(waittime3) ;
Goto interrupteur ; Vérifiez la position de l’interrupteur
AL1: / / clignotant séquence avec lumière Centre équilibre et clignoter deux et RTwo des deux côtés du centre
waittime = (125) ; définition de waittime(s) pour cette séquence
waittime2 = (50) ;
Si (Centre == faible) cont goto ; évite de jouer avec la lumière du centre, après que c’est
digitalWrite(Center,R_ON) ;
CONT :
digitalWrite (deux, R_ON) ;
Delay(waittime) ;
digitalWrite (deux, R_OFF) ;
Delay(waittime2) ;
digitalWrite(LTwo,R_ON) ;
Delay(waittime) ;
digitalWrite(LTwo,R_OFF) ;
Delay(waittime2) ;
digitalWrite (RTwo, R_ON) ;
Delay(waittime) ;
digitalWrite (RTwo, R_OFF) ;
Delay(waittime2) ;
digitalWrite (RTwo, R_ON) ;
Delay(waittime) ;
digitalWrite (RTwo, R_OFF) ;
Delay(waittime2) ;
Goto interrupteur ; Vérifiez la position de l’interrupteur
CA1: / / lumières sur stable (sans clignoter), la flèche s’allume à chaque fin de séjour hors
waittime = (10) ; définition de waittime(s) pour cette séquence, juste un léger retard pour la stabilité
digitalWrite (Center, R_ON) ;
Delay(waittime) ;
digitalWrite (deux, R_ON) ;
Delay(waittime) ;
digitalWrite (RTwo, R_ON) ;
Delay(waittime) ;
Delay(1000) ; attend une seconde avant de vérifier la position du commutateur à nouveau
Goto interrupteur ; vérifier la position de l’interrupteur, mais vous saviez que par savez
} / / Fin