Skocz do zawartości

TkInter – obsługa silnika krokowego w Pythonie


David36

Pomocna odpowiedź

Stworzyem prosta aplikacje w tkinter - Python do sterowania silnikiem krokowym ale potzrebuje pomocy z kodem, chodzi mi o zmienne (kroki, szybkosc i przyspieszenie) pobierane z suwaka. Nie jestem pewien jakiego rodzaju zmiennych tutaj uzyc. Chce sterowac ta aplikacja z raspberry pi kod Arduino poprzez serial port. Dolanczam kod, moze komus sie kiedys do czegos przyda.  

import tkinter as tk
from tkinter import *


class Application(tk.Frame):

    def __init__(self, root, *args, **kwargs):

        tk.Frame.__init__(self, root, *args, **kwargs)

        #self.variable_name = variable_name
        self.sld1 = Scale(root, from_=0, to=35, orient='horizontal', length=250,
                             resolution='5', tickinterval=5,
                             command=lambda value, name=tk.Scale: self.report_change(name, value))
        self.sld1.grid(column=0, row=1, rowspan=1, columnspan=1, sticky='NSEW', pady=10, padx=10)
        self.Label = tk.Label(root, text='Steps')
        self.Label.grid(row=2, column=0, sticky=W, pady=2)

        self.sld2 = Scale(root, from_=100, to=1000, orient='horizontal', length=250,
                             resolution='100', tickinterval=250,
                             command=lambda value, name=tk.Scale: self.report_change(name, value))
        self.sld2.grid(column=0, row=3, rowspan=1, columnspan=1, sticky='NSEW', pady=10, padx=10)
        self.Label2 = tk.Label(root, text='Velocity')
        self.Label2.grid(row=4, column=0, sticky=W, pady=2)

        self.sld3 = Scale(root, from_=100, to=1000, orient='horizontal', length=250,
                             resolution='100', tickinterval=250,
                             command=lambda value, name=tk.Scale: self.report_change(name, value))
        self.sld3.grid(column=0, row=5, rowspan=1, columnspan=1, sticky='NSEW', pady=10, padx=10)
        self.Labe3 = tk.Label(root, text='Acceleratiom')
        self.Labe3.grid(row=6, column=0, sticky=W, pady=2)

        #self.Label.config(bg="#00ffff")

        def action():
            global output
            global variable
            output.insert(Motor_Run, Motor_STOP, variable.get())
            variable.grid()

        self.quitButton1 = tk.Button(root, text='Home', command=self.quit)
        self.quitButton1.grid(row=8, column=0, sticky=W, pady=12, padx=5)
        self.quitButton2 = tk.Button(root, text='STOP', command=action)
        self.quitButton2.grid(row=8, column=1, sticky=W, padx=5)
        self.quitButton3 = tk.Button(root, text='Run', command=action)
        self.quitButton3.grid(row=8, column=2, sticky=W, pady=1, padx=1)
        # self.quitButton3 = tk.Button(self, text='Exit', command=self.quit)
        # self.quitButton3.grid(row=9, column=2, sticky=W)

    def report_change(self, name, value):
            print("%s changed to %s" % (name, value))





if __name__ == '__main__':
    root = tk.Tk()
    root.geometry('365x360')
    root.title("Stepper Motor Control")
    app = Application(root)
    label = tk.Label
    root.mainloop()

      
 ArduinoCode:
  #include <AccelStepper.h>

// Define a stepper and the pins it will use
AccelStepper stepper; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5

void setup()
{  
  // Change these to suit your stepper if you want
  stepper.setMaxSpeed(100);
  stepper.setAcceleration(20);
  stepper.moveTo(500);
}

void loop()
{
    // If at the end of travel go to the other end
    if (stepper.distanceToGo() == 0)
      stepper.moveTo(-stepper.currentPosition());

    stepper.run();
}
 

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.