Go Down

Topic: Domotique : mon premier projet... Vive arduino ! (Read 2 times) previous topic - next topic

zewho

Concernant la latence, elle est prévue en fait, j'ai rajouté des time sleep pour éviter un erreur qui survenait et qui annonçait que l'hôte avait fermé la connexion !
Sans ces time sleep (5 sec, 1 sec par lecture de fichier), le temps de latence est inférieur à 1 seconde, mais le script plant dans les 25 min.

mcvovol54

Bonsoir,

Pour un premier projet c'est époustouflant !!!

Serait il possible de nous poster les pages de code pour esseyer d'en apprendre un peu plus si cela ne derrange pas ?

Ca pourrait etre utile dans l'elaboration de mon projet d'hexapode pour le faire fonctionner a  distance :)

Merci de ton aide et bonne continuation

(je n'ai pas encore reçu mon arduino qui est ENFIN en livraison ^^
Interressant l'Arduino :) Il y a largement matiere a faire hehe

SamoLaw


Concernant la latence, elle est prévue en fait, j'ai rajouté des time sleep pour éviter un erreur qui survenait et qui annonçait que l'hôte avait fermé la connexion !
Sans ces time sleep (5 sec, 1 sec par lecture de fichier), le temps de latence est inférieur à 1 seconde, mais le script plant dans les 25 min.


Bonjour,

AH ok , merci pour l'info. :)

zewho

#8
Jan 29, 2011, 09:30 am Last Edit: Jan 29, 2011, 09:35 am by zewho Reason: 1
Salut !
Alors concernant le code, je suis auto-didacte, et il est sale de chez sale, en fait je me contente d'un résultat qui fonctionne et avec mes études dans un tout autre domaine, je n'ai pas le temps que je voudrais pour pouvoir me perfectionner... Merci donc d'être indulgent ;)

@mcvovol54 : J'ai tenté un autre projet, mais à base de legos mindstorm nxt. C'est un robot pilotable depuis une appli facebook... Le téléphone reçoit les instructions par le biais de la 3G, et pilote le robot par bluetooth, peut-être que cela peut te donner des idées pour ton hexapode (J'ai vu le projet, ambitieux, et très intéressant ;) tu peux trouver une vidéo à cette adresse :

http://www.youtube.com/watch?v=REymvzzngBQ

Concernant ma gare pilotée par le net

Le script python (qui tourne sur le PC, connecté à l'Arduino en USB par le biais du port com9)
Code: [Select]
#-*- coding: cp1252 -*-
import urllib
cmd = []
print "connecté"
print "Le programme tourne"
import serial


a = 0
b = 0
c = 0
d = 0
e = 0
f = 0

def recup():
       
               


 
               a1 = urllib.urlopen("http://www.lucboutier.com/arduino/lum1.txt") ## Récup des valables; 1 fichier par led
               
               b1 = urllib.urlopen("http://www.lucboutier.com/arduino/lum2.txt")
               
               c1 = urllib.urlopen("http://www.lucboutier.com/arduino/lum3.txt")
               
               d1 = urllib.urlopen("http://www.lucboutier.com/arduino/lum4.txt")

               e1 = urllib.urlopen("http://www.lucboutier.com/arduino/lum5.txt")

               f1 = urllib.urlopen("http://www.lucboutier.com/arduino/stop.txt")## Cette variable permet de couper le script, sinon, tuer le script sur le PC laisse le port com9 oqp
               time.sleep(1)
               if f1.readline == "STOP\r\n":
                       print 'killed !'
                       ser.close()
               if a1.readline != "":
                       a = a1.readline()
                       if a == "1a\r\n":
                               ser.write("a")

                       if a == "1e\r\n":
                               ser.write("b")
               if b1.readline != "":            
                       b = b1.readline()
                       if b == "2a\r\n":
                               ser.write("c")

                       if b == "2e\r\n":
                               ser.write("d")
               if c1.readline != "":            
                       c = c1.readline()
                       if c == "3a\r\n":
                               ser.write("e")

                       if c == "3e\r\n":
                               ser.write("f")
               if d1.readline != "":              
                       d = d1.readline()
                       if d == "4a\r\n":
                               ser.write("g")
                       if d == "4e\r\n":
                               ser.write("h")

               if e1.readline != '':
                       e = e1.readline()
                       if e == "5a\r\n":
                               ser.write("i")
                       if e == "5e\r\n":
                               ser.write("j")

               recup()
print "ouverture du port"
ser = serial.Serial()
ser.setPort("COM9")
ser.baudrate = 57600
ser.close()
ser.open()
print "port ouvert"
recup()
if (ser.isOpen()):
       recup()


Et le code qui tourne sur le arduino, non commenté

Code: [Select]


void setup() {                
 Serial.begin(57600);
 pinMode(13, OUTPUT);
   pinMode(12, OUTPUT);
     pinMode(11, OUTPUT);
       pinMode(10, OUTPUT);
 pinMode(9, OUTPUT);
   pinMode(8, OUTPUT);
     pinMode(7, OUTPUT);
       pinMode(6, OUTPUT);
               pinMode(2, OUTPUT);
 
}

void loop() {
 if(Serial.available() >= 0){
   switch( byte( Serial.read() )) {
     case 'a':
         digitalWrite(13, HIGH);  
         break;
     case 'b':
         digitalWrite(13, LOW);   // set the LED on
         break;  
     case 'c':
         digitalWrite(12, HIGH);  
         break;
     case 'd':
         digitalWrite(12, LOW);   // set the LED on
         break;  
     case 'e':
         digitalWrite(11, HIGH);  
         break;
     case 'f':
         digitalWrite(11, LOW);   // set the LED on
         break;  
     case 'g':
         digitalWrite(10, HIGH);  
         break;
     case 'h':
         digitalWrite(10, LOW);   // set the LED on
         break;  
         
     case 'i':
         digitalWrite(9, HIGH);  
         break;

     case 'j':
         digitalWrite(9, LOW);   // set the LED on
         break;  
     case 'k':
         digitalWrite(8, HIGH);  
         break;
     case 'l':
         digitalWrite(8, LOW);   // set the LED on
         break;  
     case 'm':
         digitalWrite(7, HIGH);  
         break;
     case 'n':
         digitalWrite(7, LOW);   // set the LED on
         break;  
     case 'o':
         digitalWrite(6, HIGH);
         break;
     case 'p':
         digitalWrite(6, LOW);   // set the LED on
         break;  
         
     case 'q':
         digitalWrite(2, HIGH);  
         break;
     case 'r':
         digitalWrite(2, LOW);   // set the LED on
         break;  
   }


 }
}



Jean-François

Je ne sais pas quelle est ton aisance avec Python, car autrement il existe Processing, qui utilise une IDE dont l'interface est quasi la même que pour Arduino et les références sont presque similaires.(avec plein de librairies dispos)
MacBook intel core 2 duo  os X snow Leopard 10.6
 eMac PPc G4  os X Leopard 10.5
powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Go Up