Étape 3: Le Code
Je dois vraiment remercier bwrussell pour son aide avec ce projet. Je lui ai posé plusieurs questions codage et il a répondu chacun d’eux dans les moindres détails, donc je pourrais comprendre. Il sait beaucoup plus sur l’Arduino et le codage que je fais, et je n’aurais pas pu faire sans lui. Il a été une ressource fantastique et juste un très gentil garçon Instructable-maker.
Voici le code que j’ai utilisé...
/ * Ce code est pour mon contrôleur Arduino/Bluetooth/Android. Une application Android enverra un spécifique « byte » des données Algorithme: 4 broches sont déclarées, pinA - pinD. Voici les broches 4-7 sur l’Arduino. Commande est l’octet de données que le code
Ce code, l’interrupteur... instruction case reçoit le « byte » et tourne broches ou désactiver selon ce qu’il reçoit.
reçoit. rHigh et rLow sont utilisés pour les valeurs minimum et maximum de délai aléatoire. Le programme d’installation définit pinA - pinD comme sorties
et les place tout comme éteint. Il commence alors le transfert série, si un octet est reçu, il est défini comme commande. Dans la boucle
cas 1-4 il suffit d’activer ou désactiver la pinA - pinD. Cas 5 définit toutes les broches comme aléatoire. Cas 6 allume toutes les goupilles. Cas 7 tours
toutes les broches au large. Cas 8 démarre un modèle clignotant. */
const int pinA = 4 ;
const int pinB = 5 ;
const int pinC = 6 ;
const int pinD = 7 ;
commande de l’octet = 0 ;
const int rHigh = 555 ;
const int rLow = 100 ;
int randomPin ;
Sub pinDo (int code pin) ;
void allOn() ;
void allOff() ;
void randomStart() ;
void flashThrough() ;
void setup()
{
pinMode (pinA, sortie) ; la valeur de la broche de relais en tant que sortie
pinMode (pinB, sortie) ; //
pinMode (pinC, sortie) ; //
pinMode (pinD, sortie) ; //
allOff() ; Assurez-vous que toutes les broches sont désactivés pour commencer
Serial.Begin(9600) ;
Si (Serial.available() > 0) / / Start transfert série
{
commande = Serial.read() ; Commande Set pour égaler les données sérielles
}
}
void loop()
{
Si (Serial.available() > 0)
{
commande = Serial.read() ;
interrupteur (commande)
{
cas 1: / / Relais 1
pinDo (pinA) ;
rupture ;
case 2: / / Relais 2
pinDo (pinB) ;
rupture ;
case 3: / / Relais 3
pinDo (pinC) ;
rupture ;
case 4: / / 4 relais
pinDo (DINP) ;
rupture ;
cas 5: / / la fonction aléatoire
randomStart() ;
rupture ;
case 6: / / allumer toutes les broches
allOn() ;
rupture ;
cas 7: / / désactiver toutes les broches
allOff() ;
rupture ;
cas 8: / / Start modèle clignotant
tandis que (commande! = 6 & & commande! = 7)
{
flashOn() ;
commande = Serial.read() ; Recherchez de nouvelles données serial
}
}
}
}
Sub pinDo(int pin)
{
Si (digitalRead(pin) == faible)
{
digitalWrite (tige, haute) ;
}
d’autre
{
digitalWrite (broches, faible) ;
}
}
Sub randomStart ()
{
tandis que (commande! = 6 & & commande! = 7)
{
randomPin = random (pinA, pinD + 1) ;
Si (digitalRead(randomPin) == faible)
{
digitalWrite (randomPin, HIGH) ;
retard (aléatoire (rLow, rHigh)) ;
}
d’autre
{
digitalWrite (randomPin, basse) ;
retard (aléatoire (rLow, rHigh)) ;
commande = Serial.read() ; Recherchez les nouvelles données en série, dans l’affirmative, sortie le clignotement aléatoire
/ * Ces 2 si les déclarations sont présentes dans le 5ème cas parce que je voulais les broches à immédiatement
activer ou désactiver la fonction de la commande qu’il reçoit alors que dans la partie aléatoire de code.* /
Si (commande == 6)
{
allOn() ;
}
Si (commande == 7)
{
allOff() ;
}
}
}
}
Sub flashOn ()
{
digitalWrite (pinA, HIGH) ; tout sur
Delay(150) ;
digitalWrite (pinB, HIGH) ;
Delay(150) ;
digitalWrite (pinC, HIGH) ;
Delay(150) ;
digitalWrite (pinD, HIGH) ;
Delay(400) ;
allOff() ;
allOn() ;
allOff() ;
allOn() ;
allOff() ;
flashThrough() ;
flashThrough() ;
flashBack() ;
flashBack() ;
}
allOn Sub ()
{
digitalWrite (pinA, HIGH) ;
digitalWrite (pinB, HIGH) ;
digitalWrite (pinC, HIGH) ;
digitalWrite (pinD, HIGH) ;
Delay(300) ;
}
Sub allOff ()
{
digitalWrite (pinA, faible) ; prochaine étape
digitalWrite (pinB, faible) ;
digitalWrite (pinC, faible) ;
digitalWrite (pinD, faible) ;
Delay(350) ;
}
Sub flashThrough ()
{
digitalWrite (pinA, HIGH) ; prochaine étape
Delay(200) ;
digitalWrite (pinA, faible) ;
digitalWrite (pinB, HIGH) ;
Delay(200) ;
digitalWrite (pinB, faible) ;
digitalWrite (pinC, HIGH) ;
Delay(200) ;
digitalWrite (pinC, faible) ;
digitalWrite (pinD, HIGH) ;
Delay(200) ;
digitalWrite (pinD, faible) ;
}
retour de flamme Sub ()
{
digitalWrite (pinD, HIGH) ; prochaine étape
Delay(200) ;
digitalWrite (pinD, faible) ;
digitalWrite (pinC, HIGH) ;
Delay(200) ;
digitalWrite (pinC, faible) ;
digitalWrite (pinB, HIGH) ;
Delay(200) ;
digitalWrite (pinB, faible) ;
digitalWrite (pinA, HIGH) ;
Delay(200) ;
digitalWrite (pinA, faible) ;
}