Beiträge von Timm Thaler

    Über Python hab ich eine BlinkPrg erstellt.

    Und wie sieht das aus?

    Vermutung ins Blaue, Du schaltest die GPIOs zwar auf high, aber nicht auf Ausgang, dabei aktivierst Du den internen Pull-Up-Widerstand von einigen 10 bis 100kohm, welcher die Spannung zwar ein wenig hochzieht, aber nicht durchschaltet.

    Einschalten der GPIOs zu Fuss: Erst aktivieren, dann auf Ausgang setzen, dann Wert high oder low setzen.

    Und, böser Fehler: Wenn ein GPIO über das Filesystem aktiviert wird, dauert das Aktivieren mitunter bis zu 50msec (gemessen). Wird der GPIO zu zeitig, also innerhalb der 50msec dann als Ausgang gesetzt, wird das nicht ausgeführt und der GPIO bleibt Eingang, mit oben beschriebenen Ergebnis. Führt man die einzelnen Befehle per Hand aus, merkt man das nicht, weil immer mehr als 50msec dazwischenliegen. Laufen sie dann automatisch ab, geht es erstmal, weil der GPIO schon vorher durch die Handaktivierung aktiv war. Beim Neustart geht es dann plötzlich nicht mehr.

    Es geht um Python.

    Nein, es geht darum, dass der TO mit dem Programmieren auf einen Raspberry beginnen will und seiner Aussage nach noch keinerlei Erfahrung mit Programmierung hat.

    Er hat sich dann aufgrund von Online-Tutorials die Meinung gebildet, er müsse dafür Python verwenden. Warum man viele Tutorials mit Python findet habe ich oben dargelegt. Die schiere Anzahl der Tutorials sagt nichts über die Eignung von Python für Programmieranfänger aus.

    Meiner Meinung nach ist Python für Programmieranfänger nicht gut geeignet, weil fehleranfällig und die Grundlagen der Programmierung sehr "lässig" vermittelnd. Wie soll jemand was über Variablentypen und deren richtigen Einsatz lernen, wenn Typen beliebig sein dürfen? Wie soll jemand ein Programm vernünftig strukturieren, wenn 4 Leerzeichen mehr oder weniger aus dem Programm was ganz anderes machen?

    Vermutlich hast du Python einfach nie richtig verstanden, es ist eine elegante und mächtige Sprache mit tollen Features und Community.

    Das sagt Dir...

    ... jeder C++-Programmierer über C++

    ... jeder JS-Programmierer über JS

    ... jeder PureBasic-Programmierer über PureBasic

    ... jeder Delphi-Programmierer über Delphi

    ... jeder FPC-Programmierer über FPC

    und für Icon trifft das sicher auch zu. ;)

    Das ist nur Marketinggequatsche. Kannst Du auch ernsthaft auf die Kritikpunkte eingehen?

    Python ist als Interpretersprache langsam. Es ist sogar anscheinend eine der langsamsten Interpretersprachen. Es muss immer die Interpreterumgebung dazugeladen werden.*

    Python ist durch die Syntax fehleranfällig. Zum einen durch die Verschachtelung mit Leerzeichen, schau Dich nur mal im Forum um: "Mein Code geht nicht, findet den Fehler." und dann wars mal wieder ein Tab statt Leerzeichen. Zum anderen durch die Variablenfreizügigkeit: "Wieso kann ich a jetzt nicht mit b multiplizieren." "Ja, weil das eine ein String und das andere ein Integer ist." Wenn man Variablen ordentlich deklarieren müsste, würde das jeder verstehen.

    Mal von so kleinen witzigen Effekten abgesehen wie:

    for k in [1, 2, 3, 4, 5]:

    => zählt von 1 bis 5

    for k in range(1, 5):

    => zählt von 1 bis 4

    Aber solche Eigenheiten hat jede Sprache irgendwo.

    *) Dass man Python-Code in C-Code umwandeln und diesen dann kompilieren kann ist unerheblich, denn das dürfte auf die wenigsten "ich mach was mit Python" Projekte zutreffen.

    Das Python anscheinend so oft verwendet wird hat genau den Grund: Man kann damit "mal schnell" was hinbasteln. Und das sind dann die Tutorials, wo gezeigt wird, wie man "mal schnell" GPIOs anspricht oder "mal schnell" einen Sensor abfragt und "mal schnell" die Werte in eine Datenbank klopft.

    Python ist insofern eine richtige Programmiersprache, dass es turing-vollständig ist.

    Ich habe noch Amiga-Basic programmiert. Damals war Basic verpönt, weil es eine Interpretersprache ist und dadurch langsam. Das hängt Basic bis heute an, obwohl es längst gute Compiler für die verschiedensten Basic-Dialekte gibt. Mit diesem Hintergrund kommt es mir allerdings komisch vor, dass heute Python als Interpretersprache über den Klee gelobt wird, obwohl es arschlahm ist. Von der grottigen Syntax mal abgesehen.

    Wie gesagt, für mal schnell was zusammenhacken mag das gehen. Aber wenn Du z.B. ein CGI-Programm hast, welches bei Aufruf einer Webseite gestartet wird, um an diese Werte zu übergeben, dann mag es schon einen Unterschied machen, ob das Programm sofort ausgeführt wird oder ob erstmal ein Interpreter geladen wird, der sich das Programm anschaut, und dann Schritt für Schritt ausführt.

    Oder um bei Deinen Bohrmaschinen zu bleiben: Python baut Dir jedesmal die Bohrmaschine erstmal neu zusammen.

    warum empfiehlst dann nicht auch gleich Deine favorisierte Programmiersprache FreePascal/Lazarus? ;)

    Weil ich weiss, dass Pascal für einige Leute schon "zu strukturiert" ist.

    Natürlich wäre das eine Empfehlung, zumal es in der neuen Stretch ja sogar eine recht aktuelle Lazarus-IDE und einen aktuellen Freepascal-Compiler gibt, Cross-Compiling von Windows auf Raspberry-ARM funktioniert, man von Dateizugriffen (Tabellen, Datenbanken, XML-Konfigs) über GPIOs, SPI-, I2C- und serieller Schnittstelle bis Netzwerk (Telegram-Bot) auf Alles Zugriff hat, Programme mit GUI oder Commandline erstellen kann, CGI und Fast-CGI ist ebenfalls möglich.

    Aber in Pascal muss man halt richtig programmieren. Nicht einfach nur "coden". Dafür läuft das Programm auch in 3 Jahren noch, während am Pyhton-Script jedes neue Update für Überraschung sorgen kann.

    Vielleicht solltest Du Dich mal nach einer richtigen Programmiersprache umsehen.

    So sehr ich C hasse, aber es scheint mir immer noch besser als Python: Eine Sprache, die Verschachtelungen anhand der Anzahl der vorgestellten Leerzeichen erkennt, wie krank ist das denn? Und dann läuft alles im Interpreter, arschlahm. Für ein kleines Script muss erst der hundertmal größere Interpreter geladen werden.

    Um mal schnell paar Blöcke im Minecraft zu setzen mag das ja ganz nett sein. Aber als ernstzunehmende Programmiersprache...?

    Ich hab grad mal einen Pi aus dem Gehäuse geklipst: Auf der Unterseite sind einige Prüfpunkte, die man dafür vielleicht verwenden könnte. Und da stören die Drähte auch nicht.

    An den großen Kerkos würde ich nur mit gutem Equipment rumlöten, Kerkos reagieren mitunter kritisch auf mechanische Spannung, die können Mikrorisse bekommen und wenn sich dann die Kondensatorflächen verschieben gibts einen Kurzschluss und die rauchen ab. Schon gehabt.

    >> ist aber wirklich klugscheisserisch

    Japp, richtig klugscheisserisch von den Atmel-Leuten, dass als Schaltungsvorschlag zu bringen.

    >> 1. weil es schon genaue Planung der Schaltung erfordert auch für den Fehlerfall.

    Gar nicht. Du hast 8 LEDs die sind low aktiv, und 8 LEDs die sind high aktiv. Wenn Du alle ansteuerst, fließt der maximale Strom. Wenn Du weniger ansteuerst, fließt weniger Strom. Falsch ansteuern kannst Du nicht. Der Maximalstrom durch VCC und GND wird nicht überschritten.


    >> 5. dann tunen wir den PI und legen an jeden 5V + GND Knoten seperat auf die Platine Schaltdraht um den dünnen Leiterbahnen zu helfen.

    Nee, das sieht häßlich aus und Du hast keine vernünftigen Lötpunkte auf der Platine.

    Dummerweise liegen sowohl der uUSB als auch die +5V Pins auf der Stiftleiste maximal entfernt von den USB-Ports. Und anscheinend hat man die +5V gegenüber den +3.3V für nicht so wichtig gehalten.

    Ich hab da vor einiger Zeit mal Messungen gemacht mit definierter Last am USB, da gingen locker 300mV zwischen Einspeisung an der Stiftleiste und Port verloren.

    stimmt nicht weil das den Summenstrom über VCC GND übersteigt

    Stimmt doch, weil Du auch 8 Portpins mit je 20mA gegen GND und 8 mit je 20mA gegen VCC schalten kannst. Dann fließen über den GNDpin und den VCCpin jeweils nur 160mA, insgesamt aber 320mA.

    Spielt es dabei eine Rolle, ob ich die Arduinos je an einen USB-Port oder mithilfe eines Hubs nur an einen Port anschließe?

    Hub. In dem Fall keine Frage.

    Selbst wenn die Ports es schaffen, die 5V-Ebene zumindest des Pi 3 ist so dünne ausgelegt, dass man zwischen Eingang und verschiedenen Punkten schon bei einigen 100mA einen erheblichen Spannungsabfall hat. Was dann das Blitzzeichen auslöst, obwohl die Versorgung stabil ist. Was auch öfter mal zu Problemen mit Bluetooth-USB-Sticks führt, wie man im Forum liest.

    Und wenn Deine Megas in den Brown-Out gehen, weil die Spannung einbricht hast Du auch keine Freude dran.

    Die Kritik bezieht sich darauf, dass Conrad hier um der Effekthascherei willen ein hochwertiges Bauteil wie den Raspberry unnötig gefährdet. Und im nächsten Thread jammern dann wieder Leute rum, dass sie die Portpins am Raspi abgeschossen haben.

    Wie gesagt, wir haben früher auch solche Sensorschaltungen gebaut, aber da waren das ein paar Siliziumtransistoren. Und man könnte dieses Schaltung mit wenigen Bauteilen sicher machen.

    Und gerade bei Neulingen kann man mit unzureichenden Schaltungen einen Menge Schaden anrichten. Siehe nur die unzähligen "LED ohne Vorwiderstände" Threads in diversen Elektronikforen: "Aber die Chinesen machen es doch auch so." "Ja, deswegen ist die China-Taschenlampe auch nach einem halben Jahr kaputt."

    ... und wenn Du noch die MAC-Adresse des Handy Deiner Frau mit einbeziehst...

    Ja aber warum muss man es unnötig aufwendig absichern, wenn man mit Telegram z.B. eine Transportverschlüsselung über https hat und durch die eindeutige Nutzer-ID nur zugelassene Nutzer darauf zugreifen können.

    Nebenbei ist der Vorteil von Telegram gegenüber Whatsapp, dass man seinen Account auf mehreren Geräten haben kann, ich kann also unterwegs vom Handy über LTE und zuhause vom Tablet über WLAN darauf zugreifen.

    Das Schöne bei den Teilen ist, dass man sie Mute schalten kann. Wenn man welche mit Standby-Eingang findet, kann man auch den Stromverbrauch deutlich reduzieren. Ansonsten haben diese analogen Verstärker den Nachteil, ständig einige mA zu verbraten.

    Bei Digitalverstärkern kann man tüchtig ins Klo langen. Ich hab zwei Module von Pollin, die ich eigentlich für eine Klingel nehmen wollte: Rauschen derart, dass sie selbst für diesen einfachen Zweck unbrauchbar sind. Fall für die Tonne.

    Hat schonmal jemand einen Raspberry Pi in ein Amiga500-Gehäuse eingebaut? War mein erster Computer - und leider hab ich ihn nicht mehr...

    Mich würde vor allem dran reizen, dass man eine richtige Tastatur schon drin hat und jede Menge Platz für Erweiterungen wie Audioverstärker, HDD, und nur den Monitor hinten anstöpseln muss.

    Ist die Tastatur sinnvoll anbindbar? Und natürlich müsste auch eine original Amiga Maus dran. ;)

    Allerdings sind die Preise, zu denen alte Amiga500 bei Ebay angeboten schon bißchen unglaublich.

    Telegram Bot.

    Der kann Dir eine Tastatur mit "EIN", "AUS" und "Status" anzeigen. Der gibt Dir auf Anfrage oder automatisch eine Nachricht zurück. Es können mehrere Teilnehmer angemeldet werden.

    Auf Raspi-Seite geht das mit node-red, FHEM kann anscheinend Telegram, Openhub wohl auch und ich hab einen Freepascal-Client geschrieben, der meine Haussteuerung meldet (nur Abfrage, aber Steuerung wäre auch möglich). Da Telegram auf https aufsetzt kannst Du das mit jeder Sprache, die https Anfragen absetzen und die Antwort auswerten kann machen.

    Weil ein dauerhaft laufender Raspi halt auch dauerhaft Strom zieht, etwa 2W sind es bei mir im Idle, was 48Wh am Tag macht, ein Zehntel dessen was Deine Panels im Maximum in der Stunde bringen, oder gleich 5 Stunden mit 10W LED-Licht. An einem Wintertag zieht der Raspi definitiv mehr aus den Panels als diese liefern werden. Just my experience mit einer solarbetriebenen Weidezaunanlage.

    Außerdem frage ich mich welcher Zusammenhang zwischen "ich will 4 Raspies und 4 Festplatten betreiben" und "LED-Streifen" und "Wohnungslicht" besteht? Reden wir hier über die Lichtanlage eines Wohnwagens? Autarke Gartenlaube? Hütte im Wald? In dem Fall würde ich die LED-Streifen - so uncool das auch ist - ganz einfach über Schalter schalten, null Verbrauch wenn aus.

    Komfortabel müsste man die Anlage vielleicht aufteilen: Sinkt der Ladezustand unter 20%, werden alle unnötigen Geräte abgeschalten, damit das Licht noch Reserve hat.

    Bedenke: 50€: Damit kannst du ein paar Dosen Druckluftspray kaufen und damit auf die Legosteine pusten :lol:

    Das ist Generation "ich kaufe meinen Arduinokram fertig bei Amazon". Was glaubst Du was ich als Jugendlicher alles für kein Geld gebaut habe, nur mit Bauteilen aus ausgeschlachteten Radios, Fernsehern, Kassettenrekordern. Meine größte Investition war damals ein A210K für 5 Ostmark 50. Nur um ein paar Wochen später einen aus einem Fernseher auszubauen.

    Das Projekt scheitert wahrscheinlich eher an der Definition: Was für Steine, wieviele verschiedene Sorten, in welchen Merkmalen unterscheiden sie sich, wieviele insgesamt sind zu zählen? Das muss erstmal klar sein, bevor man über die weiterzuverfolgenden Ansätze nachdenkt.

    Wenn die Teile nach Farben sortiert gezählt werden dürfen ist es simpel. Für 2 Farben reichen 2 Fototransistoren mit passenden Farbfiltern und eine simple Schwellwerterkennung per Komperator. Interessanter wird die Vereinzelung der Steine: Förderband, Eimerkette bei der jeweils nur ein Stein transportiert wird oder einzeln Fallenlassen. Beim Fallenlassen könnte man per Druckluft die Teile sortieren.

    Sowas wurde schon vor 50 Jahren mit simpler Analogtechnik gemacht, dazu braucht man keinen Pi und keine Kamera.

    Sortieren nach Gewicht kann man über Fliehkraft, hängt von der Form der Steine ab. Wägesensor geht auch, hat man halt wieder das Problem der Vereinzelung.