Saya baru mengenal Arduino (dan pemrograman komputer secara umum), jadi saya minta maaf jika pertanyaan ini terlihat konyol.
Setelah saya mengatur koneksi arduino-LED dasar, saya memiliki masalah dalam mengirim INTEGERS ke arduino melalui port serial. Saya dapat dengan mudah mengirim karakter seperti 'm', 'o' dan seterusnya .. Namun jika saya mengirim nomor sepertinya tidak mendapatkannya.
Berikut adalah kode Arduino, idealnya harus mendapatkan nilai dari port usb melalui python atau monitor serial dan kemudian menyesuaikan kecerahan LED sesuai dengan nilainya. (nilai harus dalam kisaran [0,255]).
CATATAN: Saya menggunakan ARDUINO UNO dan 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);
}
Namun, ketika saya memasukkan nilai ke port Serial atau melalui Python, misalnya 0, itu memberi saya 48 sebagai jawaban (yang, menariknya, adalah kode ASCII untuk 0!) Dan menyalakan LED yang bukan yang seharusnya terjadi karena pada 0 LED harus dimatikan !! Saya kehilangan sesuatu tetapi saya tidak dapat menemukan apa ... Bisakah Anda memberi tahu saya apa yang salah?
Berikut adalah kode yang saya gunakan dalam 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()
apa yang saya lakukan salah atau kesalahpahaman? Terima kasih.
arduino.write(chr(valueToWrite))