Programmation Arduino pour les débutants Le contrôleur de feux de signalisation

Programmation Arduino pour les débutants Le contrôleur de feux de signalisation / DIY

Le feu de circulation est un petit projet amusant qui peut être achevé en moins d’une heure. Apprenez à construire le vôtre - en utilisant un Arduino - et à modifier le circuit pour un modèle avancé.

Ne vous inquiétez pas si vous n’avez jamais utilisé Arduino, nous avons un guide du débutant. Premiers pas avec Arduino: un guide du débutant Premiers pas avec Arduino: un guide du débutant Arduino est une plate-forme de prototypage d’électronique à source ouverte basée sur utiliser du matériel et des logiciels. Il est destiné aux artistes, concepteurs, amateurs et à toute personne intéressée par la création d'objets ou d'environnements interactifs. Lire la suite .

Remarque: Il s'agit du dernier d'une série de didacticiels de niveau débutant pour Arduino, la plate-forme de prototypage électronique à code source ouvert. Voici une liste des articles précédents de la série:

  • Qu'est-ce qu'Arduino et que pouvez-vous en faire Qu'est-ce qu'Arduino et que pouvez-vous en faire? Qu'est-ce qu'Arduino et que pouvez-vous en faire? L'Arduino est un petit appareil électronique remarquable, mais si vous n'en avez jamais utilisé, que sont-ils exactement et que pouvez-vous en faire? Lire la suite
  • Qu'est-ce qu'un kit de démarrage Arduino et que contient-il? Qu'est-ce qui est inclus dans un kit de démarrage Arduino? [MakeUseOf explique] Qu'est-ce qui est inclus dans un kit de démarrage Arduino? [MakeUseOf explique] J'ai déjà présenté le matériel open-source Arduino ici sur MakeUseOf, mais vous avez besoin de plus que de l'Arduino lui-même pour en créer quelque chose et pour commencer réellement. Les «kits de démarrage» Arduino sont… En savoir plus
  • Des composants plus sympas à acheter avec votre kit de démarrage 8 Des composants plus cools pour vos projets Arduino 8 Des composants plus cools pour vos projets Arduino Vous envisagez donc de vous procurer un kit de démarrage Arduino, mais vous vous demandez si certaines DEL et résistances de base vont être utilisées? assez pour vous tenir occupé pour le week-end? Probablement pas. Voici encore 8… Lire la suite
  • Mise en route de votre kit de démarrage Arduino - Installation des pilotes et configuration de la carte et du port Mise en route de votre kit de démarrage Arduino - Installation des pilotes et configuration de la carte et du port Mise en route de votre kit de démarrage Arduino - Installation des pilotes et configuration de la carte Port Donc, vous vous êtes acheté un kit de démarrage Arduino, et éventuellement d'autres composants sympas au hasard - et maintenant? Comment commencez-vous réellement à programmer cette chose Arduino? Comment le configurez-vous… Read More
  • Un examen plus approfondi de la structure d'une application Arduino et du programme exemple Blink

De quoi as-tu besoin

Outre le Arduino de base, vous aurez besoin de:

  • LED rouge, jaune et verte.
  • Une planche à pain.
  • 6 x 220? résistances.
  • Fils de connexion.
  • 1 x bouton poussoir.
  • 1 x 10k? résistance

Presque n'importe quel Arduino conviendra, à condition qu'il ait suffisamment de broches. Assurez-vous de lire notre guide d'achat Guide d'achat Arduino: Quel conseil choisir? Guide d'achat Arduino: Quel conseil choisir? Il y a tellement de types de cartes Arduino que vous ne pouvez pas vous tromper Que devriez-vous acheter pour votre projet? Laissez-nous vous aider avec ce guide d'achat Arduino! Lisez plus si vous n'êtes pas sûr du modèle dont vous avez besoin. Vous avez probablement ces pièces dans votre kit de démarrage Que contient votre kit de démarrage Arduino? [Débutants Arduino] Que contient votre kit de démarrage Arduino? [Débutants Arduino] Face à une boîte remplie de composants électroniques, il est facile de se sentir dépassé. Voici un guide pour exactement ce que vous trouverez dans votre trousse. Lire plus déjà.

Un exemple simple

Commençons petit. Un feu de signalisation simple et de base est un bon point de départ. Voici le circuit:

Connectez l’anode (jambe longue) de chaque DEL aux broches numériques huit, neuf et dix (via une résistance de 220?). Connectez les cathodes (jambe courte) à la terre Arduino.

J'ai utilisé Fritzing pour dessiner ces diagrammes. Non seulement c'est facile à utiliser, c'est gratuit!

Le code

Commencez par définir les variables afin que nous puissions adresser les voyants par leur nom plutôt que par un nombre. Commencez un nouveau projet Arduino et commencez par les lignes suivantes:

int = 10; int jaune = 9; int green = 8;

Ensuite, ajoutons la fonction de configuration, où nous allons configurer les voyants rouge, jaune et vert pour qu’ils soient des sorties. Puisque vous avez créé des variables pour représenter les numéros de broches, vous pouvez maintenant vous référer aux broches par nom..

void setup () pinMode (rouge, OUTPUT); pinMode (jaune, OUTPUT); pinMode (vert, OUTPUT); 

C'était facile. Passons maintenant à la partie difficile: la logique d’un feu de signalisation. Créez une fonction distincte pour changer les lumières (vous verrez pourquoi plus tard).

Lorsque vous commencez à programmer, le code lui-même est très rudimentaire. Il consiste à déterminer les détails logiques minutieux qui posent le plus gros problème. La clé pour être un bon programmeur est de pouvoir examiner n'importe quel processus et de le décomposer en ses étapes fondamentales. Voici le reste du code:

boucle vide () changeLights (); retard (15 000);  void changeLights () // vert éteint, jaune allumé pendant 3 secondes digitalWrite (vert, BAS); digitalWrite (jaune, HAUT); retarder (3000); // éteint le jaune, puis allume le rouge pendant 5 secondes digitalWrite (yellow, LOW); digitalWrite (rouge, HAUT); retard (5000); // rouge et jaune allumés pendant 2 secondes (le rouge est déjà allumé) digitalWrite (jaune, HAUT); délai (2000); // éteint le rouge et le jaune, puis allume le vert digitalWrite (yellow, LOW); digitalWrite (rouge, BAS); digitalWrite (vert, HAUT); retarder (3000); 

Terminé! Maintenant, téléchargez et lancez (assurez-vous de sélectionner le bon conseil et le bon port Outils > Port et Outils > Planche menus). Vous devriez avoir un feu de circulation qui change toutes les 15 secondes, comme ceci (accéléré):

Un passage piéton

Maintenant que vous connaissez les bases, améliorons-le. Ajoutez un bouton-poussoir permettant aux piétons de changer la lumière quand ils le souhaitent:

Notez que le feu est identique à l'exemple précédent. Connectez le bouton à la broche numérique 12. Vous remarquerez que le commutateur a une haute impédance 10k? résistance attachée à elle, et vous pouvez vous demander pourquoi. C'est ce qu'on appelle une résistance pull-down. C'est un concept difficile à saisir au début, mais supportez-moi.

Un commutateur laisse le courant circuler ou ne le fait pas. Cela semble assez simple, mais dans un circuit logique, le courant doit toujours circuler à l'état haut ou bas (rappelez-vous - 1 ou 0, haut ou bas). Vous pouvez supposer qu'un bouton-poussoir sur lequel vous n'appuyez pas réellement serait défini comme étant dans un état bas, mais en réalité, il est dit "flottant", car aucun courant n'est tiré du tout..

Dans cet état flottant, il est possible qu'une fausse lecture se produise car elle fluctue avec des interférences électriques. En d’autres termes, un commutateur flottant ne donne ni une lecture d’état fiable, ni un état bas. Une résistance de tirage maintient une petite quantité de courant à la fermeture de l'interrupteur, garantissant ainsi une lecture précise de l'état bas. Dans d’autres circuits logiques, vous pouvez également trouver une résistance de rappel: cela fonctionne sur le même principe, mais en sens inverse, en veillant à ce que cette porte logique par défaut soit définie sur haut..

Maintenant, dans la partie en boucle du code, au lieu de changer les lumières toutes les 15 secondes, nous allons lire l'état du bouton-poussoir, et ne changer les lumières que lorsqu'il est activé.

Le code

Commencez par ajouter une nouvelle variable au début du programme:

bouton int = 12; // le commutateur est sur la broche 12 

Maintenant, dans la fonction de configuration, ajoutez une nouvelle ligne pour déclarer le commutateur comme une entrée. J'ai également ajouté une seule ligne pour allumer les feux de circulation sur la scène verte. Sans ce paramètre initial, ils seraient désactivés jusqu'au premier lancement d'un changeLights () à l'aide d'une fonction.

pinMode (bouton, INPUT); digitalWrite (vert, HAUT);

Modifiez la fonction de boucle entière comme suit:

boucle vide () if (digitalRead (bouton) == HAUT) delay (15); // logiciel anti-rebond si (digitalRead (bouton) == HIGH) // si le commutateur est HIGH, c'est-à-dire. enfoncé - changez les lumières! changeLights (); retard (15 000); // attend 15 secondes

Ça devrait le faire. Vous vous demandez peut-être pourquoi le bouton est coché deux fois (digitalRead (bouton)), séparés par un petit délai. Ceci s'appelle le rebouncing. Tout comme la résistance à la traction était nécessaire pour le bouton, cette vérification simple arrête le code détectant des interférences mineures lors de l’appui du bouton. Vous n'êtes pas obligé de faire cela (et cela fonctionnerait probablement très bien sans cela), mais c'est une bonne pratique.

En attendant à l'intérieur du si déclaration pendant 15 secondes, les feux de circulation ne peuvent pas changer pendant au moins cette durée. Une fois que 15 secondes sont écoulées, la boucle redémarre. À chaque redémarrage de la boucle, relisez l’état du bouton, mais si vous n’appuyez pas sur cette touche, le si déclaration ne s'active jamais, les lumières ne changent jamais et redémarre simplement.

Voici à quoi cela ressemble (accéléré):

Une jonction

Essayons un modèle plus avancé. Au lieu d'un passage piéton, modifiez votre circuit pour avoir deux feux de circulation:

Reliez le deuxième feu aux broches numériques 11, 12 et 13..

Le code

Tout d’abord, affectez vos nouvelles broches de feux de signalisation aux variables et configurez-les en tant que sorties, comme dans le premier exemple:

// light one int red1 = 10; int yellow1 = 9; int green1 = 8; // allume deux int red2 = 13; int yellow2 = 12; int green2 = 11; void setup () // allume un pinMode (red1, OUTPUT); pinMode (yellow1, OUTPUT); pinMode (green1, OUTPUT); // allume deux pinMode (red2, OUTPUT); pinMode (yellow2, OUTPUT); pinMode (green2, OUTPUT); 

Maintenant, mettez à jour votre boucle pour utiliser le code du premier exemple (au lieu du passage pour piétons):

boucle vide () changeLights (); retard (15 000); 

Encore une fois, tout le travail est effectué dans le changeLights () une fonction. Plutôt que d'y aller rouge > rouge Et jaune > vert, ce code alternera les feux de circulation. Quand l'un est en vert, l'autre sera en rouge. Voici le code:

void changeLights () // allume les deux jaunes sur digitalWrite (green1, LOW); digitalWrite (yellow1, HIGH); digitalWrite (yellow2, HIGH); retard (5000); // éteint les deux jaunes, et le vert et le rouge opposés digitalWrite (yellow1, LOW); digitalWrite (red1, HIGH); digitalWrite (yellow2, LOW); digitalWrite (red2, LOW); digitalWrite (green2, HIGH); retard (5000); // les deux jaunes sont à nouveau digitalWrite (yellow1, HIGH); digitalWrite (yellow2, HIGH); digitalWrite (green2, LOW); retarder (3000); // éteint les deux jaunes, et inversement digital et vert digitalWrite (green1, HIGH); digitalWrite (yellow1, LOW); digitalWrite (red1, LOW); digitalWrite (yellow2, LOW); digitalWrite (red2, HIGH); retard (5000); 

Voici à quoi ça ressemble (accéléré):

C'est tout pour cette fois, alors j'espère que vous avez beaucoup appris et que vous avez eu du plaisir à écrire à partir de rien. Vous avez les mains sales avec quelques LED et résistances, ainsi que l'ajout d'un interrupteur avec une résistance de tirage - nous espérons que vous avez compris pourquoi nous en avons besoin. Jouez avec le code, ajustez-le et amusez-vous surtout. Si vous faites des ajouts ou des modifications, pourquoi ne pas nous en informer dans les commentaires?

Et souvenez-vous de vos collègues bricoleurs pendant les vacances ou lorsque leur anniversaire arrive avec ces idées-cadeaux réservées aux fans d’Arduino. Amant Arduino dans ta vie? Voici quelques idées cadeaux géniales: livres, kits, éléments de projet et plus encore! Lire la suite :

Crédit d'image: androsvector via Shutterstock.com

Explorez plus sur: Arduino, Programmation.