Vous êtes sur la page 1sur 4

TUTORIEL

crit par David W. Mawdsley

Feux de circulation Arduino

d'apprentissage sur les procdures C avec quelques nouvelles commandes spcifiques aux ports Arduino. Tlcharger le code compil sur le microcontrleur a t facile. Aprs quelques jours de ttonnements, mon systme a finalement fonctionn comme prvu. Plus tard, j'ai mis jour mon code pour inclure une sonnerie dans le circuit.

vec le dpart de la compagnie Heathkit et avec un ordinateur moderne utilisant Ubuntu 10.04 LTS, j'ai trouv un site dtaillant un micro-contrleur nomm Arduino sur www.arduino.cc (pas .com). Il utilisait un cble USB pour l'alimentation et sa connexion l'ordinateur. Arduino Uno tait abordable 30 $. Une simulation de feu de circulation simple sur un circuit imprim semblait tre la bonne exprience amusante essayer.

Partie 1 : Installation de l'IDE Arduino

(pour plus de dtails voir http://arduino.cc/playground/Linux/Ubuntu)

J'ai utilis la section Ubuntu sans le paquet Arduino de la page pour mon installation (a peut tre diffrent pour vous).

Le faire fonctionner consistait seulement en trois tches principales : Installer et configurer l'IDE Arduino (Integrated Development Environment ou Environnement de Dveloppement Intgr). Dterminer le cblage pour le circuit imprim et les ports Arduino ncessaires. crire un programme C simple suivi de l'envoi du code compil sur le micro-contrleur Arduino.

Tlchargez le fichier .tgz et installez-le avec le gestionnaire d'archives : arduino-0022.tgz (pris sur http://arduino.cc/en/Main/Software en utilisant le paquet Linux 32-bit).

Pour ceux qui utilisent le port USB Voici les pices que j'ai utilises pour dialoguer, ajoutez-vous au pour effectuer le cblage (achetes groupe dialout pour avoir les surtout chez Radio Shack) : permissions d'criture sur ce port avec : un circuit imprim et du cble lectrique isol de calibre 22 me sudo usermod -aG dialout pleine ; <your username> une prise de courant de 2,1 mm et capuchon de pile de 9 volts (fil rouge Ensuite, pour excuter l'applicasoud la prise centrale, fil noir soution, ouvrez le dossier arduino- d la prise extrieure) ; 0022 , faites un clic droit sur ardui- une pile de 9 volts ; no et choisissez Excuter . Une des LED : 2 rouges, 2 vertes, 1 jaune fois que l'IDE est en cours d'excu(environ 2,1 mA chaque. Notez tion, slectionnez votre carte (la l'orientation !) ; mienne tait l'Arduino Uno) partir un interrupteur bouton poussoir de Outils > Carte. pour circuit imprim ; 3 VDC Mini Buzzer (Radio Shack 273Partie 2 : Cblage du cir- 0053) ; cuit imprim et con- des rsistances : 5 de 220 Ohms, 2 de 150 Ohms, 1 de 10 KOhms (toutes nexion l'Arduino. prvues pour 1/8 Watt).

Installez le compilateur et les paLa premire tche tait simple, la quets de bibliothques : deuxime a t de la routine avec quelques cours de recyclage, et la troi- sudo apt-get install gcc-avr sime ncessitait une petite courbe avr-libc full circle magazine n48 22
sommaire ^

TUTORIEL - FEUX DE CIRCULATION ARDUINO


g, le Arduino Uno a fait fonctionner les diffrents feux et l'avertisseur sonore comme prvu.

Ci-dessous le schma de cblage et une vue de mon Arduino mont sur une armature en bois avec la carte et les fils. (Les briques Lego ont t utilises pour maintenir les choses ensemble.)

Partie 3 : Ecriture du code en C et tlchargement du code compil sur le Arduino Uno.

sound.pde dans un dossier nomm trafficlightsound - l'IDE Arduino semblait exiger cette extension et le mme nom pour le dossier et le fichier. En cliquant sur la flche de dmarrage sur la gauche de l'IDE, cela a vrifi et compil le code de 1468 octets.

Aprs quelques lectures sur le site Arduino, et avec un peu de code emprunt, le code du projet tenait sur une page dans gedit. Le fichier a ensuite t rebaptis trafficlight-

Aprs avoir dbranch le cble USB et branch la batterie de 9 volts, le projet a fonctionn indpendamLe code source pour les feux de cir- ment de l'ordinateur. Le culation Arduino peut tre trouv ici : programme continuera fonctionner dans une bouhttp://pastebin.com/ACk9u937 cle jusqu' ce que l'alimenAprs avoir connect un cble tation soit coupe. USB entre l'ordinateur et le microcontrleur, un clic sur la flche vers la droite sur la deuxime ligne de l'IDE a lanc le chargement du bytecode vers le microcontrleur. Une fois char-

full circle magazine n48

23

sommaire ^

Arduino - feux de circulation.pde.txt /* Connect one lead of the push button to 5 volts and the other to digital pin 2 and a 10K Ohm pull-down resistor. Use 220 Ohm resistors to connect each of the LEDs to pins 8-12. The buzzer requires two 150 Ohm resistors in parallel to deliver a max of 2 volts to the 3-volt buzzer. Full Circle #48 http://pastebin.com/ACk9u937 */ const const const const const const const int int int int int int int PED_BUT = 2; PED_BUZ = 3; PED_GRE = 8; PED_RED = 9; TRAF_GRE = 10; TRAF_YEL = 11; TRAF_RED = 12; // mandatory procedure--set pin modes

void setup(){ pinMode(PED_BUT, INPUT); pinMode(PED_BUZ, OUTPUT); pinMode(PED_GRE, OUTPUT); pinMode(PED_RED, OUTPUT); pinMode(TRAF_GRE, OUTPUT); pinMode(TRAF_YEL, OUTPUT); pinMode(TRAF_RED, OUTPUT); }

void loop(){ // digitalWrite(TRAF_GRE, HIGH); // start delay(6000); // haltTraffic(); delay(10000); // changeTrafficGRE(); for(int i=0;i<50;i++){ // if(digitalRead(PED_BUT)==HIGH) break; delay(400); // } } void haltTraffic(){ with GRE with BUZ changeTrafficRed(); delay(1000); digitalWrite(PED_RED, LOW); digitalWrite(PED_GRE, HIGH); } void changeTrafficRed(){ then to red digitalWrite(TRAF_GRE, digitalWrite(TRAF_YEL, delay(5000); digitalWrite(TRAF_YEL, digitalWrite(TRAF_RED, }

mandatory procedure--main program default GRE traffic light -- default at delay 6 sec. delay 10 sec. test for BUT pushed delay 0.4 sec.

// halt traffic with Red, allow pedestrians // delay 1 sec.

// change traffic lights from GRE to YEL and LOW); HIGH); // delay 5 sec. LOW); HIGH);

void changeTrafficGRE(){ // halt pedestrian traffic with red and sound, allow traffic with GRE digitalWrite(PED_GRE, LOW); for(int i=0;i<8;i++){ digitalWrite(PED_RED, LOW); digitalWrite(PED_BUZ, HIGH); delay(500); // delay 0.5 sec. digitalWrite(PED_RED, HIGH); digitalWrite(PED_BUZ, LOW); Pge p

delay(500);

Arduino - feux de circulation.pde.txt // delay 0.5 sec. // delay 3 sec.

} delay(3000); digitalWrite(TRAF_RED, LOW); digitalWrite(TRAF_GRE, HIGH); }

Pge p