LEDs uns Servo programmieren

  • Hallo,
    ich habe bis jetzt ein Programm mit dem ich 10 LEDs über 10 GPIOs steuere. Also in der Geschwindigkeit 0,48 und blinken alle nacheinander.
    Jetzt möchte ich einen Servo mit einfügen. Allerdings wenn ich 2 while Schleifen erstelle, wird die untere ausgeblendet.
    Ich möchte also die LEDs ihre Runden laufen lassen und nebenbei einen Servo unabhängig voneinander bewegen.

    Script für die LEDs (kurzer Ausschnitt):

    import RPi.GPIO as GPIO
    import time
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)

    #Richtung der GPIO-Pins festlegen (IN / OUT)
    GPIO.setup(16, GPIO.OUT)
    GPIO.setup(12, GPIO.OUT)
    GPIO.setup(40, GPIO.OUT)
    GPIO.setup(22, GPIO.OUT)
    GPIO.setup(7, GPIO.OUT)
    GPIO.setup(37, GPIO.OUT)
    GPIO.setup(18, GPIO.OUT)
    GPIO.setup(35, GPIO.OUT)
    GPIO.setup(33, GPIO.OUT)
    GPIO.setup(11, GPIO.OUT)
    #unendliche Schleife
    while True:
    #Pin 15 HIGH Pegel
    GPIO.output(12, True)
    #eine halbe Sekunde warten
    time.sleep(0.4800)
    #Pin 26 LOW Pegel
    GPIO.output(12, False)
    #eine halbe Sekunde warten
    time.sleep(0.00000001)
    usw.

    Script für den Servo:

    import RPi.GPIO as GPIO
    import time

    servoPIN = 32
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(servoPIN, GPIO.OUT)
    GPIO.setwarnings(False)
    p = GPIO.PWM(servoPIN, 50) # GPIO 18 als PWM mit 50Hz
    p.start(2.5) # Initialisierung
    try:
    while True:
    p.ChangeDutyCycle(5)
    time.sleep(0.48)
    p.ChangeDutyCycle(7.5)
    time.sleep(0.48)
    p.ChangeDutyCycle(10)
    time.sleep(0.48)
    p.ChangeDutyCycle(12.5)
    time.sleep(0.48)
    p.ChangeDutyCycle(10)
    time.sleep(0.48)
    p.ChangeDutyCycle(7.5)
    time.sleep(0.48)
    except KeyboardInterrupt:
    p.stop()
    GPIO.cleanup()

    Das beides möchte ich zusammenfügen, aber das der Servo unabhängig sich zu den LEDs bewegt.
    Ich komme einfach nicht weiter. :s
    Könnt ihr mir helfen?

  • Ist das jetzt der dritte oder schon der vierte Thread zum gleichen Thema? Warum postest du immer wieder neu, statt mit den gegebenen Antworten zu arbeiten oder da nachzufragen? Die Möglichkeiten werden nicht magisch mehr.

  • Hallo __deets__,


    Ist das jetzt der dritte oder schon der vierte Thread zum gleichen Thema? Warum postest du immer wieder neu, statt mit den gegebenen Antworten zu arbeiten oder da nachzufragen? Die Möglichkeiten werden nicht magisch mehr.


    Ach komm! Du kennst doch den Film: "Und ewig grüßt das Murmeltier"?

    Doch, der Möglichkeiten gibt es noch mehrere.

    Da war letztens einer, der wollte drei LEDs unabhängig voneinander blinken lassen. Abgesehen von dem Thread zu dem Thema mit Schwerverletzten und ein paar Belustigten habe ich eine Lösung in Icon in einem eigenen Thread gepostet. Diese kommt mit 9 Programmzeilen aus.

    Und das Geniale ist, wenn man eine Abstraktion durchführt, und zur Erkenntnis gelangt, dass es pille-palle ist, ob man LEDs, Relais, Servos oder sonstwas schaltet, es geht immer um GPIO-Pin auf HIGH oder LOW setzen.


    Agentdroid 008: Schau Dir doch mal den von mir geposteten Code an und übertrage ihn nach Python. Das sollte nicht schwerfallen, da ich den Code sehr ausführlich gedeutet habe. Ggf. must Du allerdings ein Python-Tutorial zu Rate ziehen. Das halte ich unabhängig von allem eh mal für die beste Idee.


    Wenn Du in einer Schleife 10 LED leuchten / blinken lassen kannst, dann schaffst Du es auch mit deren elf. Und wenn einer davon keine LED sondern ein Servo ist, dann ist das dem Programm vollkommen schnurz. Das Programm merkt das noch nicht einmal. Logische Schlussfolgerung: Du brauchst nur eine Schleife - das Problem mit zwei Schelifen, die sich gegenseitig ausschließen entsteht erst gar nicht.

    Und ich verspreche Dir: Dein Vorhaben könnte ich nur durch Erweiterung in einem ebenfalls 9-Zeilen-Programm lösen. Mit "Magic Strings" reichen sogar nur 7 Programmzeilen, aber an die sollte man sich nicht gewöhnen.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (5. Februar 2017 um 13:18)

  • Agentdroid 008:

    Bitte nehme davon Abstand in 2 Tagen wieder einen Thread zu dem selben Thema zu erstellen. Behandel dein Anliegen doch bitte nun hier und beachte aber zugleich auch das was im vorherigen Thread beschrieben wurde.

    Wir (und andere Foren) mögen es nicht fix&fertigen Code auf einem Silbertablet jemanden vor die Füße zu legen - etwas Eigeninitiative muss derjenige schon aufbringen und zumindest Versuche zeigen.

    Du hast ja bereits festgestellt dass 2 while's in einem Script nicht so funktioniert wie du dir das vorstellst. Man kann das auf unterschiedliche Art und Weise lösen, aber so wie du dich derzeit verhälst sehe zumindest ich nicht ein dir alle Eventualitäten ausführlich vorzukauen, vor allem weil immer noch nicht das Zusammenspiel ersichtlich ist, welche Abhängigkeiten zwischen LED und Servo...
    Solange du selbst das nicht bereit bist zu beschreiben kannst du vermutlich noch 20 Threads zum selben Anliegen erstellen

    Also bitte beende dieses Katz und Maus spiel, ansonsten demotivierst du alle die versuchen dir zu helfen woraufhin wir irgendwann gar nicht mehr helfen, weder dir noch anderen.... Denn Geduld hat irgendwann auch ein Ende.

  • Ok ja stimmt. Ich werde keine weiteren extra Threads posten.

    Schon einmal danke für eure Rückmeldungen.
    Und zwar zu einem anderen Projekt von mir das sehr dringend ist. Ich muss eine Alarmanlage bauen. Dabei soll ich einen Magnetschalter, einen PIR Bewegungssensor als Melder nutzen. Als Alarmmittel (Lampe, Sirene), soll ich eine Funksteckdose anschalten und über einen GPIO Pin eine Sirene anschalten. Ich habe bis jetzt nur im Kopf, das ich eine if und else Schleife brauche, der Aufbau darin ist mir noch nicht ganz klar. Allerdings hat mein Freund der mir dabei geholfen hat, mich alleine gelassen. Ich muss aber bis diesen Samstag die Alarmanlage fertig haben. Die Aufgabe habe ich auch erst Montag bekommen. Als einzigste Möglichkeit seid mir ihr noch eingefallen als RPi Experten. Ich hoffe ihr könnt mir helfen. :helpnew: :helpnew:

    Ich muss das für ein Projekt in unserer Schule machen, aber mein Lehrer der kann mir selber nicht helfen, weil er selber nicht viel dazu weiß. Im Internet bin ich auch nicht viel schlauer geworden.
    Mir ist auch noch unklar wie ich die Funksteckdose angeschalten bekomme.

    Falls ihr schon Scripte und Bauanleitungen habt, sendet sie mir einfach zu. :danke_ATDE:

  • Sorry aber nur weil du sehr dringend fett schreibst wird dir nicht schneller geholfen, insbesondere nicht solange keine Eigeninitiative erkennbar ist.... Normalerweise habe ich sehr viel Geduld, aber bei dir komme ich mir langsam vor als spreche man gegen Windmühlen...

    Du musst eine Alarmanlage bauen? :-/ Wer hat dir das aufgedrückt? Dein Lehrer / Dozent? Wenn ja, dann ist es um so wichtiger das du MIT uns arbeitest - nicht darauf wartest das Wir dir was vor die Füße legen.

    Wenn du das ganze bis diesen Samstag abliefern musst dann erstaunt es mich um so mehr wieso du mehrere Threads zum selben Anliegen erstellst und jeweils nur alle paar Tage reagierst? Also erwarten würde ich dann eigentlich auch eine höhere Präsenz?! Also entschuldige aber das wirkt (wieder) so als legst du dich auf die faule Haut und wartest darauf das wir dir das ganze fertig vor die Füße legen....

    Mit einer einfachen if Abfrage (das ist keine Schleife) wirst du da nicht weit kommen. Bei einer Alarmanlage ist es essenziell wichtig dass ab Scharfschaltung die Auslösung der Melder sofort registriert und eine Aktion durchgeführt wird.

    Es fehlen für mich aber auch noch wichtige Hintergrundinformationen,
    wie zum Beispiel ob das ganze Visuell dargestellt werden soll - also zum Beispiel über eine Tkinter GUI über die man die Alarmanlage scharf schaltet und aktuellen Status von Meldern darstellt etc.. Oder über eine Webseite usw.... Oder ob es einfach nur eine Ausgabe auf der Konsole sein soll. Davon abhängig wäre es dann nämlich auch wie umfangreich bzw umständlich das ganze Programmiert werden muss (wie ich in dem anderen Thread schon mal schrieb wäre es über Tkinter einfach(er), aber wenn dein Lehrer keine Grafische Ausgabe möchte ist das hinfällig).
    Auch fehlt son bisschen die Info um was für einen PIR, Lampe, Sirene es sich handelt bzw wie die angesteuert werden sollen..
    Und auch um was für Funksteckdosen es sich handelt (können die auch über "send" angesprochen werden?)

    Wenn du solche Details auch erst wieder in 2 Tagen mitteilst kannst du sehr dringend auch extrem groß schreiben, das wäre mir persönlich dann egal. Also: Tacheles! Setz dich dran und arbeite mit uns!

  • Hallo Agentdroid008,

    auch wenn die Schulaufgabe sehr dringend ist, vermag ich mir nicht vorzustellen, dass es Dir nicht möglich sein soll, nach ähnlichen Projekten zu suchen.

    Ich habe mal im Ansatz Ähnliches hier vorgestellt. Die Idee kam mir an einem Samstag beim Einkaufden. Am Abend habe ich mich dann hingesetzt, SAchen zusammengesteckt, ein kurzes Programm geschrieben und nach 1 Stunde war die xtixxe Alarmanlage fertig.

    Wenn Du Dich mit den Grundlagen der Funktionsweise eines Bewegungssensors beschäftigst hättest, dann wäre es kein unüberwindliches Problem, diesen an einen Raspberry Pi anzuschließen und mit Hilfe tausendfach geposteter Code-Zeilen zu testen.

    Am Montag willst Du die Aufgabe bekommen haben. Heute ist Dienstag, meinst Du gestern oder einer der vergangenen Montage?

    Funksteckdoesen haben auch schon Hundertscharen zum Laufen bekommen und darüber berichtet.

    Und solche Sachen findest Du nicht? Fehlen Dir die richtigen Suchbegriffe? Oder suchst Du erst gar nicht?


    Mann, Mann, Mann... Ihr macht heute in der Schule so spannende Sachen. Wir haben damals nur ein einziges Mal mit irgendwelchen Logik-Gattern arbeiten dürfen. Und den ersten Computer, den unsere Schule damals für den ersten Informatik-Kurs beschaft hatte, war ein CBM 8032 (oder 8096?). 1980 war das.

    Ihr habt heute die Möglichkeit, mit Dingen Erfahrung zu sammeln, die mittlerweile in der Industrie nachgefragt werden.

    Und dann diese fehlende Eigeninitiative. Ich versteh's nicht...

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (7. Februar 2017 um 19:54)

  • Ok ja stimmt sry ich müsste schon mit euch arbeiten.

    Also, ich habe als Bewegungsmelder den: http://amzn.to/2kDZA2j und als Magnetschalter den: http://amzn.to/2jZkDza
    Dazu benutze ich als Funksteckdose die: http://amzn.to/2lgWJPT. Als Sender nutze ich wie der zum RPi passt, den: http://amzn.to/2jYYhZV (nur den Sender)
    Für die 12V Sirene wollte ich über einen Transistor 5V schalten und über einen kleinen Trafo auf 12V zu kommen. Sirene: http://amzn.to/2jYTCXT
    Laut meinem Dozenten soll ich es so machen, das der Magnetschalter und der Bewegungsmelder ausgelöst werden muss bis der Alarm anfängt.

  • Hallo Agentdroid,

    gut... das war Schritt 1...

    Schritt 2: Suche bitte die Datenblätter zu jeder Komponente...

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (7. Februar 2017 um 20:27)

  • Na dann schreib' Dir doch einfach mal den Programm-Ablauf als Pseudo-Code auf.
    Das kannst Du dann relativ einfach in z.B. Python übertragen.

    btw: wie habt ihr das beigebracht bekommen? Einen PAP zu zeichnen oder auf welche Art macht ihr die Design- und Implementierungs-Planung?

    cu,
    -ds-

  • Ok habe ich. Ich habe den Magnetschalter mit dem Befehl getestet und er zeigt 0 an (Achtung verkehrtherum) zu jeder zeit (auf und zu) wie kann das dann wieder sein?

    import RPi.GPIO as GPIO

    GPIO.setmode(GPIO.BOARD) # GPIO Nummern statt Board Nummern

    MAGNET_GPIO = 11
    GPIO.setup(MAGNET_GPIO, GPIO.IN) # GPIO Modus zuweisen
    print GPIO.input(MAGNET_GPIO)

    Es hat schon einmal funktioniert.

  • Oh mann, da ist echt was schiefgegangen =(

    Ich stimme den anderen voll und ganz zu. Dir muss man echt jedes Wort aus der Nase ziehen (habe mal ein paar deiner Threads angeschaut), daher Schritt eins: meine Signatur anschauen :fies:

    Als nächstes stellt sich mir die Frage, warum dir dein Lehrer so eine Aufgabe stellt, bei der er dir selbst nicht helfen kann, wie will er dann ein mögliches Ergebnis bewerten?? Und wieso bist du in einem Unterrichtsfach, in dem ihr Aufgaben zum Pi bekommt und kannst dann sowas nicht mal Googlen? (nochmal meine Signatur, die nehme ich echt ernst) So läuft das jedenfalls nicht, du bist nicht der erste, der mit dem Pi eine Alarmanlage baut, da gibts sogar auf der Foundation Website ne Anleitung für Grundschüler (auch mit Bewegungssensor, Link darfst du selbst suchen :fies: )

    LG :wallbash:

    PS: mal schauen, ob fett unterstrichen dich zu schnellerem Handeln bringt :s


  • Also, ich habe als Bewegungsmelder den: http://amzn.to/2kDZA2j und als Magnetschalter den: http://amzn.to/2jZkDza
    Dazu benutze ich als Funksteckdose die: http://amzn.to/2lgWJPT. Als Sender nutze ich wie der zum RPi passt, den: http://amzn.to/2jYYhZV (nur den Sender)
    Für die 12V Sirene wollte ich über einen Transistor 5V schalten und über einen kleinen Trafo auf 12V zu kommen. Sirene: http://amzn.to/2jYTCXT
    Laut meinem Dozenten soll ich es so machen, das der Magnetschalter und der Bewegungsmelder ausgelöst werden muss bis der Alarm anfängt.

    Hast du mit den PIR Sensoren schon mal was gemacht?

    Die haben 2 Stellschrauben... Auf Deinem Amazon Link das 4.Bild von oben => Das linke Poti ist für "Delay" also Verzögerung, das rechte für "Sensitivity" also Empfindlichkeit.

    Nun ist es so das auf dem Platinchen des PIR's bereits alle nötigen Bauteile vorhanden sind, inkl. Vorwiderstände / Spannungsteiler bzw Pull up/down's usw. Man kann den PIR also direkt an den Pi anschließen.

    An dieser Stelle ein wichtiger Hinweis:
    Der PIR läuft nur mit 5V ... Der "VCC" Pin muss also mit dem 5V Pin der GPIO Leiste vom Pi verbunden werden. ABER Super wichtig! Die GPIO's des RaspberryPi's vertragen keinesfalls 5 Volt! Die GPIOs sind nur 3V3 tolerant! Jagst du mehr auf die GPIO's kannst du dir den Pi zerstören, da die ungebuffert/direkt zur SoC gehen.
    Normalerweise ist es so das ein Gerät das mit 5V betrieben wird auch 5V auf den I/O's ausgibt, aber bei dem PIR wurde bereits in Form eines Level-Shifters / Spannungsteilers vorgesorgt. Bitte behalte das im Hinterkopf und sei vorsichtig bei der Verdrahtung!

    Merk dir am besten auch das wenn du an der Verdrahtung etwas ändern willst du den Pi erst herunterfährst und vom Stromnetz trennst!

    Der Magnetschalter ist ja im Prinzip nur ein sog. Reed-Switch.

    Hierzu muss man aber auch direkt etwas erwähnen - was auch deine letzte Frage beantworten sollte: https://www.elektronik-kompendium.de/sites/raspberry-pi/2006051.htm
    Bedeutet: Entweder Softwareseitig Pull Up/Down aktivieren, oder (was das beste wäre) Hardwareseitig einen verlöten.
    ABER: Nicht direkt auf die Stiftleiste des Pi's sondern wirklich erst etwas zum stecken nehmen! Direkt an der Stiftleiste des Pi's herum zu löten kann sehr böse enden, vor allem wenn derjenige mit Lizenz zum Blödsinn äh Lötzinn kaum Erfahrungen hat

    Denn der Magnetschalter hat im Gegensatz zum PIR Sensor, noch keinen Pull Up/Down verbaut.

    Die Sirene solltest du am besten mithilfe reines Relais schalten.

    Deine Funksteckdosen verwenden also auch das "raspberry-remote" Programm - besagtes "send". Damit lässt sichs relativ gut arbeiten.


    Aber erst mal Überlegung zur Software:

    Immer noch unbeantwortet ist wie Du dir das vorstellst?
    Möchtest du eine grafische Darstellung? Etwas das du auf einem Touchscreen oder mit einer Maus bedienen kannst, und dir Zustände sofort und visuell angezeigt werden wie zum Beispiel das all deine PIR's derzeit nichts erkennen und sobald diese Bewegung erkennen wir dir das in der GUI angezeigt?
    Oder reicht dir eine Textausgabe bzw die einzige Form der Visualisierung durch LED's ? Also einen Pi ohne Display der dir nur via LED's den aktuellen Status signalisiert?

    Wie gesagt, die Software bzw diese eine Frage ist entscheidend, weil davon abhängig ist wie man mit dem Programm/Script anfängt. Solange das nicht geklärt ist kann man noch 10000 Seiten über Hardware texten

  • Im Editor unter dem Beitrag "Neues Attachment" ..."Durchsuchen" -> Datei auswählen -> "Attachment hinzufügen"

    btw: übrigens immer den gesamten Code posten, nicht nur Fragmente ...
    ach ja: und? Wie habt ihr jetzt die Software-Entwicklung beigebracht bekommen? PAP, Struktogramme, ....?

    cu,
    -ds-

  • Ich hatte mir es so vorgestellt, das ich die Scharfschaltung anhand einer kleinen roten LED sehe. Der RPi ist sozusagen versteckt. Also wenn sie brennt, ist der Alarm scharf. Dann ist auch die Frage wie aktiviere, deaktiviere ich das System? Ich denke versteckt wo die kleine LED sitzt, ist auch ein Taster, der den Alarm aktiviert, deaktiviert. Also beides auf einem Breadboard.
    Automatisch zusammengefügt:
    Also wir haben es von unserem Dozenten nur spärlich bekommen ( da er selber dazu nicht allzuviel weiß ) und sollen uns das anhand von Freunden und Foren erarbeiten.

    Einmal editiert, zuletzt von Agentdroid 008 (7. Februar 2017 um 21:02)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!