Ich bin neu in Arduino (und Computerprogrammierung im Allgemeinen), also entschuldige ich mich, wenn diese Frage albern aussieht.
Sobald ich eine grundlegende Arduino-LED-Verbindung eingerichtet habe, habe ich Probleme, INTEGERS über die serielle Schnittstelle an Arduino zu senden. Ich kann leicht Zeichen wie 'm', 'o' usw. senden. Wenn ich jedoch eine Nummer sende, sieht es so aus, als würde sie einfach nicht verstanden.
Hier ist der Arduino-Code. Idealerweise sollte er einen Wert vom USB-Anschluss über Python oder den seriellen Monitor erhalten und dann die Helligkeit der LED entsprechend dem Wert anpassen. (Wert muss im Bereich [0,255] liegen).
HINWEIS: Ich verwende ARDUINO UNO und 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);
}
Wenn ich jedoch einen Wert in den seriellen Port oder über Python eingebe, zum Beispiel 0, erhalte ich 48 als Antwort (was interessanterweise der ASCII-Code für 0 ist!) Und leuchtet die LED auf, was seitdem nicht mehr passieren sollte bei 0 sollte die LED aus sein !! Mir fehlt etwas, aber ich kann nicht finden, was ... Könnten Sie mir bitte sagen, was los ist?
Hier ist der Code, den ich in Python verwende:
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()
Was mache ich falsch oder missverstehe ich? Danke.
arduino.write(chr(valueToWrite))