13_-_arduino_et_python
Ceci est une ancienne révision du document !
Arduino et Python
Disons le d'emblée ce billet ne vise qu'à montrer comment Arduino et Python peuvent communiquer. Vous trouverez sur le Web de multiples ressources à ce sujet. L'idée est simple: vous avez une version de Python disponible sur le réseau et vous désirez piloter l'Arduino. Voici comment faire.
Le code Arduino
#define PIN_MODE 100
#define DIGITAL_WRITE 101
#define DIGITAL_READ 102
#define ANALOG_WRITE 103
#define ANALOG_READ 104
void commande_pin_mode() {
char pin,mode;
while (Serial.available()<2);
pin = Serial.read(); // pin number
mode = Serial.read(); // 0 = INPUT, 1 = OUTPUT
pinMode(pin,mode);
}
void commande_digital_write() {
char pin,output;
while (Serial.available()<2);
pin = Serial.read(); // pin number
output = Serial.read(); // 0 = LOW, 1 = HIGH
digitalWrite(pin,output);
}
void commande_digital_read() {
char pin,input;
while (Serial.available()<1);
pin = Serial.read(); // pin number
input = digitalRead(pin);
Serial.write(input);
}
void commande_analog_write() {
char pin,output;
while (Serial.available()<2);
pin = Serial.read(); // pin number
output = Serial.read(); // PWM value between 0 and 255
analogWrite(pin,output);
}
void commande_analog_read() {
char pin;
int value;
while (Serial.available()<1);
pin = Serial.read(); // pin number
value = analogRead(pin);
Serial.write((value>>8)&0xFF); // 8 bits de poids fort
Serial.write(value & 0xFF); // 8 bits de poids faible
}
void setup() {
char c;
Serial.begin(500000);
Serial.flush();
c = 0;
Serial.write(c);
c = 255;
Serial.write(c);
c = 0;
Serial.write(c);
}
void loop() {
char commande;
if (Serial.available()>0) {
commande = Serial.read();
if (commande==PIN_MODE) commande_pin_mode();
else if (commande==DIGITAL_WRITE) commande_digital_write();
else if (commande==DIGITAL_READ) commande_digital_read();
else if (commande==ANALOG_WRITE) commande_analog_write();
else if (commande==ANALOG_READ) commande_analog_read();
}
// autres actions à placer ici
}
13_-_arduino_et_python.1530352460.txt.gz · Dernière modification : (modification externe)
