Arduino'da (ve genel olarak bilgisayar programlamasında) yeniyim, bu yüzden bu soru aptalca görünüyorsa özür dilerim.
Temel bir arduino-LED bağlantısı kurduktan sonra, seri port üzerinden INTEGERS'ı arduino'ya göndermekte sorun yaşıyorum. Kolayca 'm', 'o' ve benzeri karakterleri gönderebilirim .. Ancak bir numara gönderirsem, anlaşılmaz gibi görünüyor.
İşte Arduino kodu, ideal olarak python veya seri monitör aracılığıyla usb portundan bir değer almalı ve daha sonra LED'in parlaklığını değere göre ayarlamalıdır. (değer [0,255] aralığında olmalıdır).
NOT: ARDUINO UNO ve PYTHON 3 kullanıyorum
// --------------------------
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);
}
Ancak, Seri bağlantı noktasına veya Python aracılığıyla bir değer girdiğimde, örneğin 0, bana cevap olarak 48 verir (ilginç bir şekilde, 0 için ASCII kodu!) Ve o zamandan beri olması gerekmeyen LED'i yakar. 0'da LED kapalı olmalıdır !! Bir şey eksik ama ne bulamıyorum ... Lütfen neyin yanlış olduğunu söyler misiniz?
İşte Python içinde kullandığım kod:
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()
ne yanlış yapıyorum ya da yanlış anlıyorum? Teşekkür ederim.
arduino.write(chr(valueToWrite))