Go Down

Topic: Arduino+ script python (Read 1 time) previous topic - next topic

neroz

#5
Nov 20, 2012, 08:37 am Last Edit: Nov 20, 2012, 12:06 pm by neroz Reason: 1
ça a l'air intéressant comme IDE, je vais voir comment il fonctionne et si c'est plus simple de l'utiliser

Concernant le tutoriel, je vais modifier mon code afin de pouvoir allumer ma led en espérant que cela fonctionne.

Edit:

Code: [Select]
import socket
import time
import serial

print ("~ Client WebLed ~")
locations=['/dev/ttyUSB0','/dev/ttyUSB1','/dev/ttyUSB2','/dev/ttyUSB3','/dev/ttyUSB4'
'/dev/ttyS0','/dev/ttyS1','/dev/ttyS2','/dev/ttyS3','/dev/ttyS4']



for device in locations: 
    try: 
        print ("Trying...",device) 
        arduino = serial.Serial(device, 9600) 
        break 
    except: 
        print ("Failed to connect on",device)     
 
try: 
    arduino.write('Y') 
    time.sleep(1) 
    print (arduino.readline()) 
except: 
    print ("Failed to send!") 

print ("a+ !")


Voilà le code que j'ai pour python, et il n'arrive à ce connecté à aucun port usb:
~ Client WebLed ~
Trying... /dev/ttyUSB0
Failed to connect on /dev/ttyUSB0
Trying... /dev/ttyUSB1
Failed to connect on /dev/ttyUSB1
Trying... /dev/ttyUSB2
Failed to connect on /dev/ttyUSB2
Trying... /dev/ttyUSB3
Failed to connect on /dev/ttyUSB3
Trying... /dev/ttyUSB4/dev/ttyS0
Failed to connect on /dev/ttyUSB4/dev/ttyS0
Trying... /dev/ttyS1
Failed to connect on /dev/ttyS1
Trying... /dev/ttyS2
Failed to connect on /dev/ttyS2
Trying... /dev/ttyS3
Failed to connect on /dev/ttyS3
Trying... /dev/ttyS4
Failed to connect on /dev/ttyS4
Failed to send!
a+ !

Merci pour vos réponses en tout cas

fdufnews

Quote
locations=['/dev/ttyUSB0','/dev/ttyUSB1','/dev/ttyUSB2','/dev/ttyUSB3','/dev/ttyUSB4'
'/dev/ttyS0','/dev/ttyS1','/dev/ttyS2','/dev/ttyS3','/dev/ttyS4']

Ce sont des noms de périphériques Linux. Sous Windows il faudrait tester COM1, COM2, .....

billroy

Il est nécessaire de time.sleep (2) après l'ouverture du port série pour permettre au bootloader de démarrage pour le temps et commencez votre programme. Si vous envoyez des données trop rapidement après l'ouverture du port série peut être perdue, ce qui semble être ce qui se passe dans votre cas.

S'il vous plaît pardonnez ma machine traduits en français.

Cordialement,

-br
http://bitlash.net

neroz

J'avance doucement mais sûrement, je sent que la gestion de la manette va être dur vue que je n'arrive même pas à allumer une led.

Donc voici mon code python qui se connecte à mon port (j'ai vérifier et ces bien le COM3) mais le problème c'est que la led ne s'allume toujours pas.
Code: [Select]
import socket
import time
import serial

print ("~ Client WebLed ~")
print ("ouverture du port")
ser = serial.Serial("COM3")
ser.baudrate = 9600
time.sleep(2)

print ("port ouvert")



for device in ser: 
    try: 
        print ("Trying...",device) 
        arduino = serial.Serial(device, 9600) 
        break 
    except: 
        print ("Failed to connect on",device)     
 
try: 
    arduino.write('Y') 
    time.sleep(1) 
    print (arduino.readline()) 
except: 
    print ("Failed to send!") 

print ("a+ !")


Voici mon code arduino
Code: [Select]
int ledPin = 13;  // choose the pin for the LED
int val = 0;      // variable for reading the pin status
char msg = '  ';   // variable to hold data from serial

void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  Serial.begin(9600);
  Serial.print("Program Initiated\n");
}

void loop(){
        // While data is sent over serial assign it to the msg
while (Serial.available()>0){
msg=Serial.read();
}

  // Turn LED on/off if we recieve 'Y'/'N' over serial
  if (msg=='Y') {
    digitalWrite(ledPin, HIGH);  // turn LED ON
    Serial.print("LED Activated\n");
    msg=' ';
  } else if (msg=='N') {
    digitalWrite(ledPin, LOW); // turn LED OFF
  }
}


Quand je passe par la liaison série de l'arduino, la led s'éteint et s'allume bien, mais ne fonctionne pas quand je passe par le script python.

En vous remerciant de votre aide précieuse.

billroy

Code: [Select]


print ("~ Client WebLed ~")
print ("ouverture du port")
ser = serial.Serial("COM3")
ser.baudrate = 9600
#time.sleep(2)    # <-- not here please

print ("port ouvert")

for device in ser: 
    try: 
        print ("Trying...",device) 
        arduino = serial.Serial(device, 9600) 
        time.sleep(2)     # <--- here instead please
        break



Best,

-br

Go Up