Salut je galère à écrire des données vers l'Arduino
voici le petit programme tout simple pour basculer des relais
Je cherche donc à envoyer le pin et 0 pour low ou 1 pour high
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } } }
en Python3 en mode console ça passe nickel
Par contre en mode fichier la rien ne passe .... je lance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 >>>
python3 pilote.py 1 1
par d'erreur mais l'arduino n'interprete pas bien ce que j'envoi, surement un mauvais encodage ...
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager