Pas moyen d'écrire des données vers l'arduino avec python
Salut je galère à écrire des données vers l'Arduino
voici le petit programme tout simple pour basculer des relais
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #include "Adafruit_MCP23017.h"
#include "Wire.h"
Adafruit_MCP23017 mcp;
void setup() {
mcp.begin();
for (int pin = 0; pin < 16; pin ++)
{
mcp.pinMode(pin, OUTPUT);
}
for (int pin = 0; pin < 16; pin++)
{
mcp.digitalWrite(pin, HIGH);
}
Serial.begin(9600);
}
void loop() {
if(Serial.available())
{
String pinstr = Serial.readStringUntil(',');
String commandestr = Serial.readStringUntil('\n');
int pin = pinstr.toInt();
int commande = commandestr.toInt();
switch (commande) {
case 0:
mcp.digitalWrite(pin, HIGH);
break;
case 1:
mcp.digitalWrite(pin, LOW);
break;
}
}
} |
Je cherche donc à envoyer le pin et 0 pour low ou 1 pour high
en Python3 en mode console ça passe nickel
Code:
1 2 3 4 5 6 7 8 9 10
| Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>> ser = serial.Serial('/dev/ttyUSB0', 9600)
>>> ser.write(b'1,1')
3
>>> ser.write(b'1,0')
3
>>> |
Par contre en mode fichier la rien ne passe .... je lance
python3 pilote.py 1 1
par d'erreur mais l'arduino n'interprete pas bien ce que j'envoi, surement un mauvais encodage ...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import sys
import serial
import time
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1, writeTimeout=1)
if (ser.isOpen()):
print("open")
arg1=sys.argv[1]
arg2=sys.argv[2]
pin=arg1+","+arg2
print (type(pin))
pin=bytes(pin,'utf-8')
print(pin)
ser.write(pin)
ser.close() |
Un peu aide merci