Seite 1 von 1

Serielle Kommunikation

Verfasst: Samstag 26. Mai 2018, 19:30
von Python_User
Hallo erstmal,

ich habe nicht viel Programmiererfahrung und nutze Python3 mit mac.

Ich versuche schon seit geraumer Zeit mit Python und dem Arduino Uno zu arbeiten.
Mein Ziel ist es, eine Led am Arduino mit einem Python-GUI an und auszuschalten.

Code: Alles auswählen

 #!/usr/bin/env python3

import serial

from tkinter import*

arduinoData = serial.Serial ("/dev/cu.usbmodem1411", 9600)
arduinoData.open

def led_on():
     arduinoData.write(b'1')


def led_off():
     arduinoData.write(b'0')


led_control_window = Tkinter.Tk()

Button = Tkinter.Button

btn = Button(led_control_window, text="ON", command=led_on)
btn1= Button(led_control_window, text="OFF", command=led_off)

btn.grid(row=0, column=1)
btn1.grid(row=1, column=1)

led_control_window.mainloop()

input("Press enter to exit")

Der Arduino-Code ist der folgende.

Code: Alles auswählen


int led = 13;
char serialData;


void setup() {                
  
  pinMode(led, OUTPUT);     
    Serial.begin(9600);
}


void loop() {
  if (Serial.available() > 0) {
    serialData = Serial.read();
    Serial.print(serialData);
    
    if (serialData == '1') {
      digitalWrite(led, HIGH); }
    
    else if (serialData =='0') {
      digitalWrite(led, LOW); }  

}
Es kommen ständig Fehlermeldungen
Ich denke es liegt an dem seriellen Port.

Ich hoffe, ihr könnt erkennen, was das Problem ist.

Danke im Vorraus

Re: Serielle Kommunikation

Verfasst: Samstag 26. Mai 2018, 20:12
von __deets__
Und verrätst du uns auch die Fehlermeldungen?

Re: Serielle Kommunikation

Verfasst: Samstag 26. Mai 2018, 20:20
von __deets__
Und noch ein Nachtrag: hinter dem open fehlt die Klammer unbeschädigt tu tun. Ob das überhaupt notwendig ist weiß ich allerdings auswendig nicht.

Re: Serielle Kommunikation

Verfasst: Samstag 26. Mai 2018, 20:55
von Python_User
Hab das mit den Klammern jetzt hinzugefügt.
Und hier die Fehlermeldung:

Traceback (most recent call last):
File "/Users/volkanyigitbas/Desktop/Python_LED.py", line 8, in <module>
arduinoData.open()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/serial/serialposix.py", line 261, in open
raise SerialException("Port is already open.")
serial.serialutil.SerialException: Port is already open.

Re: Serielle Kommunikation

Verfasst: Samstag 26. Mai 2018, 21:02
von Sirius3
Du hast wahrscheinlich noch die Arduino-IDE offen, die den USB-Port blockiert.

Das ›open‹ kann man auch komplett löschen, weil Serial-Objekte schon beim Erstellen geöffnet werden. ›Tkinter‹ ist nicht definiert, so dass es da dann den nächsten Fehler gibt. Sternchenimporte vermeiden. Button als an eine Variable zu binden ist ungewöhnlich. Üblicherweise schreibt man »import tkinter as tk« und greift auf alle Tk-Objekte über tk.xy zu.

Re: Serielle Kommunikation

Verfasst: Samstag 26. Mai 2018, 21:40
von Python_User
Ich danke euch für die schnelle Hilfe.
Nun klappt alles wie gewünscht.
Es lag an dem open und den Button als Variable.