나는 Arduino (일반적으로 컴퓨터 프로그래밍)를 처음 사용 하므로이 질문이 어리석은 경우 사과드립니다.
기본 arduino-LED 연결을 설정하면 직렬 포트를 통해 INTEGERS를 arduino로 보내는 데 문제가 있습니다. 'm', 'o'등의 문자를 쉽게 보낼 수 있습니다. 그러나 숫자를 보내면 단순히 숫자를 얻지 못하는 것처럼 보입니다.
Arduino 코드는 이상적으로는 Python 또는 직렬 모니터를 통해 USB 포트에서 값을 가져온 다음 값에 따라 LED의 밝기를 조정해야합니다. (값은 [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을 응답으로 제공합니다 (흥미롭게도 0의 ASCII 코드입니다!). 0에 LED가 꺼져 야합니다 !! 뭔가 빠졌지 만 찾을 수 없습니다 ... 무엇이 잘못되었는지 말씀해 주시겠습니까?
파이썬에서 사용하는 코드는 다음과 같습니다.
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))