Hallo zusammen,
ich versuche die Arduinoausgänge über python zu steuern. Nun weiß ich
nicht, wieso es bei Code1 funktionieret und bei Code 2 nicht. Der
einzige Underschied ist, dass ich im ersten Code '1' eingeben muss. Ich
hoffe ihr Könnt damit unterstützen.
ps: das ist mein erster Code in Python und Deutsch ist ne Fremdsprache
für mich.
Danke
Code1
1
importserial#SerialimportedforSerialcommunication
2
importtime#Requiredtousedelayfunctions
3
4
ArduinoSerial=serial.Serial('com42',9600)
5
time.sleep(0.5)
6
7
defsteuerung(eingabe):
8
9
if(eingabe=='1'):
10
ArduinoSerial.write(str.encode('A'))
11
time.sleep(0.5)
12
print(" LED is on")
13
14
elif(eingabe=='a'):
15
ArduinoSerial.write(str.encode('a'))
16
time.sleep(0.5)
17
print("led is off")
18
19
else:
20
ArduinoSerial.write(str.encode('0'))
21
time.sleep(0.5)
22
print("led is off")
23
24
while1:
25
26
#print ("write 1 to turn lauterbach on or 2 to turn XeTK on and press 'enter' ")
Moin,
ich tippe auf einen Mischmasch an Tabs und Leerzeichen. Theoretisch
sollte es nämlich funktionieren.
Gibts eine Fehlermeldung oder geht die LED nur nicht an?
Grüße,
nicht"Gast" schrieb:> ich tippe auf einen Mischmasch an Tabs und Leerzeichen. Theoretisch> sollte es nämlich funktionieren.
Und genau deswegen ist das angeblich leichte Python für mich kein ernst
zu nehmender Kandidat. Was hat sich der Erschaffer der Sprache bei
diesem Blödsinn nur gedacht?
Ich habe keine Ahnung von Arduino, aber ich dachte immer ARduino hat
einen Atmega oder STM32 als Basis? Wie kann man und warum sollte man da
mit Python "programmieren"? Klingt eher nach Arduino mit nem raspberry
pi oder cython🙄
Klärt mich mal auf, da ist mir google zu schade für.
@Ben,
na so schwer ist das nicht. Offensichtlich will der TE den Arduino nicht
selber programmieren, sondern vom PC aus ansteuern. Auf dem Arduino
läuft ein Programm, dass die Kommandos über die serielle entgegen nimmt
und dann die Ports schaltet.
nicht"Gast" schrieb:> ich tippe auf einen Mischmasch an Tabs und Leerzeichen.
Zumindest im geposteten Code ist das okay.
Ben S. schrieb:> Was hat sich der Erschaffer der Sprache bei> diesem Blödsinn nur gedacht?
Was dir nicht gefällt, ist also Blödsinn. Nun ja …
>Ich habe keine Ahnung von Arduino,
So ist es.
> aber ich dachte immer ARduino hat einen Atmega oder STM32 als Basis?
Du musst eher umgekehrt fragen, für welchen Prozessor gibt es kein
Arduino-Framework.
Hier ein Liste mit Prozessorangabe der offiziellen Arduino Boards:
https://de.wikipedia.org/wiki/Liste_von_Arduino-Boards
von nicht"Gast" schrieb:
>Offensichtlich will der TE den Arduino nicht>selber programmieren, sondern vom PC aus ansteuern. Auf dem Arduino>läuft ein Programm, dass die Kommandos über die serielle entgegen nimmt>und dann die Ports schaltet.
Also gibt es zwei Programme, einmal auf dem PC und
ein Programm auf den Arduino, und beide müssen
fehlerfrei sein, damit es funktioniert. Man könnte
erst mal zwei PCs mit einem 0-Modemkabel verbinden
um zu sehen was Python da sendet. Dann könnten die
beiden Programme auch noch fehlerfrei sein, aber
die Kabelverbindung einen Fehler haben.
nicht"Gast" schrieb:> Offensichtlich will der TE den Arduino nicht selber programmieren,> sondern vom PC aus ansteuern
Genauso will ich machen. Wieso macht sich hier jeder lustig, fasse ich
wirklich nicht.
Beim ersten Code ist die LED an und funktioniert wie erwartet. Beim
zweiten Code wird " LED is on" auf der console angezeigt.
Rx-LED am Arduino wird auch an. Ausser LED am Board.
Zurück zum Thema
Wird Dir beim Start das Python Programmes Code2 auch die print Ausgabe
angezeigt? Wird also komkret die Funktion steuerung() tatsächlich
aufgerufen?
Den einzigen wesentlichen Unterschied sehe ich darin, dass die zweite
Variante das Zeichen schon 0,5 s nach dem Programmstart sendet, während
die erste erst auf eine Benutzereingabe wartet. Kann es sein, dass über
irgendeinen Mechanismus beim Start des Pythonprogramms der Arduino
resettet wird und 0,5 s danach noch nicht bereit ist, Zeichen zu
empfangen? Funktioniert die zweite Variante, wenn du vor dem Senden des
Zeichens einen weiteren Sleep von 10 s einfügst?
Mist nicht richtig gelesen. Oben schreibt Javir ja, dass die Print
Ausgabe kommt (und die EmpfangsLED auch was bekommt.
Damit riecht es tatsächlich eher nach einem Problem, das nicht
unmittelbar am Python Code liegt.
(Timing, Zustände des Arduino....)
Ist das Senden einer '0' aus dem else zweig von Code1 ggf wichtig?
Muss der Arduino erst in einen entsprechenden Zustand?
Ich würde das tatsächlich mal mit einem Terminal Programm probieren und
die Signale per Hand senden.
Javir schrieb:> Beim ersten Code ist die LED an und funktioniert wie erwartet. Beim> zweiten Code wird " LED is on" auf der console angezeigt.> Rx-LED am Arduino wird auch an. Ausser LED am Board.
Am besten könntest du dir mit einem zweiten seriellen Port mal mitlesen,
was genau da gesendet wird. So auf den ersten Blick gibt's ja eigentlich
keinen Unterschied. Du könntest auch mal ein flush() nach dem write()
machen.
Ben S. schrieb:> nicht"Gast" schrieb:>> ich tippe auf einen Mischmasch an Tabs und Leerzeichen. Theoretisch>> sollte es nämlich funktionieren.>> Und genau deswegen ist das angeblich leichte Python für mich kein ernst> zu nehmender Kandidat.
Weil man dort kaputte Einrückung vermeiden muss? Da ich sowieso immer
vernünftig einrücke, ist dieses "Problem" für mich nicht existent.
> Ich habe keine Ahnung von Arduino, aber ich dachte immer ARduino hat> einen Atmega oder STM32 als Basis? Wie kann man und warum sollte man da> mit Python "programmieren"? Klingt eher nach Arduino mit nem raspberry> pi oder cython🙄>> Klärt mich mal auf, da ist mir google zu schade für.
Verstehe. Du willst es zwar gerne wissen, bist aber sogar noch zu faul,
das mal in Google einzugeben…