Je suis nouveau sur Arduino (et la programmation informatique en général), donc je m'excuse si cette question semble idiote.
Une fois que j'ai configuré une connexion Arduino-LED de base, j'ai des problèmes pour envoyer des INTEGERS à Arduino via le port série. Je peux facilement envoyer des caractères tels que «m», «o» et ainsi de suite.
Voici le code Arduino, idéalement, il devrait obtenir une valeur du port USB via python ou le moniteur série, puis régler la luminosité de la LED en fonction de la valeur. (la valeur doit être dans la plage [0,255]).
REMARQUE: j'utilise ARDUINO UNO et PYTHON 3
// --------------------------
int LED = 10;
int number;
void setup(){
pinMode(LED,OUTPUT);
Serial.begin(9600);
}
void loop(){
number = Serial.read();
Serial.print(number);
Serial.print('\n');
if(number == -1){
number = 0;
}
else if(number > 255){
number = 255;
}
else if(number < 0){
number = 0;
}
analogWrite(LED,number);
delay(1000);
}
Cependant, lorsque j'entre une valeur dans le port série ou via Python, par exemple 0, cela me donne 48 comme réponse (ce qui est intéressant, c'est le code ASCII pour 0!) Et allume la LED ce qui n'est pas ce qui devrait arriver puisque à 0 la LED doit être éteinte !! Il me manque quelque chose mais je ne trouve pas quoi ... Pourriez-vous me dire ce qui ne va pas?
Voici le code que j'utilise en Python:
import serial
import time
try:
arduino = serial.Serial(port,speed)
time.sleep(2)
print("Connection to " + port + " established succesfully!\n")
except Exception as e:
print(e)
#Note: for characters such as 'a' I set data = b'a' to convert the data in bytes
#However the same thing does not work with numbers...
data = 0
data = arduino.write(valueToWrite)
time.sleep(2)
arduino.close()
que fais-je de mal ou de malentendu? Je vous remercie.
arduino.write(chr(valueToWrite))