La semaine dernière, après la soirée passée au FabLab, où le très sympa et patient Fabrice Benoît m’a montré les possibilités1 offertes par les cartes programmables Arduino, j’ai craqué et je me suis commandé le Starter Kit.
Celui-ci comprend une carte Arduino Uno (l’une des plus basiques et versatiles) ainsi qu’une belle collection de composants (LEDs, potentiomètres, boutons, résistances, transistors, etc…), de capteurs (température, lumière, vibration…) et même quelque trucs plus exotiques (servomoteur, octocoupleur, afficheur alphanumérique…).
Et un livret comprenant une quinzaine de projets pour s’initier en douceur à la fois à l’électronique façon Arduino2 ainsi qu’à la programmation en C de la carte.
Ce week-end, donc, quand j’en avais marre de corriger les énormités dans le tapuscript de mon roman, je bricolais donc ma carte, suivant les projets petit-à-petit quand c’était possible3 jusqu’au moment où j’ai commencé à tenter de créer mes propres bricolages. C’est là qu’on voit les limites du starter kit, où il va vite arriver à manquer telle ou telle pièce (2 ou 3 autres servos, des capteurs, plus de ports digitaux sur la carte…) mais ça oblige du coup à réfléchir à l’ergonomie de son propre projet.
Mon premier projet «solo» a été un chenillard de 8 LEDs s’allumant en séquence. J’y ai ajouté quatre boutons permettant d’arrêter l’animation et d’allumer les paires de chaque couleurs.
Le suivant fut un peu plus utile (mouais…) : c’est un thermomètre digital. Il utilise l’afficheur alphanumérique. La sonde récupère l’information de température une fois par seconde, et l’affiche sur l’écran. Les LEDs s’allument selon un barème ; en dessous de 18°, la LED bleue est allumée («Fait frooooid !»), entre 18 et 35° c’est la verte («Tout va bien…») et au dessus de 35° c’est la rouqe («Je foooond !»)
Le montage utilise une thermosonde, trois LEDs de couleur (à votre goût), un potentiomètre (pour le contraste de l’afficheur), et trois diodes de 220 ohms. Et bien sûr l’afficheur alphanumérique. Et voici le code pour la carte :
#include
// Thermomètre digital
// © v. NooT. C. - 12/2013
// Connections IN/OUT
const int sonde = A0;
const int lBleu = 7;
const int lVert = 8;
const int lRouge = 9;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
pinMode(lBleu, OUTPUT);
pinMode(lVert, OUTPUT);
pinMode(lRouge, OUTPUT);
}
void loop() {
int valTemp = analogRead(sonde);
float voltage = (valTemp /1024.0) *5.0;
float temperature = (voltage -.5) *100.0;
lcd.clear();
lcd.print("Temperature :");
lcd.setCursor(0, 1);
lcd.print(temperature);
lcd.print(" .c");
if (temperature < 19) {
digitalWrite(lBleu, HIGH);
digitalWrite(lVert, LOW);
digitalWrite(lRouge, LOW);
}
if (temperature >= 19 && temperature < 35) {
digitalWrite(lBleu, LOW);
digitalWrite(lVert, HIGH);
digitalWrite(lRouge, LOW);
}
if (temperature >= 35) {
digitalWrite(lBleu, LOW);
digitalWrite(lVert, LOW);
digitalWrite(lRouge, HIGH);
}
delay(1000);
}
Voilà. C’est pas grand-chose, ça va pas tirer très loin, mais j’espère que ce n’est qu’un début. J’ai maintenant en tête de faire des tests avec des servos (leur prix sont raisonnable) et je vais voir au Lab comment dessiner et préparer certaines pièces. Et à terme, je me dis que la réalisation d’un panneau comme je l’avais imaginé pourrait être possible…
Enfin, une partie, par ce qu’en fait y’a pas vraiment de limites à ce qu’on peut faire avec.↩︎
Pas besoin de connaissances spécifiques, juste un peu de jugeote et de logique suffisent.↩︎
Il y a parfois des trucs un peu délicats ; par exemple le testeur d’inclinaison a des pattes trop courtes pour être branché directement sur la grille de test. De même, les picots de connexion livrés pour brancher par exemple le servo ont été mal moulés et ne me servent à rien en l’état…↩︎