Posts by Yogibaer1702

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!

    Hallo,


    kann mir mal jemand erklären, wie dieser Codeschnipsel genau funktioniert? Im groben weiß ich schon was dort passiert, lediglich die ersten fünf Zeilen sind mir etwas unklar.:conf:

    In Zeile eins wird ja der String "Hier steht der Email_Text" in der Variable "text" gespeichert. Was bedeuten die nächsten vier Zeilen? Was passiert dort genau? Ist MimeText ein "Texteditor" der anschließend den Platzhalter 'Subject' durch den String " Hier steht der Betreff der Email" ersetzt?

    Verweisen die Eckigen Klammern nicht auf eine Liste? Ich hoffe mir kann jemand unter die Arme greifen.


    Vielen Dank im Vorraus:danke_ATDE:


    ok vielen Dank.

    Um es mal Laienhaft auszudrücken, könnte ich doch jetzt auch normal über einen Dreisatz jeden Winkel von 0° bis 180° ausrechnen wenn ich weiß das 150 0° sind und 600 180°. Da das ja alles nur ungefähre Angaben sind müsste das ja passen oder?


    Ich überlege grad ob ich mir nicht einfach eine Liste erstelle mit den von mir benötigten "Servosteps" siehe unten. Das müsste doch auch funktionieren wenn ich nun nich unbedingt die Winkelangaben brauche oder?


    wow super vielen Dank für eure Erklärung. Ich glaube ich habe es jetzt langsam verstanden was da vor sich geht. Allerdings bin ich auch schon darüber gestolpert, das die Funktion gar nicht aufgerufen wird:conf:. Aber woher weiß Python dann das die "150" quasi 0° sind, wenn der Bezug durch die Funktion nicht gegeben ist?

    Hallo Leute,


    ich bin grad dabei das PCA9685 Servohat in Betrieb zu nehmen und hätte da mal eine Verständnisfrage:conf:.


    Ich hab den unten aufgeführten Code im Internet gefunden und kann mir nicht so wirklich erklären was genau die "Helper function" macht. Kann mir das jemand von euch mit eigenen Worten mal kurz erklären? Ich möchte gern verstehen wie bzw was die "150" bei "Servo_min" aussagt bzw wie sie zustande kommt und genauso die "600" bei "Servo_max". Also das Programm an sich funktioniert und ich weiß auch das ich innerhalb des ranges von 150 und 600 Winkel zwischen 0 und 180° anfahren kann aber ich komm nicht hinter den Zusammenhang.:wallbash:


    Vielen Dank schonmal



    Klar - ich hab hier sogar einen Pi mit drei I2C-Devices am laufen :lol:


    Einfach alle an die selben zwei I2C-Pins anschliessen, das ist ja bei I2C im Grunde der ganze Witz. Angesprochen wird dann mit der jeweiligen Adresse.

    Kennst du dich evtl auch mit dem Pca9685 aus? Ich überlege grad ob die Pins links und rechts am Board (SDA/SCL/GND usw) einfach durchgeschliffen werden bzw ob ich das LCD Display quasi dahinter schalten könnte und die SDA/SCL Pins für das LCD nutzen könnte.

    Moinsen,


    ich steh grad vor der Herausforderung zwei i2C Geräte mit dem Raspberry pi zu verheiraten:conf:. Hab da mal im Netz ein wenig gesucht und folgendes gefunden.


    https://www.instructables.com/…-PI-Multiple-I2c-Devices/


    Hat schonmal jemand mehrere I2c Geräte erfolgreich an den PI angeschlossen? Ich möchte einen zweizeiligen LCD mit I2c Schnittstelle an den PI anschließen und zusätzlich das ServoBoard PCA9685. Leider habe ich wenig Pins frei um den LCD ohne I2c Schnittstelle anzuschließen daher blieb nur die Variante mit dem I2c.


    Wäre cool wenn es jemanden gibt der mal von seinen Erfahrungen berichten könnte.

    Moin Leute,


    ich hoffe mir kann mal wieder jemand helfen:daumendreh2:. Unten seht ihr ein kleines Script (nur zur Übung für mich). Dort relativ einfach ich habe einen Taster, wenn dieser gedrückt wird, fährt der Servo nach links und wieder nach rechts. Dies Funktioniert soweit ganz gut. Nun möchte ich gerne eine Liste erstellen, weil ich mehrere Servos habe die gleich konfiguriert sind und auch das gleiche machen sollen. Wie kann ich das umsetzen, sodass die Funktionen auf die Liste zugreifen und alles innerhalb der Liste gleich konfigurieren bzw gleich ablaufen lassen?


    Ich hatte bereits versucht mir eine Liste zu erstellen ala


    servo_klein= 0

    servo_groß= 1


    servo_pin [18,23]


    .....

    .....

    Jedoch haben die Funktionen nicht auf diese Liste zugegriffen:conf:.Ich hab das mal im Programm auskommentiert


    Könnt ihr mir helfen?


    lieben Gruß

    Wenn du den GPIO nicht auf 5V hast, wäre das ein heißer Kandidat. Danach natürlich auch ggf ein Defekt. Denn wenn ein anderes Servo Mit dem Code tut, Dann muss das Bier auch, spätestens mit 5V Steuerleitung.

    Kannst du mir erklären was du damit meinst bzw wie das funktioniert einen GPIO auf 5V anzuheben?

    Hallöchen,


    kann mir jemand mal unter die Arme greifen?:wallbash:


    Ich habe zwei Servomotoren einmal ein einfachen SG90 (Datenblatt im Anhang) und einmal einen Digitalen Servo von Bluebird (Datenblatt im Anhang).

    Den SG90 bekomme ich ohne Probleme zum laufen, den Servo von Bluebird leider nicht.

    Als Code nehme ich den unten aufgeführten.

    Irgendwie habe ich das Gefühl das es an dem PWM liegt und ich weiß nicht wie ich das PWM Signal auf diesen Servo anpassen kann. Kann mir da vielleicht jemand helfen? Werde aus dem Datenblatt nicht wirklich schlau. :no_sad:


    Der Bluebird Servo hat eine Frequenz von 250Hz. Das hab ich im Programm berücksichtigt und die Spannung von 6V ebenfalls. Bewegen tut er sich aber leider unkontrolliert.


    Vielen Dank im Vorraus


    Du kannst sogar mehr als eine Funktion einsetzen oder möchtest du jedes Mal die Winkel selbst ausrechnen?


    Code is nicht getestet.

    hey DeaD_EyE,


    dankeschön das ist auch nochmal ein cooler Denkanstoß:/. Mein Problem bei den ganzen Antworten ist immer das ich immer noch eine Menge Zeit brauche um zum Beispiel deine Antwort nachzuvollziehen :) da ich noch komplett am Anfang meiner Karriere stehe.

    Ungefaehr so:


    Code
    def sweep(servo_pin):
        servo_pin.ChangeDutyCycle(2.5)
        time.sleep(2)
        servo_pin.ChangeDutyCycle(7.5)                          # 7.5 =90° /2.5 =0° /12,5 =180°
        time.sleep(2)
        servo_pin.ChangeDutyCycle(2.5)
        servo_pin.ChangeDutyCycle(0)
    
    sweep(servo_1) # und so weiter


    Servo 1 ist ein schlechter Name, das wird doch eine konkrete Funktion haben - so sollte das auch heissen. Und wenn du *gleichzeitig* was machen willst mit den Servos, dann musst du eh sehr anders vorgehen.

    Hey _deets_,


    du hast natürlich Recht "servo_1" ist in der Tat unglücklich gewählt und sollte eher mit der Funktion benannt werden. Könnte man die "Vorkonfiguration" des Servos (siehe unten) auch schon in eine Funktion packen oder schreibt man das später ins Hauptprogramm?

    Code
    servo_pin = 23
    GPIO.setup(servo_pin, GPIO.OUT)
    servo_pin = GPIO.PWM(servo_pin, 50) # GPIO 23 als PWM mit 50Hz
    servo_pin.start(2.5) # Initialisierung
    servo_pin.ChangeDutyCycle(0)

    Hallöchen,


    ich hab hier mal eine kleine Verständnisfrage:conf:. Ich versuche aktuell mein ersten Pythoncode zu strukturieren und brauch da mal ein wenig Unterstützung. Ich habe unten mal einen Teil meines Codes aufgeführt. Dort zu sehen ist ein Servo. Dieser wird am Anfang des Codes erstmal konfiguriert und auf Pin 23 gelegt. Später im Programm wird dem Servo dann gesagt was er überhaupt machen soll ( von 0° einmal auf 90° und zurück zu 0°). Insgesamt habe ich drei Servos in meinem Programm implementiert, welche alle vom Ablauf her das Gleiche machen aber auf unterschiedlichen Pins liegen. Ich würde nun gerne die drei Servos (den Servoablauf) in eine einzelne Funktion umwandeln, und diese dann im Hauptprogramm aufrufen. So spare ich mir die 11 Zeilen pro Servo im Hauptprogramm. Der Codeschnipsel unten müsste dazu so umgeschrieben werden, dass ich im Hauptprogramm dann anschließend noch die Pinbelegung des Servos vornehmen kann. Kann mir da mal jemand auf die Sprünge helfen und mir sagen wie das funktioniert?


    lieben Gruß:*


    Deine Vermutung wird richtig sein. Eine tiefere Analyse was da falsch laeuft ist angesichts der wirklich ausgepraegten Unuebersichtlichkeit schwer. Die Loesung fuer das Problem zumindest auf der Ebene der Erfassung, wenn auch ggf. nicht verarbeitung (denn die passiert immer noch in einer Haupt-Schleife mit Timeouts) liegt in der Verwendung der Pseudo-Interrupts, die man mit dem von dir leider gewaehlten GPIO Paket ueber die Funktion "add_event_detect" bekommt. Die werden dann sofort aufgerufen, und melden den Tastendruck an die Hauptschleife. So verpasst du keine Taste.

    Hallo _deets_,


    hast du evtl noch einen Tipp für mich wie ich die Übersichtlichkeit etwas besser gestalten kann? Wie gesagt ist dies mein erstes größeres Projekt und ich hab einfach mal angefangen zu "programmieren" und im nächsten Schritt würde ich mich gern um die Übersichtlichkeit kümmern aber ich weiß nicht wie:helpnew:

    Das Time.sleep(3) in Zeile 135 und 183 dürfte hier nicht ohne Einfluss sein...

    Wozu hast du überhaupt überall diese Pausen drin?

    Hallo Gnom,


    die Zeilen 135 und 183 werden benötigt damit die Summe der eingeworfenen Münzen noch jeweils für 3 Sekunden angezeigt wird bevor die Frage nach dem Ausgeben gestellt wird.

    Hallo Leute,


    ich habe ein kleines Problem und hoffe ihr könnt mir erklären wie dieses Problem zustande kommt bzw wie ich es beseitigen kann.

    Unten seht ihr meinen Quellcode (nicht besonders hübsch aber er funktioniert #Anfänger:daumendreh2:).


    Mein Problem besteht darin, dass die Tasterzustände (Zeile 31 und 34 im Code) unterschiedlich schnell abgefragt werden.

    Der Zustand des Geldrückgabetasters (Zeile 82) wird sofort erkannt nachdem ich den Taster drücke. Der Zustand des "JA"Tasters ( Zeile 139 und 188) wird allerdings erst erkannt, sofern ich den Taster gefühlt 1 Sek. gedrückt halte?

    Verschaltet sind beide Taster gleich und auch wenn ich die Tasterbelegung gegeneinander tausche wandert das Fehlerbild mit. Meine Vermutung geht dahin, dass der "JA Taster" etwas verschachtelt im Programm auftaucht und deshalb der Tasterstatus verzögert abgerufen wird?:conf: Könnt ihr das irgendwie bestätigen und mir erklären wie ich das umgehen kann?


    Vielen Dank im Voraus.

    Hallo,


    nein leider gab es bisher keine Fehlermeldung seitens der i2c Aktivierung. :no_sad: Aktuell habe ich einen Raspberry Pi 3B+ mit Rasbian als Betriebssystem und ich denke das der Befehl Sudo i2c detect - y 1 der richtige dafür ist oder?


    Nein leider hab ich noch keinen weiteren Raspi zuhause allerdings habe ich gestern direkt einen neuen bestellt und zusätzlich drei Level Shifter. Sobald alles zuhause eingetroffen ist werde ich als erstes einmal nur den i2c Bus ohne Display anschließen denn ich gehe davon aus dieser als stand alone ohne Display auch mit 3v laufen wird und demnach zumindest eine Adresse ausgeben müsste.


    Gibt es eine Möglichkeit die Speicherkarte des aktuellen Raspberrys für die Benutzung des zukünftig neuen Raspberrys fit zu machen? Wollte mich jetzt nicht unbedingt mit der Ersteinrichtung des neuen Raspberrys beschäftigen. :denker:

    Guten Morgen aus dem schönen Norden,


    mich beschäftigt seit 2 Tagen die Frage ob es möglich ist die I2C Pins des Raspberry Pi hardwaremäßig auf Beschädigung zu überprüfen? Hintergrund ist der, dass ich seit mehreren Tagen versuche ein normales LCD 16x2 mit i2c Bus in Betrieb zu nehmen und es einfach nicht klappen möchte, weil ich mit "Sudo i2c detect - y 1" keine Adresse zu Gesicht bekomme. Ich habe schon vieles ausprobiert und komme langsam zu dem Entschluss das es hardwaremäßig einen Defekt geben müsste.


    Was wurde bereits gemacht?

    -System aktualisiert

    -mehrere LCD's ausprobiert (3Stk.)

    -i2c schnittstelle aktiviert

    -mit sudo nano /etc/modules die Zeilen i2c-bcm2708 und i2c-dev hinzugefügt

    - mit sudo nano /etc/modprobe.d/raspi-blacklist.conf die blacklist kontrolliert (kein Eintrag)

    - mit sudo nano /boot/config.txt die Zeilen dtparam=i2c1=on und dtparam=i2c_arm=on hinzugefügt bzw gefunden

    -System reboot

    -einen PCA9685 angeschlossen der ebenfalls nicht über sudo i2c detect - y 1 angezeigt wird (obwohl dieser schonmal vorher lief)


    Ich bin so langsam mit meinem Latein an Ende ?..


    Eine weitere Frage bezüglich des LCD's (5v) wäre ob dieser direkt an den raspi angeschlossen werden kann oder ob ein levelshifter benötigt wird? Habe in verschiedenen Foren gelesen das man einen benötigt und in anderen Foren das keiner benötigt wird? Können die SDA/SCL pins 5V ab?


    Aktuell wird das Display mit i2c Controller wie folgt angeschlossen.

    VCC <> 5v

    GND <>GND

    SCL <> SCL

    SDA <> SDA


    Habe auch bereits einmal nur den I2C Controller ohne Display an 3V angeschlossen um zu sehen ob dann unter i2cdetect eine Adresse ausgegeben wird. Funktionierte ebenfalls nicht.


    Alle getesteten Displays werden mit Spannung versorgt (Display leuchtet und zeigt in der ersten Zeile Kästchen an) aber es wird per i2cdetect nicht erkannt.


    Es gab eine Situation als ich das erste Display an 5v angeschlossen habe das sich der raspi neustartete :conf:. Hab ich mir damit was zerschossen aufgrund von Überspannung??


    Ich brauche dringend Hilfe :@


    Lieben Gruß