Sujet : Arduino Duemilanove
Des nouvelles de mon arduino.
En attendant de récupérer des servos, un breadboard, de quoi souder et d'autres joyeuseté pour faire un robot tueur je me suis un peu amusé.
Avec un tout petit script python, un arduino, un cable usb, une pair de LEDs, quasiment zero connaissance en électronique et un Pedobear en papier, voila ce qu'on peut faire en 10 minutes :
Le script python va vérifier ma boîte mail toutes les 60 secondes et envoie un signal via le cable usb pour signaler ou non la présence de mails non lus. L'arduino allume ou éteint les yeux de pb selon le signal qu'il reçois.
J'avais foutu un buzzer avant mais c'était très vite devenu stressant de l'entendre à chaque fois que je recevais un mail. J'aurai pu faire un joli socle et cacher les fils dans le corps de pb mais j'ai un peu la flemme, et surtout j'en ai rien a foutre.
Pour les curieux, le script :
#!/usr/bin/env python
import imaplib, re, serial, time
ser = serial.Serial('/dev/ttyUSB0', 9600)
conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
conn.login("[email protected]", "bidou")
time.sleep(3)
while (1):
unreadCount = re.search("UNSEEN (\d+)", conn.status("INBOX", "(UNSEEN)")[1][0]).group(1)
if (unreadCount > "0"):
ser.write('1')
else:
ser.write('0')
time.sleep(60)
Et le code balancé sur l'arduino :
#include <LED.h>
LED led1 = LED(10);
LED led2 = LED(11);
int inByte = '0';
int gotmail = 0;
void setup()
{
Serial.begin(9600);
}
void noMailAlert()
{
led1.on();
led2.on();
}
void mailAlert()
{
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5)
{
led1.setValue(fadeValue);
led2.setValue(fadeValue);
delay(20);
}
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5)
{
led1.setValue(fadeValue);
led2.setValue(fadeValue);
delay(10);
}
}
void erreur(LED led)
{
led.blink(200, 3);
}
void cligne()
{
led1.fadeOut(100);
led1.fadeIn(50);
led2.fadeOut(100);
led2.fadeIn(50);
}
void loop()
{
if (gotmail == 0)
noMailAlert();
else
{
mailAlert();
}
if (Serial.available() > 0)
{
inByte = Serial.read();
if (inByte == '1')
gotmail = 1;
else if (inByte == '0')
gotmail = 0;
else
erreur(led1);
cligne();
}
}
Edit : J'ai un peu modifié le code, les yeux de pb sont maintenant allumés en permanence, sauf quand un mail est reçu : dans ce cas les yeux clignotes progressivements. Toutes les 60 secondes il cligne rapidement des yeux lorsque il reçoit des nouvelles du script pour montrer qu'il tourne toujours.
Bon voila, il est aussi possible de l'alimenter par une batterie 9v et d'ajouter un module bluetooth pour le rendre sans fil mais ça coute un peu chère et je ne sais pas ce que donnerai l'autonomie.