Analog Input, Arrays und Schleifen | Arduino Programmierung verständlich erklärt
Vložit
- čas přidán 5. 09. 2024
- Hallo zusammen,
Heute zeige ich euch, wie man effektiv Mittelwerte aus Messungen vom Analog-Input errechnet. Nebenbei kommen Arrays und Schleifen zum Einsatz.
Wie immer mit vielen nützlichen Tips "nebenbei"
Hier noch der Link zum github-Post, wo erklärt wird, wie man den seriellen Plotter verändert: github.com/ard...
Viel Spaß beim Schauen !!
----------
Der Nachbau ist natürlich auf eigene Gefahr und ohne Erfolgsgarantie ;-)
Achtet auf eure eigene Sicherheit und benutzt erforderliche Schutzkleidung bzw. Sicherheitsmaßnahmen
Wenn ich mal (ausversehen) im Video unsicher arbeite, macht es besser ;-)
Meinen Shop findet ihr unter: www.frohnix.de
---------------------------------------
✂️ Videoschnitt
---------------------------------------
DaVinci Resolve 17 (studio)
---------------------------------------
🎥 Kameras
---------------------------------------
SONY ZV-1
LUMIX G70
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!!
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
Hallo Frank, ich finde es super das es weiter geht mit den Arduino Kurs. Super alles erklärt, sehr gutes Video.👍
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,
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
5:47 …es gibt sie also doch, die IF-Schleife😅… der Running Gag unter den Programmierern … *Spaß* …tolle Video-Reihe… vielen Dank …
Sehr gut erklärt, vielen Dank
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
Hallo Frank! Super Videoreihe! Einfach und verständlich erklärt. Ich freue mich auf jeden Fall auf weitere Erklärvideos deinerseits 👍
Ich bin überrascht, dass es weitergeht. Super (und das bei diesem Wetter).
Großartig. Vielen Dank das Du mit diesem Thema weiter machst. TOP
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.
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
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.....
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.
Allein schon für die 🙂 gute Laune gibt's nen Daumen. 👍
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. Wo kommt der Analogwert her? Ist an A0 ein Poti angeschlossen?
Da issa wieder !! 🔥🔥🔥🔥
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 !
Na sichi, Didä 😄
Beide Tage 😬
@@FrohnixBastelbude na denn werden wir uns sehen - ick freu mir !
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.
Geht die Reihe noch weiter ? :)
Theoretisch ja. Es fehlt, wie immer, die Zeit. Mal sehen, wann ich wieder Luft habe.
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.
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.
Hallo,
welche Programmiersprache ist das bitte? Danke
C++