Étape 4: Le projet de programmation
Maintenant que nous avons terminé câblage vers le haut de notre projet, il est temps d’écrire du code. Je suis notamment tout le code ci-dessous, mais nous parlera de la théorie première un peu.Le code que j’ai fournis compile à 1560 octets. Les poignées de l’Arduino programmes jusqu'à 14336 octets en taille. Ce petit projet reprend de plus de 10 % de la capacité de l’Arduino, mais ce n’est vraiment pas code optimal. C’est un tutoriel, donc j’ai essayé d’être clair et plutôt efficace. Je ne serais pas du tout surpris de trouver qu'il pourrait être réécrit dans le demi-espace ou moins.
Chaque Arduino « croquis » dispose de deux zones obligatoires : le programme d’installation et de la boucle. Le programme d’installation s’exécute une fois après le démarrage du programme. Cela vous permet de configurer l’état initial du Conseil : les broches sont entrées, qui sont sorties et sorties commencent si haute ou basse. La boucle est la section du programme executived à plusieurs reprises dès l’installation terminée. Il n’y a aucun « fin » ou « quitter » à un programme Arduino--il n’y a nulle part pour sortir à ! Si vous avez l’expérience de programmation, vous reconnaîtrez immédiatement le langage utilisé pour programmer l’Arduino est notre bon vieux copain C. Si ce n’est pas le cas, vous pouvez ramasser les bases juste en allant sur mon code et les autres exemples dans le kit de développement. Nombreux didacticiels C sont également disponibles sur le web.
Vous pouvez copier et coller le code dans votre environnement de développement Arduino, puis vérifier et téléchargez-le. Si tout est bon, vous devriez obtenir des lumières blinky et être capable de faire varier la vitesse en appuyant sur le bouton.
Maintenant une section par section de ventilation de l’esquisse :
1) tout d’abord, nous commençons par définir quelques variables. Une grande partie de cette zone est de la compréhension humaine et puisse être ignorée par souci d’efficacité. Par exemple, j’ai défini une variable appelée « ledPinRed » et égal au 13 (j’ai utilisé trois couleurs de LED--le rouge un est relié à la broche numérique 13). J’aurais pu utiliser « 13 » directement dans le programme, mais qui le rend beaucoup plus difficile à comprendre. Les commentaires en regard des variables note ce que chacun est pour.
2) le programme d’installation. Ici j’ai mis l’axe auquel le bouton-poussoir est attaché comme une broche d’entrée. L’Arduino cherchera à recevoir des informations (signaux haute ou basse) il. J’ai mis les connexions de LED à être sorties où le Conseil fixera la tension haute ou basse (5V ou 0V) selon qu’il conviendra. Enfin, je me suis tourné sur mon vert conduit et fait en sorte que les autres ont été mis hors service.
3) getButton : une fonction (juste un conteneur pour le code pour tout les non-programmeurs lisez ceci) qui peut être appelée depuis la boucle principale pour savoir si nous avons appuyé sur le bouton. Il conserve une trace de l’état actuel de la touche et l’état antérieur de la touche, la dernière fois nous regarda. Cela nous permet de répondre uniquement aux individuels sur les touches : maintenez le bouton enfoncé ne compte que comme une simple pression sur. C’est important quand les lumières changent très rapidement qu’il y ait très difficile à contrôler.
4) changeLights : une autre fonction. Celui-ci est appelé chaque fois que nous devons passer d’une LED à l’autre. Celui qui est sur obtient éteint et celle qui suit dans l’ordre obtient. Il met également à jour la variable « stromgeführten » donc nous pouvons garder une trace de LED est actuellement actif.
5) boucle de : la boucle principale. Ici, nous faisons tout d’abord un appel à vérifier sur le bouton. Si nous trouvons le bouton n’a pas été enfoncé, mais il est maintenant, nous ajoutons à la variable « currentSpeed ». Si nous allons très vite, nous réinitialisons currentSpeed à 1--une boucle autour de sorte que nous pouvons revenir à des vitesses lentes. Après cela...
... Eh bien, nous avons atteint une ligne laide qui détermine s’il est temps de changer à la prochaine LED. Millis() est une fonction intégrée de Arduino qui garde une trace de combien de temps la Commission gère le programme en cours. Tout ce que nous faisons ici est de découvrir si suffisamment de temps s’est écoulé que nous devrions changer au prochain feu. Dans l’affirmative, nous appelons la fonction « changeLights » pour y arriver.
Enfin, voici le code (AVERTISSEMENT : il perd un peu de mise en forme lorsque posté ici, n’est pas aussi jolie qu’elle pourrait l’être) :
/*
- Arduino tutoriel de kevin
*
- Ce logiciel est conçu pour être utilisé avec mon Arduino All-in-One Getting Started Guide
- plus de chez
*
*/
Notez que ces variables sont toutes GLOBAL dans la portée, donc ils vont travailler à l’intérieur de nos appels de fonction
int ledPinRed = 13 ; Mettre en place des sorties numériques pour LEDs
int ledPinYellow = 12 ;
int ledPinGreen = 11 ;
int switchPin = 2 ; Configuré pour lire l’état de l’interrupteur d’entrée numérique 2
int stromgeführten = 1 ; Vert = 1, jaune = 2, rouge = 3
int currentSpeed = 1 ; Détermine à quelle vitesse nous passer entre les feux.
int buttonWas = 0 ; L’état de l’interrupteur (poussé = 1, ne pas poussé = 0) la dernière fois nous nous sommes penchés
int buttonIs = 0 ; État actuel de l’interrupteur
unsigned long timer = 0 ; Une minuterie pour garder une trace de là où nous sommes.
void setup() / / exécute une seule fois, au démarrage du programme (« sketch »)
{
pinMode (switchPin, entrée) ; Raconte l’Arduino pour traiter le switchPin en entrée
pinMode (ledPinRed, sortie) ; Raconte l’Arduino que la broche de la LED rouge est pour la sortie
pinMode (ledPinYellow, sortie) ;
pinMode (ledPinGreen, sortie) ;
digitalWrite (ledPinGreen, HIGH) ; LED vert s’allume au démarrage
digitalWrite (ledPinRed, basse) ; LED rouge s’éteint au démarrage
digitalWrite (ledPinYellow, basse) ; LED jaune s’éteint au démarrage
}
void getButton() {/ / nous allons voir ce que le bouton est fait, allons-nous ?
buttonWas = buttonIs ; Définir l’état ancien du bouton à l’état actuel étant donné que nous créons un nouvel état actuel.
buttonIs = digitalRead(switchPin) ; Lire l’état du bouton
}
void changeLights() {/ / éteignez l’actuellement allumage de la diode et sur celle qui suit.
Timer=Millis() ; réinitialiser notre horloge à l’heure actuelle
{if(currentLED==1)}
digitalWrite (ledPinGreen, basse) ;
digitalWrite (ledPinYellow, HIGH) ;
}
{if(currentLED==2)}
digitalWrite (ledPinYellow, basse) ;
digitalWrite (ledPinRed, HIGH) ;
}
{if(currentLED==3)}
digitalWrite (ledPinGreen, HIGH) ;
digitalWrite (ledPinRed, basse) ;
}
stromgeführten ++ ; Add-on pour stromgeführten
Si (stromgeführten == 4) {stromgeführten = 1;}
}
void loop() / / il s’agit de notre boucle « principale ». Programmes d’Arduino ne quitter le menu--nulle part à la sortie !
{
getButton() ;
if((buttonIs==1) & &(buttonWas==0)) {}
currentSpeed ++ ; Ajouter un à délai actuellement parce que le bouton a été activé.
if(currentSpeed==15) {currentSpeed = 1;} / / boucle autour--cela nous attribue à une rotation lente.
}
Si (millis() > =timer+(1000/currentSpeed)) {/ / temps de changer les lumières !
changeLights() ;
}
}