Posts by Timm Thaler

    Naja, soweit ich mich richtig erinnere lag der Forenkonsens bei 40-50 mA in der Gesamtheit aller GPIO. Runtergerechnet auf einen GPIO wären das zwar 1-2 mA, aber d.h. IMHO das ein einzelner Pin schon etwas mehr verträgt als 2 mA, insoweit die Summe nicht überschritten wird.

    Ein GPIO besteht aus je 8 Transistoren, die jeweils 2mA schalten können. Die Software, sprich der Gerätetreiber legt global für alle GPIOs von 0 bis 27 fest, wie viele der Transistoren pro GPIO verwendet werden, dementsprechend ob 2, 4, ... oder 16mA geschaltet werden können. Wenn Du sicher sein kannst, dass der Gerätetreiber alle 8 Transistoren freischaltet, kannst Du 16mA schalten. Ich kann das nicht sicherstellen, daher begnüge ich mich mit 2mA, eher weniger.


    Die Begrenzung auf 50mA für alle GPIOs erfolgt durch die Versorgung der GPIOs.


    Leider muss man sich die Infos dazu mühsam zusammensuchen, da die Angaben zu Maximum Ratings und Output Current im Datenblatt eher rudimentär sind.

    Warum aber nicht gleich so? ach lassen wir das lieber.

    Die Frage "Vorwiderstand vor LED - wie berechnen?" gibt es im Mikrocontroller-Forum 3 mal die Woche. Und es gibt ungezählte Seiten im Web, wo die Berechnung erläutert wird.


    Aber man ist ja schon froh, wenn die Leute überhaupt einsehen, dass eine LED in den meisten Fällen einen Vorwiderstand benötigt.

    Ich meine das ist übersichtlicher.

    Nö. Einheiten mitführen. Immer. Lernt man eigentlich im Physikunterricht.


    Erstens merkt man so schnell, wenn man einen Fehler hat, weil plötzlich eine Spannung in Ampere hoch 2 rauskommt. Und zweitens will man ja auch mit mA und kohm rechnen.

    Er verwendet 3*100 Ohm und hat laut seiner Messung einen Gesamtwiderstand mit LED von 324 Ohm.

    Das ist vielleicht das, was sein Multimeter anzeigt. Eine LED ist kein ohmscher Widerstand.

    I = U / R = 3,3 V / 324 Ohm == 0,01018 A

    Falsch. Wir haben keinen linearen ohmschen Widerstand.


    Uled = 2V (angenommen)

    Rv = 3 * 100ohm = 300ohm

    Ub = 3.3V

    Iled = (Ub - Uled) / Rv = 1.3V / 300 ohm

    Iled = 4.3mA

    Also wie kommst du darauf dass hierbei der zulässige GPIO-Strom überschritten wird?

    Nicht schon wieder. Es wird zwar mitunter behauptet, ein GPIO könne 16mA treiben, aber dazu müssen alle 8 Ausgangstreiber aktiviert sein. Ansonsten kann ein GPIO 2mA sicher.

    Eine normale rote Led benötigt 20mA bei 2,3V.

    Ja, solche LED hab ich auch noch. Irgendwann aus einem alten RFT-Fernseher ausgelötet.


    Seit mindestens 20 Jahren gibt es low-current LED, die mit 2mA arbeiten. Aktuelle superhelle oder ultrahelle LED kommen mit unter 1mA aus. Bei 20mA willst Du da nicht reinschauen.


    Ich betreibe an meinen Steuerungen ultrahelle LED mit 15kohm Vorwiderstand als Betriebsanzeige. Da kannst Du auch problemlos die LED bei Akkubetrieb anlassen.

    Und das ist wieder was anderes... in einem Tuple/einer Liste kannst du die Elemente nur über ihren Index erreichen. Was du da machst, ist der Zugriff auf die Arttribute x, y und z eines Onjekts, z.B. einer Klasse (klassisch :lol:) oder eines Namedtuples.

    Ja wie nun? Wenn ich eine Structure pos mit x,y,z habe, dann kann ich sowas machen:

    Code
    1. pos.x = xnull
    2. pos.z = znull
    3. pos.y = ynull

    und es würden die richtigen Werte drinstehen.


    Wenn ich aber in Python

    Code
    1. x,z,y = mc.player.getPos()

    schreibe, steht dann die y-Pos in z und die z-Pos in y, oder wird das richtig zugewiesen? Muss ich morgen mal ausprobieren...


    Siehste, und das nervt mich so an: Nö, musst keine Variablen definieren. Machen wir alles für Dich. Musst Dich um gar nichts kümmern... außer um die Fehlersuche und das Rumprobieren.

    >> Einrückungen


    Da sag ich nix zu (hab ich schon in anderen Threads.

    Auch wenn das anders interpretiert wurde: Ich habe nichts gegen Einrückungen. Ich liebe Einrückungen. Meine ASM, Basic, C, Pascal-Codes sind alle ordentlich eingerückt. Und wenn Du bei Ada auch nur ein Leerzeichen falsch hast...


    Aber während durch ein paar fehlende Leerzeichen aus


    Code
    1. for z in range(zmin, zmax + 1):
    2. typ = 1 - typ
    3. for x in range(xmin, xmax + 1):
    4. mc.setBlock(x, y, z, mat, typ)

    sowas wird

    Code
    1. for z in range(zmin, zmax + 1):
    2. typ = 1 - typ
    3. for x in range(xmin, xmax + 1):
    4. mc.setBlock(x, y, z, mat, typ)

    und das problemlos ausgeführt wird, allerdings ein völlig anderes Ergebnis bringt, muss man sich in C, Basic, Pascal richtig anstrengen, damit der Compiler hier nicht ein "for without next", fehlende Klammer oder "begin without end" anmeckert. Gleiches Problem bei Einrückungen nach if, else...


    Ja, ein erfahrener Programmierer sieht das natürlich. Aber wenn es kein Problem wäre, gäbe es nicht so viele Threads dazu, wo irgendwer mal wieder Code kopiert oder lustig zwischen Tab und Leertaste gewechselt hat, und dann nicht weiss warum "sein" Programm nicht läuft.


    Edit: Verdammt, der erste Quellcode ist schon falsch formatiert, obwohl er im Editor richtig stand.

    Wenn hier jemand Code postet, dann gehe ich davon aus, dass er den Code postet, den er selbst im Editor hat - woher auch immer zusammenkopiert - und selbst mal hat laufen lassen. Scheint ja auch so zu sein, denn ein Teil seines Programmes scheint ja zu laufen.


    Dann gehe ich davon aus, dass er den Code so postet, wie er ihn da stehen hat und nicht zwischendurch irgendwas verändert.


    Also wo bitte soll da ein Copy&Paste-Fehler reinkommen, der nicht im laufenden Code schon drin war? Und wenn er im laufenden Code drin war, und eine Fehlermeldung bringen würde, sollte das den TO aufgefallen sein, bevor er den Code hier postet.


    Andererseits wird der close-Code wahrscheinlich nie ausgeführt, weil da auf ein response verglichen wird. Da sehe ich aber auch nicht, wo das herkommt.


    Und dann wiederum scheint es gar nicht der eigentliche Code zu sein, der TO schreibt am Anfang was von nicht funktionierenden Textvergleichen, hier gibt es aber keine Textvergleiche.

    Traurig ist, dass hier mal wieder eine LED mit 300ohm Vorwiderstand angeschlossen wird, was den zulässigen GPIO-Strom auf jeden Fall überschreitet. Ob der GPIO dadurch hoppsgegangen ist und vielleicht auch noch andere Bereiche des Schaltkreises mitgenommen hat - vielleicht auch den Spannungsregler? Bei einem Latch-Up, der kurzzeitig zu viel Strom zieht, braucht der Chip nicht merklich warm werden. Andererseits sollten moderne Spannungsregler wenigstens einen Eigenschutz gegen Überstrom haben.


    Bei 2V am 3.3V Pin darf der Pi nicht starten, allein die SD-Karte braucht stabile 3.3V um gelesen werden zu können.


    Karte raus, HDMI und USB-Teile abziehen, saubere! 5V-Versorgung anlegen, idealerweise aus einem Labornetzteil mit Stromanzeige. Hilfreich wären auch diese kleinen USB-Strommessgeräte (https://www.amazon.de/dp/B00ZPT6E1A/ref=psdc_2076415031_t2_B01BTRLVYQ?th=1 (Affiliate-Link), nur Beispiel keine Empfehlung). Raspi am besten anhand Schaltplan durchklingeln, welche Spannungen bei 5V und 3.3V anliegen: Vor Sicherung, nach Sicherung, an verschiedenen Stellen der Platine.


    Über die Variablennamen sehen wir hinweg, ich gehe von einem Copy-Paste Fehler aus

    Was soll denn das für ein Copy&Paste Fehler sein, der zwischendrin ein _alarm wegläßt oder dazudichtet?


    Ich hab meinen Code im Editor stehen, ich markiere den Code komplett, ich kopiere den Code, ich füge den Code hier ein.


    Sag jetzt nicht, dass blindes Copypaste in Lazarus/FreePascal/Icon/C/whatever _besser_ funktioniert.

    FPC würde Dir eine Fehlermeldung bringen, dass Dein Filehandler nicht exisiert. So wie bei jeder Variable, die Du anders schreibst, also Du vorher definiert hast.


    Ich weiss nicht, was Python hier macht, aber ich nehme nicht an, dass es die Datei schließt, die file_out zugewiesen wurde. Und ehrlich, ich hab jetzt auch keine Lust, das auszuprobieren.

    Woran siehst Du das? Die Datei wird mit file_out geöffnet, und mit file_out geschrieben, und dann wird file_alarm_out geschlossen. Sind doch zwei verschiedene Dateien...


    Aber hej, es ist Python, das ist toll für Anfänger. Man muss keine Filehandler definieren - und merkt dann nichtmal, dass man eine Datei schließt, die man gar nicht geöffnet hat.

    Ich hatte unter dem RFM Modul einige Vias gegen Masse gesetzt um eine moeglichst homogene Massefläche herszustellen

    Dass diese Massefläche beliebig Kondensatoren zu den Leiterbahnen auf dem RF-Modul bildet und dass das bei einem RF-Modul vielleicht keine gute Idee ist sei hier mal am Rande erwähnt.


    Entweder die Fläche darunter freistellen oder das RF-Modul auf 2mm Abstand zur Trägerplatte setzen.

    Btw: Wenn die LED an den 3.3V leuchtet, und der Pi sonst normal funktioniert, und kein Unterspannungssymbol (Blitz) am per HDMI angeschlossenen Monitor gezeigt wird - wirds kaum am Netzteil liegen. Eine LED mit 2mA wird das kaum in die Knie zwingen.