Python_Arduinoausgänge_steuern

Gast #6444224
Lesenswert?

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
import serial #Serial imported for Serial communication
2
import time #Required to use delay functions
3

4
ArduinoSerial = serial.Serial('com42',9600)
5
time.sleep(0.5)
6

7
def steuerung(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
while 1:
25
     
26
   #print ("write 1 to turn lauterbach on or 2 to turn XeTK on and press 'enter' ")
27
   Anweisung = raw_input()
28
   steuerung(Anweisung)




Code2
1
import serial #Serial imported for Serial communication
2
import time #Required to use delay functions
3

4
ArduinoSerial = serial.Serial('com42',9600)
5
time.sleep(0.5)
6

7
def steuerung():
8

9

10
          ArduinoSerial.write(str.encode('A'))
11
          time.sleep(0.5)
12
          print (" LED is on")
13

14

15

16
steuerung()
#6444982
Lesenswert?

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.
Gast #6444990
Lesenswert?

@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.
Gast #6445032
Lesenswert?

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.
Gast #6445140
Lesenswert?

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.
Moderator #6445282
Lesenswert?

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?
Gast #6445354
Lesenswert?

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.
#6445616
Lesenswert?

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…

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren