Etape 1: Le code
Le code génère arrêt Arduino documentation tels que
Knight Rider 2 pour l’utilisation de tableaux pour montages de broche
Bouton est ce que je cherchais à droite au début (note pour plus tard : v2, devrait probablement ajouter une résistance entre GND et les fils volants...)
Télécharger le fichier physio.pde (ou copiez le code d’en bas) et publiez votre microcontrôleur Arduino de la manière habituelle.
/*
RepWrap v1
Nikki pugh | Avril 2011 | www.npugh.co.uk
Moteur de vibration attaché à l’axe de 12
LED, attaché à la broche 13
Épingles à répétition 2-6
Broches de durée 7-11
*/
variables :
int repNumbers [5] = {//array stocker une sélection de valeurs de répétition
10,12,20,24,30} ;
int repPins [] = {}
2, 3, 4, 5, 6} ; un tableau de codes pin à laquelle rep boutons sont fixés
int repPinCount = 5 ; le nombre d’options de rep (c'est-à-dire la longueur du tableau)
int durationLengths [5] = {//array stocker une sélection de valeurs de durée et maintien en secondes
10,12,15,20,30} ;
int durationPins [] = {}
7, 8, 9, 10, 11} ; un tableau de codes pin pour quelle durée les boutons sont fixés
int durationPinCount = 5 ; le nombre d’options de durée (c'est-à-dire la longueur du tableau)
bouffées de chaleur sont utilisées comme une indication que la durée d’attente est presque terminée
flashOn int = 750 ; durée du compte à rebours clignote modifié pour
int flashOff = 250 ; durée du compte à rebours clignote au large pour
int flashRep = 3 ; pas de clignotements
flashTime int = (flashRep*(flashOn+flashOff)) ;
passage int = 3000 ; laps de temps entre les répétitions, millisecondes
int repState = 0 ; variable pour la lecture de l’état de sélecteur
int durationState = 0 ; variable pour la lecture de l’état de sélecteur
int thisRepPin = 0 ; autres variables
int thisDurationPin = 0 ;
int thisRepNumber = 0 ;
int thisDurationLength = 0 ;
int repNumber = 0 ;
int durationLength = 0 ;
int repStateFound = 0 ;
int durationStateFound = 0 ;
constantes :
const int buzzPin = 12 ; le nombre de l’axe de l’avertisseur sonore
const int LEDPin = 13 ; le nombre de l’axe de la LED
void setup() {}
Initialise les épingles en une sorties :
pinMode (LEDPin, sortie) ;
pinMode (buzzPin, sortie) ;
int thisRepPin ;
les éléments du tableau sont numérotées de 0 à (pinCount - 1).
Utilisez une boucle for pour initialiser chaque broche en tant que sortie :
pour (int thisRepPin = 0; thisRepPin < repPinCount ; thisRepPin ++) {}
pinMode (repPins [thisRepPin], entrée) ; broches à l’entrée de la valeur
digitalWrite (repPins [thisRepPin], HIGH) ; Allumez les résistances pullup interne
pinMode (repPins [thisRepPin], sortie) ; mettre la broche de sortie
}
int thisDurationPin ;
les éléments du tableau sont numérotées de 0 à (pinCount - 1).
Utilisez une boucle for pour initialiser chaque broche en tant que sortie :
pour (int thisDurationPin = 0; thisDurationPin < durationPinCount ; thisDurationPin ++) {}
pinMode (durationPins [thisDurationPin], entrée) ; broches à l’entrée de la valeur
digitalWrite (durationPins [thisDurationPin], HIGH) ; Allumez les résistances pullup interne
pinMode (durationPins [thisDurationPin], sortie) ; mettre la broche de sortie
}
Serial.Begin(9600) ; ouvrir le port série à 9600 bps
} //end mis en place
void loop() {}
démarrer le signal
pour (int i = 0; i < flashRep; i ++) {}
digitalWrite (LEDPin, basse) ;
Delay(flashOff) ;
digitalWrite (LEDPin, élevé) ;
Delay(flashOn) ;
digitalWrite (LEDPin, basse) ;
}
digitalWrite (buzzPin, HIGH) ;
Delay(Changeover) ;
digitalWrite (buzzPin, basse) ;
lire les broches de Rep, lorsque que vous trouviez celui qui est faible, c’est celle qui a été sélectionné
thisRepPin = 0 ;
repStateFound = 0 ;
{while(repStateFound==0)}
repState=digitalRead(repPins[thisRepPin]) ;
Si (repState == faible) {//has été raccordé à la terre
repStateFound = 1 ;
Serial.Print(thisRepPin) ;
Serial.println ("repStateFound = 1") ;
}
Si (repState == HIGH) {}
repStateFound = 0 ;
Serial.Print(thisRepPin) ;
Serial.println ("repStateFound = 0") ;
thisRepPin ++ ;
}
}
thisRepNumber = thisRepPin ;
Serial.Print ("thisRepNumber:") ;
repNumber = repNumbers [thisRepNumber] ;
Serial.println(repNumbers[thisRepNumber]) ;
lire les broches de durée, lorsque que vous trouviez celui qui est faible, c’est celle qui a été sélectionné
thisDurationPin = 0 ;
durationStateFound = 0 ;
{while(durationStateFound==0)}
durationState=digitalRead(durationPins[thisDurationPin]) ;
Si (durationState == faible) {}
durationStateFound = 1 ;
Serial.Print(thisDurationPin) ;
Serial.println ("durationStateFound = 1") ;
}
Si (durationState == HIGH) {}
durationStateFound = 0 ;
Serial.Print(thisDurationPin) ;
Serial.println ("durationStateFound = 0") ;
thisDurationPin ++ ;
}
}
thisDurationLength = thisDurationPin ;
Serial.Print ("thisDurationLength:") ;
durationLength = durationLengths [thisDurationLength] ;
Serial.println(durationLength) ;
durationLength = durationLength * 1000 ;
thisDurationPin = 0 ;
Éteignez les épingles pour économiser l’énergie
pour (int thisRepPin = 0; thisRepPin < repPinCount ; thisRepPin ++) {}
digitalWrite (repPins [thisRepPin], faible) ; désactiver toutes les goupilles de rep
}
Serial.println ("rep pins éteints") ;
pour (int thisDurationPin = 0; thisDurationPin < durationPinCount ; thisDurationPin ++) {}
digitalWrite (durationPins [thisRepPin], faible) ; désactiver toutes les goupilles de durée
}
Serial.println ("durée pins éteints") ;
maintenant aux exercices
pour (int count = 0; count < repNumber ; count ++) {//repeat ce programme autant de fois qu’il sont a répétitions
Delay(durationLength-flashTime) ; Attendez que la longueur de la durée moins la longueur du temps pour les bouffées de chaleur countown
pour (int i = 0; i < flashRep; i ++) {//do le compte à rebours clignote
digitalWrite (LEDPin, basse) ;
Delay(flashOff) ;
digitalWrite (LEDPin, élevé) ;
Delay(flashOn) ;
digitalWrite (LEDPin, basse) ;
ce rep est maintenant terminé
}
Serial.println(Count+1) ; reps Combien avons-nous fait ?
Buzz le moteur pour un passage
digitalWrite (buzzPin, HIGH) ;
Delay(Changeover) ;
digitalWrite (buzzPin, basse) ;
} //end d’ensemble
long buzz pour marquer la fin du jeu
digitalWrite (buzzPin, HIGH) ;
Delay(7000) ;
digitalWrite (buzzPin, basse) ;
la LED donc signaler la fin de la série - quand vous voyez cela, vous devez mettre hors tension ou démarrer une autre série de Flash
tout en (vrai) {}
digitalWrite (LEDPin, élevé) ;
Delay(500) ;
digitalWrite (LEDPin, basse) ;
Delay(1000) ;
}
} //end boucle