Tôi chưa quen với Arduino (và lập trình máy tính nói chung), vì vậy tôi xin lỗi nếu câu hỏi này có vẻ ngớ ngẩn.
Khi tôi thiết lập kết nối arduino-LED cơ bản, tôi gặp vấn đề khi gửi INTEGERS tới arduino thông qua cổng nối tiếp. Tôi có thể dễ dàng gửi các ký tự như 'm', 'o', v.v. Tuy nhiên, nếu tôi gửi một số thì có vẻ như đơn giản là nó không nhận được.
Đây là mã Arduino, lý tưởng là nó sẽ nhận được một giá trị từ cổng usb thông qua python hoặc màn hình nối tiếp và sau đó điều chỉnh độ sáng của đèn LED theo giá trị. (giá trị phải nằm trong phạm vi [0,255]).
LƯU Ý: Tôi đang sử dụng ARDUINO UNO và 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);
}
Tuy nhiên, khi tôi nhập một giá trị vào cổng Nối tiếp hoặc thông qua Python, ví dụ 0, nó cho tôi 48 câu trả lời (điều thú vị là mã ASCII cho 0!) Và bật đèn LED không phải là điều nên xảy ra vì ở 0 đèn LED sẽ tắt !! Tôi đang thiếu một cái gì đó nhưng tôi không thể tìm thấy những gì ... Bạn có thể vui lòng cho tôi biết những gì sai?
Đây là mã tôi sử dụng trong 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()
Tôi đang làm gì sai hay hiểu lầm? Cảm ơn bạn.
arduino.write(chr(valueToWrite))