Arduino
From Fabelier
Contents |
Arduino
- For more information : www.arduino.cc
Our line follower
- The arduino romeo manual : http://www.dfrobot.com/wiki/index.php?title=DFRduino_Romeo-All_in_one_Controller_(SKU:DFR0004)
- The youtube video : http://www.youtube.com/watch?v=80rPx_VHMaU
- The source code : https://github.com/fabelier/line_follower
Coder sans l'IDE
C'est tres simple car ils fournissent un Makefile, donc :
$ aptitude install arduino-core $ mkdir your_project $ cd your_project $ emacs your_project.cpp $ cat - > Makefile ARDUINO_DIR = /usr/share/arduino TARGET = line_follower ARDUINO_LIBS = MCU = atmega328p F_CPU = 16000000 ARDUINO_PORT = /dev/ttyACM0 AVRDUDE_ARD_BAUDRATE = 115200 AVRDUDE_ARD_PROGRAMMER = arduino include /usr/share/arduino/Arduino.mk C-d // You should TYPE C-d not copy past the string "C-d" $ make upload $ yes
Exemple d'utilisation d'un Afficheur 7 segments
Ce code gère deux types de sorties (analogique et numérique). Ce code affiche les 10 chiffres arabes sur l'afficheur 7 segments.
#define a_min 0 //valeur min pour les analogiques #define a_max 255 //valeur max pour les analogiques #define d_min 0 //valeur min pour les numériques #define d_max 1 //valeur max pour les numériques //toutes les sorties possibles, et leur type byte outs[][2] = { {0, 'r'}, {1, 't'}, {2, 'd'}, {3, 'a'}, {4, 'd'}, {5, 'a'}, {6, 'a'}, {7, 'd'}, {8, 'd'}, {9, 'a'}, {10, 'a'}, {11, 'a'}, {12, 'd'}, {13, 'd'} }; //les sorties qu'on utilise byte my_outs[] = {2, 3, 4, 5, 6, 7, 8}; //liste des chiffres, et leur composition par rapport aux branchements fait sur le Arduino byte numbers[][7] = { {2, 3, 4, 5, 6, 7}, {3, 4}, {2, 3, 5, 6, 8}, {2, 3, 4, 5, 8}, {3, 4, 7, 8}, {2, 4, 5, 7, 8}, {2, 4, 5, 6, 7, 8}, {2, 3, 4}, {2, 3, 4, 5, 6, 7, 8}, {2, 3, 4, 5, 7, 8} }; //Afficher ou eteindre une LED void write(byte id, byte level) { //Analogique if (outs[id][1] == 'a') analogWrite(outs[id][0], level > 0 ? a_max : a_min); //Numérique else if (outs[id][1] == 'd') digitalWrite(outs[id][0], level > 0 ? d_max : d_min); } //Afficher un chiffre void print(byte number) { byte j, k; //Extinsion de tt les segments for (k = 0; k < sizeof(my_outs); k++) write(my_outs[k], 1); //Affichage des segments pour le chiffre choisi for (j = 0; j < sizeof(numbers[number]); j++) write(numbers[number][j], 0); } //Init void setup() { byte i; for (i = 0; i < sizeof(my_outs); i++) pinMode(outs[my_outs[i]][0], OUTPUT); } //Loop void loop() { byte i; for (i = 0; i <= 9; i++) { print(i); //affiche 0 > 9 delay(1000); //pause de 1s. } delay(2000); //pause de 2s. }