Moin Frank, es freut mich so sehr das es mit dieser Reihe weitergeht ! Du erklärst die Dinge ausgezeichnet, für mich die beste Arduino Programmierreihe im deutschsprachigen Raum. Schön wäre es wenn du deine Beispiele zum Download anbieten würdest. Mach bitte weiter so!!
Hi Frank, freut mich das die Arduino Programmierung weiter geht, habe schon darauf gewartet :) Danke das du das so ausführlich darstellst, mir hilft das so sehr gut weiter. Gruß Gert
Hallo Frank, du hast es drauf, nicht langweilig, du wiederholst, gibst Tippst, steigerst die Problematik und trotzdem konnte ich dir nicht ganz folgen. Ich habe versucht das Ganze grafisch nachzuvollziehen, hat aber nicht ganz geklappt, kommt vielleicht noch. Hoffentlich bleibst du uns erhalten und bringst uns noch viele gute Sketsches
Hallo Frank, super Deine Programmierreihe bis hier hin… 👏👏👏 ich habe zwar bisher nur alles am Bildschirm verfolgt, werde aber auch noch alles praktisch nachvollziehen… Deine Erklärungen sind sehr gut nachvollziehbar… toll wäre es, wenn Du Zeit finden würdest weitere Folgen zu bringen… mein Ziel: eine automatisierte Blastgatesteuerung… natürlich nicht zu kaufen, sondern selbst zu bauen und zu programmieren… 🙈 LG Werner
ich habe keine Ahnung vom Programmieren, am Ende auch absolut nix von dem Verstanden was du da erzählt hast 😀, aber Du erklärst es soo geil, das ich mir einen arduino inkl zubehör bestellt habe um unsere credit platine vom billardtisch zu ersetzen und nach eigenen Wünschen anzupassen🙂TOP
Hi Frank, ich finde das so klasse wie du das erklärst. Ich habe sogar ein paar Sachen verstanden. grins Da sieht man halt wer es so richtig drauf hat. Viele Grüße Markus
Habe gerade Deine Videoreihe entdeckt, super erklärt! Anmerkung bei [40:45] machst Du in Zeile 47 (in der If-Bedingung) eine zweite For-Schleife auf, um (tmpSum/size) in dem Array singleValues zu speichern und die Summe mit den Werten des Arrays aufzusummieren. Aber warum machst Du diese Schritte nicht gleich in der ersten For-Schleife ab Zeile 45, denn jede zusätzliche Schleife (und stell Dir nur vor diese würde bis 1 Million, oder 10 Million zählen) und deren Berechnungen (gerade wenn es komplexe Berechnungen sind) darin, erhöht die Laufzeit eines Programms.
@@FrohnixBastelbude Ah ja, Du möchtest praktisch in das singleValues-Array ab dem Index 0 bis zum Index size immer den selben Wert (tmpSum/size) zuweisen, der am Anfang der Schleife noch nicht bekannt ist. Das hatte ich übersehen, dass die tmpSum ja aufsummiert wird. Jedenfalls machst Du super Videos. Ich hoffe da kommen noch ein paaar mehr.
Hallo Frank, wird es hierzu nochmal weitere Reihen geben oder habe ich die übersehen? Ich habe hier wirklich viel neues gelernt und ich finde das super erklärt von dir. Würde mich freuen weiteren Content in dieser Richtung von dir zu sehen.
Hallo Frank, ich habe schon auch schon bei anderen reingeschaut, du erklärst das wirklich super! Kannst du mal einen Sketch machen, wo du einen Schrittmotor ansteuerst und mittels mehrerer Taster jeweils eine dazugehörige feste Positionen anfährst? Wäre voll super!
Lieber Kollege Frohnix; Vielen Dank für dieses Video! Es hat mir sehr geholfen, bei der Programmierung eines Timers mit analoger Eingabe über ein Poti. (Ja, auch ich erfinde gerne mal etwas...) Da ich mein Projekt mit ATtiny umsetzen will, kommt ein 1000er Array nicht in Frage. Aber, mit Poti an Minus und über einen LDO 3,3V habe ich nach der Mittelwertbildung final nur Abweichungen von max. 2%. Was mir reicht.
Moin moin, ein 1000-er Array ist - soweit ich das durchblicke - nicht nötig. Der eingelesen Wert wird immer in die Position 9 im Array - "singleValues[9] = analogValue" geschrieben, dann wird in der for-Schleife der Mittelwert über die ersten 10 Elemente des Arrays gebildet - und anschließend in einer for-Schleife ein Shift der Elemente auf die jeweilige Vorgängerposition vorgenommen. MaW: ein Array von 10 Elementen würde schon reichen. Viel Erfolg beim Basteln und Programmieren
Hallo Frank. Ich bin totaler Neuling und wollte ein Projekt ( Soundmodul für E-Roller der über den Gasgriff gesteuert wird ) verwirklichen. Nun habe ich festgestellt, das so ein Sketch nicht so einfach ist, um es zu Ende zu bringen. Aufgebaut ist das ganze mit einem Arduino nano und einem Serial MP3 Player mit dem Chip GD3300D. Noch sind in deinen Videos, nichts passendes dabei gewesen, was mir auf die Sprünge hilft, daher liegt alles auf Eis. :( "Mach weiter so."
@@FrohnixBastelbude Ist ja wirklich gut gemeint, doch wie schon geschrieben steht, verstehe ich rein garnichts von Sketche schreiben. Wie sollte also so ein Sketch aussehen?
Gut erklärt, bis auf die IFSchleife.🙈 die Erstauffüllung des Arrays hätte ich in die Setuproutine gepackt. Macht es übersichtlicher und spart die Abfrage im Hauptprogramm. Im realen Leben hat keiner Lust die Dinge ständig in andere Fächer um zu packen 😂 Ringspeicher mit Zeiger.
Hallo Frank, es ist immer wieder schön deinen Videos zu folgen. Zumal ich in einer anderen Programmiersprache schreibe und ich mich tatsächlich mit dem C-Dialekt etwas schwer tue. Ich habe dennoch zwei Vorschläge zum Programm: 1) wäre es nicht schneller erstmalig das Value in jede Stelle des Arrays zu schreiben anstatt sich die Anzahl Messwerte zu holen, und den Mittelwert zu bilden ? 2) an sich wäre alternativ eine Integral-Funktion möglich, in der nur die Summe gesichert wird. Das spart Speicherplatz. Neue_Summe = ( Summe - ( Summe / AnzahlWerte ) + NeuerWert ); Neuer_Mittelwert = Summe / AnzahlWerte;
Zu 1: klar kann man das machen, aber da hat man eben nur einen Wert und das könnte natürlich ein „schlechter“ sein (zu tief, zu hoch, ect. ) Zu 2: Sicher geht das auch so. Da spart man einiges an Platz. Ich mache das aber oft mit Arrays, weil man da natürlich noch andere Möglichkeiten zur nachträglichen Analyse hat. Gerade beim programmieren führen 100000 Wege zum Ziel 😬
Dass ist kein C Dialekt, das ist C++ die main() funktion (in der datei: avr/cores/arduino/main PUNKT cpp) wird vor dir versteckt und ruft setup() und dann loop() in dauerschleife auf. Außerdem werden heimlich vorwärzdeklarationen generiert und deinem sketch hinzu-copy-pasted bevor der c++ compiler (avr-gcc) deinen quellcode sieht. Serial dot begin(115200); kann man einfach so in den sketch schreiben weil (auch vor dir versteckt) im Hintergrund die entsprechende C++ Klasse aus dem Arduino Framework als Serial objekt-variable instanziiert wurde. ( HardwareSerial Serial(...); // in HardwareSerial0 dot cpp ) die begin methode in der Klasse (code in HardwareSerial dot cpp ) inizialisiert dann den Register-Kram im ATmega328P für die Benutzung der UART ...
Frank du alter Schlumpf! kommst du im August wieder auf die Maker-Faire? Onkel Phil, der End und ich sind auch wieder da (ich zumindest Samstag, die anderen beiden wollen wohl beide Tage) - gruß Dieter !
Moin, ich hab mal ne frage.. ist es möglich ein programm zu bauen dass auf mehrere ardoinos zugreift? also ein teil der sernsorik und aktorik ist bei meinem nächsten projetkt einfach sehr weit vom anderen teil entfernt und ich würde quasi aus mehreren ardoinos über netzwerk "einen" mache wollen.. geht das?
Naja, "Einen" machste daraus nicht. Auf beiden läuft dann eher eine eigene Software und die müssen dann kommunizieren. Seriell oder LoRa... Kommt eben auf die Datenmenge und den Abstand an. I2C oder SPI sind, glaube ich, nicht für größere Strecken geeignet.
Besser kann man die Sache nicht erklären.der Kopf qualmt,aber ist halt Theorie,muss man auch lernen.Mich würde ein Praktisches Bsp,was man auf ein Garagentor anwenden könnte interesieren.Zb.sp. zwei Taster,zwei Endschalter(Sensoren)..Kurtz beschrieben,Digitale Inputs ,die Eingänge abfragen und je nach zusstand digitale Ausgänge steuern.Ein Garagentoor ist zu,der Motor darf egal welchen Taster ich betätige, nicht zu fahren sondern auf machen und natürlich auch das gleiche im Umgekehrten Falle;Tor ist auf.
Hallo Frank, Super- es geht weiter. Ein Hinweis zu der Aussage wegen Speicherplatz. Du hast beim 'nano every' 48 KB, beim UNO oder nano hat man nur 32 KB, mit dem int Array[1000] bekommt man eine Fehlermeldung. Datenbereich überschreitet den verfügbaren Platz auf der Platine und es gibt im Serieller Monitor komische Ausgaben 250,l250,750,304,376 250,750,491,378 250,>9#�M������H�250,750,296,369 Ich hab jetzt getestet, bei singleValues[880] ist bei mir Schluß.👍
Du benutzt wahrscheinlich einen Aduino Nano R3 mit 2048 Bytes Speicher. Der Frank verwendet den Arduino Nano Every. Der besitzt 6 Kilo Bytes bzw. 6144 Bytes Speicher. Ein Integer ist 16 Bit groß, bedeutet pro Integer 2 Bytes Verbrauch. Da der Arduino auch intern bereits Speicher belegt (für Millis,Timer, usw), sind bei dir dann "nur" noch 880 Bytes für das Array übrig. Ein paar Bytes verbrauchst du ja auch noch für die anderen Variablen, wie Average, Sum, ...
Moin Frank, es freut mich so sehr das es mit dieser Reihe weitergeht !
Du erklärst die Dinge ausgezeichnet, für mich die beste Arduino Programmierreihe im deutschsprachigen Raum.
Schön wäre es wenn du deine Beispiele zum Download anbieten würdest.
Mach bitte weiter so!!
Hallo Frank,
schließe mich allen an, welche das "super" fanden, endlich mal jemand der aus der Praxis erklärt.
Bitte führe diese Videoreihe weiter
Hi Frank, freut mich das die Arduino Programmierung weiter geht, habe schon darauf gewartet :)
Danke das du das so ausführlich darstellst, mir hilft das so sehr gut weiter.
Gruß Gert
Hallo Frank, du hast es drauf, nicht langweilig, du wiederholst, gibst Tippst, steigerst die Problematik und trotzdem konnte ich dir nicht ganz folgen. Ich habe versucht das Ganze grafisch nachzuvollziehen, hat aber nicht ganz geklappt, kommt vielleicht noch. Hoffentlich bleibst du uns erhalten und bringst uns noch viele gute Sketsches
Hallo Frank, ich finde es super das es weiter geht mit den Arduino Kurs. Super alles erklärt, sehr gutes Video.👍
Ich bin überrascht, dass es weitergeht. Super (und das bei diesem Wetter).
Hallo Frank, super Deine Programmierreihe bis hier hin… 👏👏👏 ich habe zwar bisher nur alles am Bildschirm verfolgt, werde aber auch noch alles praktisch nachvollziehen… Deine Erklärungen sind sehr gut nachvollziehbar… toll wäre es, wenn Du Zeit finden würdest weitere Folgen zu bringen… mein Ziel: eine automatisierte Blastgatesteuerung… natürlich nicht zu kaufen, sondern selbst zu bauen und zu programmieren… 🙈 LG Werner
Großartig. Vielen Dank das Du mit diesem Thema weiter machst. TOP
Hallo Frank! Super Videoreihe! Einfach und verständlich erklärt. Ich freue mich auf jeden Fall auf weitere Erklärvideos deinerseits 👍
ich habe keine Ahnung vom Programmieren, am Ende auch absolut nix von dem Verstanden was du da erzählt hast 😀, aber Du erklärst es soo geil, das ich mir einen arduino inkl zubehör bestellt habe um unsere credit platine vom billardtisch zu ersetzen und nach eigenen Wünschen anzupassen🙂TOP
Super Video 👍
Deine arduino Reihe hat mir schon gut weiter geholfen.
Hi Frank,
ich finde das so klasse wie du das erklärst. Ich habe sogar ein paar Sachen verstanden. grins
Da sieht man halt wer es so richtig drauf hat.
Viele Grüße
Markus
Sehr gut erklärt, vielen Dank
Habe gerade Deine Videoreihe entdeckt, super erklärt! Anmerkung bei [40:45] machst Du in Zeile 47 (in der If-Bedingung) eine zweite For-Schleife auf, um (tmpSum/size) in dem Array singleValues zu speichern und die Summe mit den Werten des Arrays aufzusummieren. Aber warum machst Du diese Schritte nicht gleich in der ersten For-Schleife ab Zeile 45, denn jede zusätzliche Schleife (und stell Dir nur vor diese würde bis 1 Million, oder 10 Million zählen) und deren Berechnungen (gerade wenn es komplexe Berechnungen sind) darin, erhöht die Laufzeit eines Programms.
Weil tmpSum erst nach Beendigung der for-Schleife (Zeile 45) feststeht.
@@FrohnixBastelbude Ah ja, Du möchtest praktisch in das singleValues-Array ab dem Index 0 bis zum Index size immer den selben Wert (tmpSum/size) zuweisen, der am Anfang der Schleife noch nicht bekannt ist. Das hatte ich übersehen, dass die tmpSum ja aufsummiert wird. Jedenfalls machst Du super Videos. Ich hoffe da kommen noch ein paaar mehr.
Ist bereits in Arbeit.
Hallo Frank, wird es hierzu nochmal weitere Reihen geben oder habe ich die übersehen? Ich habe hier wirklich viel neues gelernt und ich finde das super erklärt von dir. Würde mich freuen weiteren Content in dieser Richtung von dir zu sehen.
Hallo Frank, ich habe schon auch schon bei anderen reingeschaut, du erklärst das wirklich super!
Kannst du mal einen Sketch machen, wo du einen Schrittmotor ansteuerst und mittels mehrerer Taster jeweils eine dazugehörige feste Positionen anfährst?
Wäre voll super!
5:47 …es gibt sie also doch, die IF-Schleife😅… der Running Gag unter den Programmierern … *Spaß* …tolle Video-Reihe… vielen Dank …
Da issa wieder !! 🔥🔥🔥🔥
Lieber Kollege Frohnix;
Vielen Dank für dieses Video!
Es hat mir sehr geholfen, bei der Programmierung eines Timers mit analoger Eingabe über ein Poti. (Ja, auch ich erfinde gerne mal etwas...)
Da ich mein Projekt mit ATtiny umsetzen will, kommt ein 1000er Array nicht in Frage. Aber, mit Poti an Minus und über einen LDO 3,3V habe ich nach der Mittelwertbildung final nur Abweichungen von max. 2%. Was mir reicht.
Moin moin, ein 1000-er Array ist - soweit ich das durchblicke - nicht nötig. Der eingelesen Wert wird immer in die Position 9 im Array - "singleValues[9] = analogValue" geschrieben, dann wird in der for-Schleife der Mittelwert über die ersten 10 Elemente des Arrays gebildet - und anschließend in einer for-Schleife ein Shift der Elemente auf die jeweilige Vorgängerposition vorgenommen. MaW: ein Array von 10 Elementen würde schon reichen. Viel Erfolg beim Basteln und Programmieren
Kommen in Zukunft noch mehr von den Arduino Tutorials? Super erklärt würde mich freuen wenn du diese Kurse fortsetzt👍🏼
Ich versuche, demnächst mal wieder was zu machen. Mir fehlt einfach die Zeit.....
Hallo Frank. Wo kommt der Analogwert her? Ist an A0 ein Poti angeschlossen?
Hallo Frank. Ich bin totaler Neuling und wollte ein Projekt ( Soundmodul für E-Roller der über den Gasgriff gesteuert wird ) verwirklichen. Nun habe ich festgestellt, das so ein Sketch nicht so einfach ist, um es zu Ende zu bringen. Aufgebaut ist das ganze mit einem Arduino nano und einem Serial MP3 Player mit dem Chip GD3300D. Noch sind in deinen Videos, nichts passendes dabei gewesen, was mir auf die Sprünge hilft, daher liegt alles auf Eis. :( "Mach weiter so."
Du musst doch nur die seriellen Befehle per "Serial.print" an den Chip senden.
@@FrohnixBastelbude Ist ja wirklich gut gemeint, doch wie schon geschrieben steht, verstehe ich rein garnichts von Sketche schreiben. Wie sollte also so ein Sketch aussehen?
Gut erklärt, bis auf die IFSchleife.🙈 die Erstauffüllung des Arrays hätte ich in die Setuproutine gepackt. Macht es übersichtlicher und spart die Abfrage im Hauptprogramm. Im realen Leben hat keiner Lust die Dinge ständig in andere Fächer um zu packen 😂 Ringspeicher mit Zeiger.
Hallo Frank, es ist immer wieder schön deinen Videos zu folgen. Zumal ich in einer anderen Programmiersprache schreibe und ich mich tatsächlich mit dem C-Dialekt etwas schwer tue.
Ich habe dennoch zwei Vorschläge zum Programm:
1) wäre es nicht schneller erstmalig das Value in jede Stelle des Arrays zu schreiben anstatt sich die Anzahl Messwerte zu holen, und den Mittelwert zu bilden ?
2) an sich wäre alternativ eine Integral-Funktion möglich, in der nur die Summe gesichert wird. Das spart Speicherplatz.
Neue_Summe = ( Summe - ( Summe / AnzahlWerte ) + NeuerWert );
Neuer_Mittelwert = Summe / AnzahlWerte;
Zu 1: klar kann man das machen, aber da hat man eben nur einen Wert und das könnte natürlich ein „schlechter“ sein (zu tief, zu hoch, ect. )
Zu 2: Sicher geht das auch so. Da spart man einiges an Platz.
Ich mache das aber oft mit Arrays, weil man da natürlich noch andere Möglichkeiten zur nachträglichen Analyse hat.
Gerade beim programmieren führen 100000 Wege zum Ziel 😬
Dass ist kein C Dialekt, das ist C++
die main() funktion (in der datei: avr/cores/arduino/main PUNKT cpp) wird vor dir versteckt und ruft setup() und dann loop() in dauerschleife auf.
Außerdem werden heimlich vorwärzdeklarationen generiert und deinem sketch hinzu-copy-pasted bevor der c++ compiler (avr-gcc) deinen quellcode sieht.
Serial dot begin(115200); kann man einfach so in den sketch schreiben weil (auch vor dir versteckt) im Hintergrund die entsprechende C++ Klasse aus dem Arduino Framework als Serial objekt-variable instanziiert wurde. ( HardwareSerial Serial(...); // in HardwareSerial0 dot cpp )
die begin methode in der Klasse (code in HardwareSerial dot cpp ) inizialisiert dann den Register-Kram im ATmega328P für die Benutzung der UART ...
Geht die Reihe noch weiter ? :)
Theoretisch ja. Es fehlt, wie immer, die Zeit. Mal sehen, wann ich wieder Luft habe.
Frank du alter Schlumpf! kommst du im August wieder auf die Maker-Faire? Onkel Phil, der End und ich sind auch wieder da (ich zumindest Samstag, die anderen beiden wollen wohl beide Tage) - gruß Dieter !
Na sichi, Didä 😄
Beide Tage 😬
@@FrohnixBastelbude na denn werden wir uns sehen - ick freu mir !
Moin, ich hab mal ne frage.. ist es möglich ein programm zu bauen dass auf mehrere ardoinos zugreift?
also ein teil der sernsorik und aktorik ist bei meinem nächsten projetkt einfach sehr weit vom anderen teil entfernt und ich würde quasi aus mehreren ardoinos über netzwerk "einen" mache wollen.. geht das?
Naja, "Einen" machste daraus nicht.
Auf beiden läuft dann eher eine eigene Software und die müssen dann kommunizieren. Seriell oder LoRa...
Kommt eben auf die Datenmenge und den Abstand an. I2C oder SPI sind, glaube ich, nicht für größere Strecken geeignet.
Besser kann man die Sache nicht erklären.der Kopf qualmt,aber ist halt Theorie,muss man auch lernen.Mich würde ein Praktisches Bsp,was man auf ein Garagentor anwenden könnte interesieren.Zb.sp. zwei Taster,zwei Endschalter(Sensoren)..Kurtz beschrieben,Digitale Inputs ,die Eingänge abfragen und je nach zusstand digitale Ausgänge steuern.Ein Garagentoor ist zu,der Motor darf egal welchen Taster ich betätige, nicht zu fahren sondern auf machen und natürlich auch das gleiche im Umgekehrten Falle;Tor ist auf.
Ja ja, jetzt weiß ich warum bei mir nie was funktioniert hat, ich bin einfach zu dämlich
Hallo Frank, Super- es geht weiter. Ein Hinweis zu der Aussage wegen Speicherplatz. Du hast beim 'nano every' 48 KB, beim UNO oder nano hat man nur 32 KB, mit dem int Array[1000] bekommt man eine Fehlermeldung. Datenbereich überschreitet den verfügbaren Platz auf der Platine und es gibt im Serieller Monitor komische Ausgaben 250,l250,750,304,376
250,750,491,378
250,>9#�M������H�250,750,296,369
Ich hab jetzt getestet, bei singleValues[880] ist bei mir Schluß.👍
Du benutzt wahrscheinlich einen Aduino Nano R3 mit 2048 Bytes Speicher.
Der Frank verwendet den Arduino Nano Every. Der besitzt 6 Kilo Bytes bzw. 6144 Bytes Speicher.
Ein Integer ist 16 Bit groß, bedeutet pro Integer 2 Bytes Verbrauch.
Da der Arduino auch intern bereits Speicher belegt (für Millis,Timer, usw), sind bei dir dann "nur" noch 880 Bytes für das Array übrig.
Ein paar Bytes verbrauchst du ja auch noch für die anderen Variablen, wie Average, Sum, ...
@@Klimafutzi Richtig. Ich wollte nur darauf hinweisen, wer nicht den Nano Every hat, bekommt eine Fehlermeldung.
Allein schon für die 🙂 gute Laune gibt's nen Daumen. 👍
Hallo,
welche Programmiersprache ist das bitte? Danke
C++