Я новичок в Arduino (и компьютерное программирование в целом), поэтому я прошу прощения, если этот вопрос выглядит глупо.
После того, как я установил основное соединение Arduino-LED, у меня возникают проблемы с отправкой INTEGERS в Arduino через последовательный порт. Я могу легко отправлять такие символы, как «m», «o» и т. Д. Однако, если я отправлю число, то, похоже, оно просто не получит его.
Вот код Arduino, в идеале он должен получить значение от порта USB через Python или последовательный монитор, а затем отрегулировать яркость светодиода в соответствии со значением. (значение должно быть в диапазоне [0,255]).
ПРИМЕЧАНИЕ: я использую ARDUINO UNO и 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);
}
Однако, когда я ввожу значение в последовательный порт или через Python, например, 0, он дает мне 48 в качестве ответа (что, что интересно, является кодом ASCII для 0!) И загорается светодиод, который не должен происходить, так как в 0 светодиод должен быть выключен !! Я что-то упускаю, но я не могу найти что ... Не могли бы вы сказать мне, что не так?
Вот код, который я использую в 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()
что я делаю не так или недоразумение? Спасибо.
arduino.write(chr(valueToWrite))