Beiträge von Timm Thaler

    - Timm Thaler Bist Du wirklich so belehrungsresistent wie Du hier zeigst? Nach dem Absenden eines Beitrags haben diese einen klickbaren


    Edit- Bearbeiten-Button darunter.

    Done!


    Latten->Zaun?


    In 10 Beiträgen wird von unbrauchbaren Digitalpotis bis zu Useless-Box völlig am Thema vorbei diskutiert, ich bringe eine brauchbare Schaltung, die dem TO zusagt, ich bringe eine verbesserte Schaltung. Und Du jammerst rum, weil es dadurch ein Beitrag mehr wird?


    In anderen Foren gilt das nachträgeliche Bearbeiten von Beiträgen - mehr als Typoedits - als unhöflich, weil vielleicht schon andere auf diesen Beitrag antworten, weil dadurch Zitate nicht mehr stimmen, weil es den Lesefluss bzw. die Reihenfolge stört.


    Aber bitte, ich bin raus hier. So ein Spießerforum muss ich mir nicht antun. Ich mach das in meiner Freizeit...

    Einen hab ich noch: Wenn Du Optokoppler nimmst, sind die auf Meanwell-Seite ja unabhängig. Also kannst Du die auch kaskadieren, geht mit Transistoren hier nicht.


    forum-raspberrypi.de/attachment/15428/


    Dann kannst Du die Widerstände jeweils verdoppeln und erhältst eine Widerstandsreihe von 0 bis 100kohm in 2^8 = 256 Stufen.


    Allerdings siehst Du schon, dass Du die Widerstände recht gut auswählen oder durch Zusammenschalten von mehreren Werten erreichen musst. Und da für "NULL" alle 8 Optokoppler in Reihe liegen, sollten die zwecks geringer Restspannung ein CTR von über 50% haben. Aber auch hier: Keine Darlingtons.

    Hier das Ganze nochmal mit Optokopplern und getrennten Massen.


    forum-raspberrypi.de/attachment/15427/


    Die Widerstände R1 bis R8 sollten nicht unter 1kohm sein, dann fließen 2mA pro GPIO-Pin. Da wir nur 100µA schalten müssen, reichen normale Optokoppler mit einem CTR von 20 bis 50%. Keine Darlington-Optokoppler, keine "digitalen" Koppler mit irgendwelchen Zusatzschaltungen.


    Du kannst bei beiden Schaltungen mehr als 8 Stufen schalten, indem Du mehrere Transistoren / Optokoppler gleichzeitig ansteuerst.

    Da Du wenig Erfahrung mit Elektronik zu haben scheinst, halte die Schaltung einfach:


    forum-raspberrypi.de/attachment/15426/


    Mit 8 GPIOs vom Raspi (nicht 4, nicht 14 und 15 = Uart, nicht 2 und 3 = I2C) über Transistoren die Widerstände schalten. Die Werte von R9 bis R16 musst Du ausprobieren.


    Das Meanwell liefert quasi einen Konstantstrom von 100µA und schaut, welche Spannung sich dabei einstellt


    Zu beachten ist, dass GND von Raspi und GND vom Meanwell zusammengeschalten werden. Wenn Du das nicht willst, musst Du statt der Transistoren Optokoppler einsetzen.


    Hinweis: Keine Darlington-Transistoren nehmen, die schalten nicht komplett durch - und sind unnötig. Daher ist auch ein ULN2804 hier keine gute Lösung. Irgendwelche Kleinsignaltransitoren, natürlich NPN, gehen.

    Jetzt willst Du mir sagen, daß die menschliche Birne bei 32 ARM-Registern oder einer ebensolchen Anzahl ATMega-Registern noch den Überblick behält?

    Ja locker. 6 gehen eh für die X,Y,Z-Pointer drauf. r0, r1 ist mul-Rückgabe, noch ein paar Counter und Temps.


    Wenn Du z.B. eine Software-PWM für 8 Kanäle programmierst, nimmst Du 8 der Register für die PWM-Werte, und einen PWM-Counter. Damit musst Du in der zeitkritischen Routine keine Werte im SRAM rumschubsen und bekommst eine PWM-Geschwindigkeit, die erreicht kein C-Compiler.


    Das Problem bei C aufm AVR ist erstmal eher, dass es versucht alles auf 16bit zu trimmen, was bei einem 8-Bitter natürlich reichlich sinnlos ist. Das kann Freepascal inzwischen sogar besser.

    Nur die Klammern über die Spaces zu stellen und dann noch zu behaupten, Spaces und tabs nicht zu vermischen und die richtige Tiefe zu treffen ist viel schwerer als an der passenden Stelle eine geschweifte Klammer zu setzen ist bekloppt

    Das ist doch gar nicht der Punkt. Siehe mein obiges Beispiel aus Minecraft: Eine Einrückung weniger und das Programm macht was völlig anderes, ohne irgendeine Fehlermeldung, völlig konform.


    Und genau das ist unter C, Pascal, selbst Basic so nicht möglich, weil der Compiler sofort eine fehlende Klammer, fehlendes end oder next anmeckern würde. Da muss man sich schon richtig Mühe geben Fehler zu erzeugen, die bei Python mal so nebenbei passieren.

    sich mal mit den Virtualenvs zu beschäftigen

    Schön und gut, aber die Leute, die hier mit Python aufschlagen und mal schnell was hincoden wollen sind genau die, die das dann nicht verwenden. Denn wenn sie sich tiefer damit beschäftigen wöllten, könnten sie ja auch gleich eine richtige Programmiersprache nehmen.

    Deine Beispiele sind allgemeine Probleme die man sich mit Updates einfängt. Wie ds schon schrieb: Das ist der nächste Glaubenskrieg/Thread. Deine UpdateFailBeispiele sind aber nicht python- sondern linuxspezifisch :no_sad: 

    Tut mir leid, dass ich nicht mit einem Beispiel aufwarten kann, wo durch eine Änderung am Python-Interpreter nach einem Update meine Heizung nicht mehr funktionierte - weil ich meine Heizung nicht mit Python steuere.


    Google liefert auf "nach python update funktioniert script nicht mehr" 400.000 Ergebnisse, ich weiss aber nicht wie zutreffend die sind.

    Einwand bzgl Python Updates der nur zutrifft wenn man automatische Updates zulässt.

    Und wenn Du ein Update händisch installierst, merkst Du sofort, dass irgendeine Funktion, die einmal die Woche ausgeführt wird, jetzt andere Parameter verlangt?


    Änderungen sind ja nicht so offensichtlich wie heute: update + upgrade gemacht, Bäm ist die bisher transparente Taskleiste nicht mehr transparent, und die Transparenz läßt sich auch nicht mehr einstellen.


    Letztes Jahr hat ein Update den umgebogenen Uart des Raspi 3 wieder zurückgestellt. Da hab ich erstmal eine Weile gesucht, warum der Raspi keine Daten mehr von meiner Heizung bekommt.


    Oder nach Heartbleed - war das nach Heartbleed? - hat man das standardmäßig eingestellte SSH abgestellt. Wer seinen Raspi irgendwo im Keller vergraben hatte und nur per SSH draufging, durfte erstmal Monitor und Tastatur anstöpseln und SSH wieder einschalten.


    Also man kann sich auch mit händischen Updates Ärger für einige Stunden fröhlicher Fehlerbehebung einfangen.

    Und was spricht jetzt dagegen mit Python das Thermostat zu steuern? Die Heizung selber bestimmt nicht, zumindest nicht meine.

    Nichts. Wenn es nicht läuft, kannst Du zur Not von Hand am Thermostat drehen. Und einen Frostschutz wird es hoffentlich mindestens geben.


    Im Nachbarthread ging es aber darum, einen Holzkessel mit Python zu steuern. Das würde ich nichtmal mit einem Raspi tun, weil da zu viele Unwägbarkeiten dabei sind: Einmal Strom weg und die SD-Karte ist Schrott (hatte ich schon), oder ein Update stellt irgendwas an den Schnittstellen um (hatte ich schon), oder ein anderes Programm greift auf die GPIOs zu. Aber das wurde hier schon mehrfach diskutiert.


    Python 2 wird nicht mehr empfohlen weil veraltet, an Python 3 wird aber momentan viel rumgebastelt. Ich würd meine Familie nicht im Winter frieren lassen wollen, weil mal wieder ein neues Update gekommen ist und irgendwas nicht funktioniert, während ich im Ausland hocke. Und wenn das Ding am Netz hängt ist kein Update auch keine Lösung.


    Das ist der Vorteil von Compiler vs. Interpreter: Das einmal kompilierte Programm macht bei jedem Neustart das, was es vorher gemacht hat. Der Interpreter kann sich nach einem Update anders verhalten.

    Ich weiß nicht mehr wie viele Zeilen Code es genau waren, aber ich weiß noch, dass man in Python nur knapp ein drittel der Zeilen brauchte

    Python braucht nur ein Drittel der Zeilen, weil es auf Module zurückgreift - und die sind dann wieder in C geschrieben.


    Großer Vorteil, man muss nicht mehr wissen, was da passiert. Da gehts dann wie im Nachbarthread, wo jemand einen Chip über SPI ansteuern will mit der 100fachen Taktrate, Datenblatt musser nicht lesen, macht ja alles das fertige Modul.


    Und dann mit Python die Heizung steuern. Da läufts mir eiskalt den Rücken runter. Aber macht mal.

    Bin ich der einzige der zuerst die beiden Klammern setzt und dann eins zurück geht, um was in die Klammern reinzuschreiben ?

    Du setzt die selbst? Die schließende Klammer schlägt doch der Editor meist gleich mit vor. Genauso wie das end nach einem begin in Pascal, und das Einrücken in der richtigen Ebene.


    Aber ja, genauso macht man das: Den Rumpf schreiben und dann den Inhalt einfügen. Dann hat man auch keine Probleme mit Verschachtelungen.

    es soll ja gerüchteweise bei Taschenlampen einen Ri geben, sei es aus der Batterie oder aus den zu dünnen mit Kupfer sparsamen Leitungen.

    Würdest Du das bitte lassen. Am Ende zitiert Dich wieder jemand: Er hat doch gesagt, der Innenwiderstand der Batterien reicht! ;-)


    So ein Innenwiderstand ist halt schwer definierbar: Batterie oder Akku? Kalt, warm? Neu, ganz neu, schon halb leer? Energizer oder Supermarkt-Billigpack?


    Ich durfte schon genug dieser Schrottteile im Bekanntenkreis entsorgen, um Dir zu versichern: Vergiss das mit dem Innenwiderstand der Batterien.

    Das Interessante dabei ist, dass z.B. FreePascal/Lazarus in diesem Forum konsequent bekämpft wird.

    Hast Du den Eindruck? Ich denke eher, es wird einfach ignoriert.


    Pascal wurde ja immer als "Lehrsprache" belächelt. Und nachdem ich das einmal in der Schule, und rudimentär im Studium hatte, hab ich das fast 20 Jahre nicht wiedergesehen.


    Aber: Ich habe mir mit dem Schulwissen aus Pascal - Programmstrukturen, Variablentypen, überhaupt grundlegendes Herangehen... - diverse Basic-Dialekte, C, JavaScript, Assembler, und zuletzt Ada erarbeitet. Zugegeben alles Sprachen, die sich sehr ähnlich sind. Und mit dem Wissen kann ich auch ein Python-Programm nachvollziehen, ohne jemals ein Python-Buch in der Hand gehabt zu haben.


    Scheint also was dran zu sein an Pascal als Lehrsprache.


    Einer arbeitet momentan an der Programmierung von Atmels/Arduinos in FreePascal.

    Einer? Mir fallen spontan 3 ein, die da regelmäßig dran sind.

    Ja, in Python geht das.

    Also Sorry, in Pascal geht das schon seit mindestens 20 Jahren. Halt nicht als Rückgabewert, sondern als Variable. Das liegt einfach an der Art, wie Prozeduren und Funktionen abgehandelt werden. Und das geht auch mit Arrays. Das geht sogar mit Arrays auf Mikrocontrollern. Also so der neue heisse Scheiss ist das auch wieder nicht.


    Jeder Programmierer benutzt Einrueckungen und muss dazu nicht gezwungen werden. Dadurch werden zwar die Anfaenger gezwungen...

    Meine Kritik ist nicht, ob Einrückungen erzwungen werden. Ada zwingt Dich auch zu Einrückungen, aber sowas von.


    Meine Kritik ist, dass Einrückungen die Programmsteuerung übernehmen und es dazu keine Kontrollinstanz gibt. Siehe obiges Beispiel, wann die for-Schleife zu Ende ist bestimmt allein die Einrückung, und nicht ein next, end oder schlimmstenfalls eine }.


    Wenn ich in Minecraft über x, y, z gehe und dabei noch ein paar ifs abfrage, habe ich auf kürzestem Raum 5 oder 6 Einrückungsebenen. Da wirds schon langsam unübersichtlich.

    Erstaunlich, wie aus einem simplen Bauteil, mit dem sich jeder Bastler sehr früh theoretisch und praktisch befasst, ein Thread mit mehr als 40 Beiträgen entsteht.

    Nee, das erstaunt mich gar nicht. Wie gesagt, im µC-Forum ist die Frage regelmäßig dran und einige Leute reagieren da inzwischen richtig genervt.


    Immerhin hat es die LED 50 Jahre nach ihrer Erfindung auch in die Lehrpläne des Physikunterrichtes geschafft, so dass hier Besserung zu erwarten ist. Obwohl, Physik - hab ich abgewählt, ich mach eh was mit Medien...