STM32 Mikrocontroller-Experimente Livestream 5
Teilen
[[YOUTUBEVIDEOBOX(1QrJH0HB5LU)]] Also, ich werde, ich habe eine Idee. Ich bin mir nicht sicher, ob ihr das machen wollt oder nicht, aber ich habe ein bisschen Angst davor, es zu tun. Es ist, mal sehen. Es ist ein Update, und ihr könnt es vielleicht nicht sehen. Nun, mal sehen. Jetzt könnt ihr es nicht sehen. Lassen Sie mich sehen, ob ich das verschieben kann. Hm. Es wird nicht angezeigt. Nun, es gibt ein Update für die STM32 Cube IDE. Und es könnte für einige Leute hilfreich sein, den Update-Prozess zu lernen, aber ich glaube, ich habe das Update gerade verloren. Ja, ich habe es verloren. Wenn man also die STM Cube zum ersten Mal einschaltet oder startet, bekommt man, ich schätze, vielleicht nach einer bestimmten Anzahl von Minuten oder Stunden, diese kleine Benachrichtigung unten rechts, dass es ein Update gibt. Also, vielleicht mache ich das, weil es einigen Leuten helfen könnte, und ich bekomme es jetzt nicht. Vielleicht passiert es später im Stream, und ich kann es aktualisieren. Denn, ihr wisst ja, die Updates in der IDE, das ist fast so, als würde man das Programm noch einmal komplett installieren, und es wäre schön, das zu zeigen. Das wäre eine Art Experiment für sich, denn man weiß nicht, was bei einem Update mit der STM Cube passieren wird. Denn es basiert, es ist eine Schicht auf der Eclipse IDE. Und Dinge können kaputtgehen, denke ich, aber ich bin sicher, es wurde getestet. Aber was ich herausgefunden habe, ist, dass bei einer Installation der Projektordner irgendwie verloren geht oder man die Möglichkeit hat, den Projektordner in die nächste Version der Software zu legen. Okay, cool. Lassen Sie mich das tun. Gehen wir zu Hilfe. Danke, Skeptic. Ich weiß die Vorwarnung zu schätzen. Alles klar, Hilfe. Über. Installationsdetails. Also, lassen Sie mich nachsehen. Ich glaube nicht, dass ich das schon einmal gemacht habe. Das ist also die Eclipse. Eclipse.org IDE. Eclipse Modeling Project, die MX. Das ist wohl die Cube MX. Eclipse PTP. Ich habe ehrlich gesagt keine Ahnung, was das alles ist. Also, wo wäre die Schaltfläche „Nach Updates suchen“? Ich schätze, es ist eine davon. Ich habe Angst, das zu tun. Mal sehen. Ich werde warten, bis... Nun, ich sehe es. Ich sehe es. Ich sehe es. Es ist unten. Okay. Ich glaube nicht, dass ihr das sehen könnt. Ja, es wird nicht auf OBS angezeigt, aber es steht „Update verfügbar“. Updates sind für Ihre Software verfügbar. Klicken Sie, um die Updates zu überprüfen und zu installieren. Sie werden in vier Stunden daran erinnert, aber hier gibt es nichts zum Klicken. Oh, warten Sie. Ich habe gerade auf das Feld selbst geklickt. Okay. Also, mal sehen. Könnt ihr das sehen? Ja, das könnt ihr sehen. Ihr seht, obwohl ich sage, dass ich Angst habe, Dinge zu tun, weil ich es wirklich bin und ich das live mache, wenn ich das nicht live machen würde, würde ich wahrscheinlich einfach zufällig klicken oder es sehr selbstbewusst durchgehen. Aber weil ich live bin, weiß ich, dass Dinge kaputtgehen können und es zu einem Chaos führen könnte. Es könnte zu einem sehr kurzen Stream führen. Also ist es wahrscheinlich gut für mich, das im Stream zu machen. So könnt ihr meine Denkweise ein wenig sehen. Ich kann euch meine Denkweise ein wenig erzählen, während ich versuche, es zu tun. Los geht's. Ja, machen wir es. Alles klar. Also, wir haben die SPMCube IDE. Ich werde darauf klicken. Ich schätze, ich könnte einfach alles auswählen, auf Weiter drücken. Ich meine, es gibt hier sowieso nicht viel Gelegenheit, etwas zu vermasseln. Alles klar. Also, fertigstellen. Und es zeigt auch, dass, wie diese ganze Sache mit dem Bare Metal, ihr wisst, ich programmiere Bare Metal, Bare Chip Programmierung, ihr wisst, nur auf etwas sehr Low-Level. Und wenn ich Angst habe, ein Update zu machen, zeigt es euch einfach, wie, ihr wisst, ihr solltet keine Angst haben, in diese Art von Entwicklung einzusteigen, ihr wisst? Zumindest ist das die Schlussfolgerung, die ich ziehen werde. Ich verwende den STM32F030R8T6. Aber wenn ihr nur den F030 verwendet, ist das wahrscheinlich genug. Es gibt vielleicht verschiedene Pakete, wie zum Beispiel eine unterschiedliche Anzahl von Pins. Ich weiß es nicht wirklich, weil ich zurück zum Datenblatt müsste, weil das Datenblatt tatsächlich alle Versionen des F030 abdeckt. Alles klar. Also, ich schätze, es ist alles auswählen, ausgewähltes vertrauen. Ich schätze, ich vertraue hier allem. Habe ich eine Wahl? Hier sind wir. Ausgewähltes vertrauen. Ich vertraue dir. Ich sollte das wahrscheinlich beenden. Ich werde den S verlassen, ja, nun, es sagt mir sowieso, dass ich neu starten soll. Also werde ich es neu starten. Ich glaube, es ist Cortex-M0. Zumindest glaube ich, dass ich das in einem meiner früheren Videos gesagt habe. Okay, also sieht es so aus, als ob es neu gestartet wurde. Also, schauen wir mal. Es steht immer noch 1.14.0, also glaube ich nicht, dass es sich tatsächlich geändert hat. Das könnt ihr wahrscheinlich direkt hier sehen. Also werde ich, oh, schau dir das an. Es hat etwas geöffnet. Ich weiß nicht warum. Alles klar, also werde ich das beenden und ich werde, weil das das ist, was ich gerade benutze, werde ich nachsehen, was installiert ist, die neueste installierte Version. Es steht immer noch 1.14.0 als die neueste, die ich habe. Lassen Sie mich sehen, ob ich kann, und es hat nichts installiert, lassen Sie mich sehen, ob ich etwas drauflege. Nein, vielleicht war es nur der Cube Monitor. Nein, das ist es nicht. Huh. Also, ich habe die, ja, das ist die neueste. Das ist die, die ich benutzt habe. Das ist komisch. Vielleicht ist es ein Update für andere Teile der STM32 Cube IDE und nicht für die gesamte Cube IDE. Hmm, interessant. Nicht sicher, was da passiert ist. Also, gehen wir mal rein und sehen, ob es immer noch funktioniert. Ich habe noch nicht an USB-Treibern gearbeitet. Bei diesem speziellen Controller habe ich den USART verwendet, bei dem man einen FT232-Chip verwendet und damit über USB kommunizieren kann. Aber ich habe das nicht getan, diesen, man kann die STM32s mit integriertem USB finden, und ich werde das wahrscheinlich viel später behandeln, aber ich habe das noch nicht speziell gemacht, ihr wisst. Ja, ich bin mit dem RP2040 nicht vertraut. Okay, mal sehen. Gehen wir mal weiter, hat jemand Ideen, was ich auf dem Display anzeigen soll? Mal etwas näher ran. Letztes Mal endete ich damit, die Pixel zu invertieren, und wir haben es in die Endlosschleife gelegt, die hin und her die Pixel invertiert. Das war also der letzte Befehl, den wir uns angesehen haben, der Pixelinversionsbefehl. Oh, interessant. Also der RP, es macht Sinn, denke ich, Raspberry, der Raspberry Pi. Der RP2040 ist der Mikrocontroller für den Raspberry Pi und für den Pico. Das ist also, denke ich, die kleinere Version. Ich war vor einer Weile an Raspberry Pi interessiert, als ich versuchte, Wege zu finden, den Raspberry Pi als CNC-Steuerung zu nutzen. Und ich wollte eine Linux-Distribution darauf installieren und einfach Linux CNC zur Steuerung verwenden, aber ich habe dieses Projekt nicht wirklich weiterverfolgt. Aber ich habe noch Raspberry Pis ungenutzt in meinen Schubladen. Also gut, mal sehen, was sollen wir hier anzeigen? Wer hat einen Vorschlag, was ich auf dem Display anzeigen soll? Ich werde wahrscheinlich das Blinken stoppen, weil das wahrscheinlich alle nerven wird. Ich werde versuchen, einen Flash zu machen und zu sehen, ob es funktioniert. Und es funktioniert. Okay, also bin ich mir nicht wirklich sicher, was mit dieser Installation passiert ist. Es hat mir keine neue Version gegeben. Wenn jemand anderes die... Oh, schau dir das an. Ich habe es invertiert. Also lasst mich diese Inversion ändern. Das war der A6 hier. Und es sagt, setze normale Anzeige, also werde ich das umbenennen in... Pixelinversionsbefehl. Also A7 ist invertiert. Oder ich sollte sagen A7 gleich... Schwarz auf weiß. Das kann ich nicht tun. Wie würde ich das nennen? Hat jemand Vorschläge? A7 wäre invertiert, denke ich. Und A6 ist normal. Ich habe versucht, beschreibender zu sein, aber das wäre sehr schwierig. Also, was bedeutet "set multiplex ratio"? Ich möchte die Dinge ein wenig durcheinanderbringen, denn es könnte etwas eintönig werden, nur ständig über OLEDs über viele Sitzungen hinweg zu sprechen. Ich würde gerne ein wenig hin und her wechseln, denn zum einen glaube ich, dass es... zumindest für mich... die Dinge konkreter macht, wenn ich nicht nur eine Sache auf einmal mache. Ich würde hin und her zu zwei verschiedenen Ideen wechseln. Und wenn man dann zu der anderen Idee zurückkehrt, macht es die Dinge irgendwie konkreter, weil man seinen Geist zwingt, ein bisschen mehr zu trainieren. Ich weiß nicht, ob das eine gute Art ist, es auszudrücken, aber was ich mir denke, ist, den Beschleunigungssensor-ADC in diesen Mix hier in diesem Programm einzubeziehen, während ich auch mit dem OLED arbeite. So können wir lernen, wie man den ADC benutzt, während wir gleichzeitig versuchen, etwas auf dem Display anzuzeigen. Also ich denke, das werde ich tun. Wenn jemand Einwände dagegen hat, lasst es mich wissen. Pranjal fragt: "Wie Bibliothek oder Low-Level-Programmierung?" Was ist gut? Beide sind gut. Meiner Meinung nach mag ich persönlich Low-Level-Register-Level-Programmierung, weil es für mich bequemer ist. Aber Hal wird dir eine Hardware-Abstraktionsschicht geben, also solltest du das verwenden, wenn du weißt, dass du den Mikrocontroller für das Projekt, für das du programmierst, ändern musst. Wenn du also für eine Firma arbeitest und sie sich für einen bestimmten Mikrocontroller entschieden haben, dieser aber später nicht die erforderlichen Funktionen hat, dann könntest du... Wenn du Register-Level-Programmierung machst, sind die Funktionen möglicherweise nicht kompatibel. Sie werden es im Allgemeinen sein, weil das Register-Level die gleichen Masken verwendet. Sie verwenden die gleichen Makros und Defines. Aber wenn du zum Beispiel mit einem Mikrocontroller arbeitest, der... Lass mich hier etwas ändern. Wenn du eine... Hörst du das Geräusch im Hintergrund? Den Staubsauger? Okay, lass mich der Person sagen, sie soll ihn ausschalten. Warte eine Sekunde. Ich entschuldige mich wirklich, wirklich für diesen Lärm im Hintergrund. Ich habe meine Frau gebeten aufzuhören, und ich glaube nicht, dass ich dabei sehr nett war, und ich werde mich wahrscheinlich später entschuldigen müssen, aber ich hoffe, sie hört sehr bald auf, und ich entschuldige mich wirklich dafür. (Lacht) Ja, nun, ich glaube nicht, dass sie das wollen würde. Alles klar. Ich hoffe, sie hört sehr bald auf, und ich entschuldige mich wirklich. Vielleicht, wenn ich meinen... So, vielleicht macht es das ein bisschen weniger, weil es omnidirektional sein sollte, und du solltest mich immer noch hören können. Ist das besser? Mir gefällt die Frage aber sehr gut. Ich werde versuchen, vielleicht etwas lauter zu sprechen, damit du mich hören kannst. Ja, sie sollte ziemlich bald aufhören. Sie kennt zumindest die Dringlichkeit. Okay, vorher war es besser? Okay. Also, ich werde einfach wieder hierher zurückkehren. (Musik) Also die Frage mit dem HAL und dem Register-Level, die gefällt mir, weil ich denke, dass es wichtig ist, das zu verstehen, weil... Da haben wir es. Die Hardware-Abstraktionsschicht wird es dir ermöglichen, Chips etwas einfacher zu wechseln. Tatsächlich könnte es sogar möglich sein... Weil ich damit keine Erfahrung habe, aber die Art und Weise, wie der HAL funktioniert, ist, dass er mit der ARM-Architektur arbeitet. Und es spielt vielleicht nicht einmal eine Rolle, welchen Chip, welchen Hersteller du wählst. Es sollte nicht. Weil die ganze Idee der Hardware-Abstraktionsschicht bedeutet, dass du dich nicht um die Hardware kümmern musst. Es ist eine Programmierschicht über der Hardware, die du verwendest, also sollte es einfach von einem Hersteller zum anderen funktionieren. Ich weiß nicht, ob das absolut der Fall ist, aber so verstehe ich es. Aber sicher, wenn du auf Registerebene programmierst, wirst du... Es sei denn, du verwendest... Nehmen wir an, ein Mikrocontroller hat drei ADCs oder drei I2Cs. Und du verwendest den dritten auf einem fortschrittlicheren Chip mit mehr Funktionen, und wenn du versuchst, einen billigeren Chip mit weniger Funktionen zu verwenden, und du nicht alle Funktionen des anderen Chips verwendest, müsstest du das Programm ändern, um den I2C1 anstelle des I2C3 zu verwenden, oder vielleicht den I2C2. Das ist also der einzige Punkt, an dem du meiner Meinung nach Probleme mit Mikrocontrollern haben wirst, und auch die Taktrate. Wenn etwas, das du benötigst, mehr als 48 MHz erfordert, zum Beispiel, musst du auch mit dieser Einschränkung arbeiten. Wie man Programmierung einfacher macht? Ich denke, das ist ein bisschen subjektiv, zumindest für mich, weil ich gelernt habe, die Registerebene der AVR-Serie zu verwenden. Denn als ich AVR lernte und die Registerebene lernte, konnte ich problemlos in den STM32 einsteigen. Ich meine, es war wie, den Chip wechseln und nur ein bisschen die Art und Weise lernen, wie man mit dem STM32 arbeitet, und alles andere ist einfach. Bitweise Operationen, das Verschieben von Bits in Registern und so weiter zu verstehen, war relativ einfach. Nun, ich denke, weil ich mit dem AVR angefangen habe, habe ich damals nicht gelernt, wie. Damals gab es, glaube ich, keine HAL-ähnliche Schicht für den AVR. Also, gut, ja, und es könnte die Programmierung einfacher machen, weil man, nun, wenn man am Anfang gelernt hat, wie, wird es einfach sein. Aber man muss immer noch die Befehle kennen, man muss immer noch wissen, welche Parameter in die Funktionen gehen, man muss die Funktionen kennen, offensichtlich. Und es gibt wahrscheinlich eine Menge Dokumentation, so dass es in dieser Hinsicht einfacher sein könnte, Informationen zu finden. Ich weiß, dass, wenn man anfängt, LLMs zum Programmieren zu verwenden, es einem eher beibringen will, wie man programmiert, anstatt auf Registerebene zu programmieren. Man muss explizit sagen, bitte zeige mir ein Programm auf Registerebene, und es wird dir das zeigen, anstatt des wie-basierten, aber es geht immer zuerst, wie. Also, vielleicht ist das ein Hinweis darauf, wo die Dinge im Internet als Ganzes stehen, weil sie im Internet trainiert werden. Und Prenjal hat Recht, wenn er sagt, was im Mikrocontroller vor sich geht, aber ich denke immer noch, dass man auf Bitebene die Möglichkeit hat, auch auf Bitebene zu ändern. Also, ich denke, beides ist wahrscheinlich gut. Ich denke nicht, dass es einen Grund gibt, das eine oder das andere zu wählen. Beides ist in Ordnung. Es hängt nur davon ab, womit man anfängt, denke ich. Und ich habe in der Vergangenheit HAL-Tutorials gemacht. Eine andere Sache ist, wenn man aus den Datenblättern oder aus dem Referenzhandbuch lernt, lernt man die Registerebene, weil alle Programmbeispiele in den Anhängen alle auf Registerebene sind. Es gibt keine HAL-Programmierbeispiele. Also war ich irgendwie gezwungen, die Registerebene zu lernen, nur weil ich anfangs das Referenzhandbuch lernte. Ja, ich bin heutzutage eher geneigt, das LLM zu bitten, für mich zu programmieren, weil ich gerne... Ich denke, so lerne ich aus Beispielen, und so habe ich auch aus den Programmierreferenzen gelernt. Lasst mich dieses Display ändern, weil es mich ein bisschen übel macht. Ich glaube, ich habe es auf A6 geändert. Also sollte es nur den Text und nicht den Hintergrund anzeigen. Okay, das ist gut. Jetzt kann ich mich besser darauf konzentrieren. Alles klar, also ändern wir, was auf dem Bildschirm ist. Da haben wir es. Alles klar, das hat funktioniert. Alles in Gelb. Also, was haltet ihr davon, jetzt die ADC-Sachen einzumischen, oder sollen wir warten, bis wir vollständig erklärt haben, was das OALED macht? Und wenn jemand eine Zusammenfassung möchte, kann ich wahrscheinlich eine Zusammenfassung dessen machen, was wir bisher besprochen haben. Lasst mich das tun. Also, wir haben die... Nun, lasst mich mit der Hauptsache beginnen. Ich werde das so schnell wie möglich tun. Wir haben über die Systemtaktkonfiguration gesprochen. Wir laufen mit 48 Megahertz. Wir haben über das Aktivieren des PLL-Taktes dafür und des HSI gesprochen. Oder die... Eigentlich, was ist es? Es ist die HSI. Und die I2C-Initialisierung, wir haben uns das Aktivieren der alternativen Funktionen für die beiden Pins angesehen, die wir verwenden. Direkt hier, die 58 und 59. Aktivieren Sie es. Bei diesem war ich mir nicht sicher, was es tat, aber das ist notwendig, weil wir in den Fast Mode Plus gehen, und ich entschuldige mich für das Bellen der Hunde. Meine Frau war draußen. Sie hat gestaubsaugt. Und wenn sie zurückkommt, ist es, als hätten die Hunde sie ein Jahr lang nicht gesehen. Und sie sind wütend auf sie, weil sie gegangen ist. Und hier verwalten wir, wie schnell der I2C mit dem OLED-Display kommunizieren wird. Dieses OLED-Display kann anscheinend mit 1 Megahertz kommunizieren. Ja, ich kann keine Pause bekommen, oder? Ja. Und weißt du, es ist... Oh, mein Gott. Sie kommen näher. Okay. Also war ich mir unsicher, während ich das tat... Nun, ich habe dieses Programm nicht geschrieben. Claude hat dieses Programm geschrieben. Aber ich war unsicher, mit welcher Geschwindigkeit wir mit dem OLED kommunizieren können. Aber glücklicherweise konnte ich den Fast Mode Plus verwenden, der über 400 Megahertz oder 400 Hertz, 400 Kilohertz liegt. Ich war unsicher, ob ich darüber hinausgehen konnte, weil I2C entweder mit 100 Kilohertz, 400 Kilohertz oder Fast Mode Plus läuft. Und ich bin mir nicht sicher, wie schnell Fast Mode Plus tatsächlich ist, aber laut Claude sind es mindestens 1 Megahertz. Also gehe ich davon aus. Das ist also für Fast Mode Plus erforderlich, und das aktiviert Fast Mode Plus und verwendet die Systemkonfiguration, die hier aktiviert ist. Ja, 400 Kilohertz. Ja, 1 Megahertz ist das, was Fast Mode Plus ist, glaube ich. Genau hier aktivieren wir den I2C, und wir haben auch über den Schreibbefehl oder die Schreibfunktion gesprochen, wo die Adresse verwendet wird. Es sendet die Adresse zusammen mit den Daten und spezifiziert die Länge oder wie viele Bytes, was im... wenn man das Referenzhandbuch ansieht, sieht man, dass das eine Spezifikation innerhalb dieses Registers für das Steuerregister ist. Man kann die Anzahl der Bytes angeben, und es macht im Wesentlichen alles automatisch. Man muss nur die Länge angeben, sicherstellen, dass man eine Schleife mit dieser Anzahl von Bytes hat, und es wird im Wesentlichen automatisch diese Bytes über die I2C-Leitungen übertragen. Ich habe keine Widerstände, Pull-up-Widerstände zwischen diesen beiden Leitungen hinzugefügt, und das war eine Frage am Anfang, weil wir bereits die Rückseite dieses OLEB untersucht haben, und dort sind bereits Widerstände, die diese hochziehen. Und ich glaube, es sind 10K-Widerstände. Im Allgemeinen wird 4.7K empfohlen, aber selbst in meinen früheren Experimenten, als ich... als ich den Beschleunigungssensor vor etwa drei oder vier Jahren über I2C verbunden habe, ich glaube, es war sogar vor etwa sechs Jahren, habe ich 10K-Widerstände verwendet, genau wie dieser hier. Okay, lassen Sie mich die Kommentare lesen. Bob sagt... Oh, Sie sprechen mit Pranjal. Okay, ja, nichts Neues hier. Immer noch kein Chat in Twitch, also fangen wir niemanden in Twitch ein. Ich habe gerade den Zeitplan für Twitch eingestellt, um zu sehen, ob das einen Unterschied macht, aber nichts... Okay, also... also haben wir den Schreibbefehl, den OLEB-Befehl, den wir gerade durchgehen, durchgesehen. Da wir uns den OLEB-Befehl und seine Funktionsweise bereits angesehen haben, und er den I2C-Schreibvorgang verwendet, haben wir begonnen, den OLEB-Befehl durchzugehen, aber wir haben eine Pause davon gemacht und uns die Zeichenerstellung angesehen. Also haben wir damit begonnen, wie man ein Zeichen erstellt, eines der ASCII-... eines der Zeichen im ASCII-Zeichensatz. Und übrigens, weiß jemand, was dieses Akronym bedeutet? A-S-C-I-I? Ich wusste das, als ich etwa 10 Jahre alt war. Es ist lustig. Als ich BASIC auf dem Modell 1, TRS-80, programmiert habe. So haben wir bestimmt, wie man einen Buchstaben bildet. Das ist eigentlich der Buchstabe A. Und es brauchte ein paar Iterationen, aber wir haben es herausgefunden. Der erste war eine Art Kauderwelsch, dann der zweite war auf dem Kopf stehend oder gespiegelt, und dann der dritte haben wir richtig hinbekommen. Ja, ASCII. American Standard Codes, glaube ich, für den internationalen Austausch. Ich glaube, das ist es, wenn ich mich richtig erinnere. Wie Sie sehen, schlage ich es nicht nach. Das sind völlig nutzlose Informationen in meinem Gehirn. Ja, American Standard Code for Information Interchange. Ich dachte immer, es sei international, weil es internationale Fähigkeiten hat, aber ja. Information Interchange. Ja, das habe ich, glaube ich, auch in Erinnerung. Oh, Sie haben es nachgeschlagen. Ich war nah dran. Die Informationen habe ich nicht richtig verstanden. Alles klar. Das ist die Zusammenfassung. Und dann haben wir damit Experimente gemacht. Wir haben diese Werte geändert, um zu sehen, was mit dem OLED passiert, und das führen wir fort. Und das letzte, was wir gemacht haben, war der A6. Wir haben A7 ausprobiert, und es hat das Display invertiert. Aber Claude gab uns hier einige sehr undurchsichtige Informationen, die nur "Setze normale Anzeige" sagten. Und das war nicht sehr hilfreich. Also, was ist dieses "Set multiplex ratio"? Ich habe niemanden gehört, der etwas über den Wunsch gesagt hat, in die ADC-Sachen einzusteigen, also werde ich fortfahren, es sei denn, jemand sagt etwas anderes. Also "Set multiplex ratio". Und das ist auch sehr unklar, nicht sehr deutlich. Also, lassen Sie uns einen Blick darauf werfen, was wir im Datenblatt finden können. Also werde ich das Datenblatt wieder hochfahren. Das ist der SSD 1306 Controller. Und wenn jemand wissen möchte, das ist der Controller, der das Display antreibt. Es ist nicht das Display selbst. Es scheint unscharf zu sein. Das ist besser. Okay, also schauen wir mal, was die Nummer hier war. Es ist A8. Was macht also A8? Sehen wir uns die tatsächliche Definition an. Alles klar, hier sind wir. A8. Ich hoffe, das ist eine gute Zusammenfassung für Sie. Also, Multiplex-Verhältnis einstellen. MUX-Verhältnis auf N plus 1 MUX einstellen. Es sieht also so aus, als gäbe es hier keine Variationen. Man kann die Zahl nicht ändern. Es ist so, dass man das bekommt. Das ist also nichts, was wir tatsächlich ändern können. Schauen wir uns also die ausführlichere Erklärung an. Ja, es sieht so aus, als ob das der einzige Wert ist, den es überhaupt akzeptiert. Brauchen wir es also überhaupt? Vielleicht ist es bereits standardmäßig so. Wir könnten es vielleicht einfach ausschalten oder einfach gar nicht verwenden und sehen, was passiert. Dieser Befehl schaltet den standardmäßigen 63-Multiplex-Modus auf ein beliebiges Multiplex-Verhältnis zwischen 16 und 32 um. Es muss also ein Befehl direkt danach kommen. Okay, das ist es hier. Das ist also die Einstellung dieses Verhältnisses. Wir haben also einen 64stel-Duty. Ich frage mich, was dieser Duty ist, ein Duty-Cycle. Was ist das? Also 16 bis 63. Also 64, schätze ich, ist das Maximum. Ja, der SSD-Controller auf der Rückseite des OLED. Ich glaube, das ist ja, man kann dort nicht viel sehen. Es ist extrem dünn, aber man kann dieses Kabelset im Allgemeinen an einem, mal sehen, ob ich eines finden kann. An einem Standard. Und das ist ein, mal sehen, ob ich das so weit wie möglich vor die Kamera bekomme. Dies ist ein Standard-LCD-Display. Dies ist ein 20 mal 4. Sie haben also 20 Zeichen mal 4 Zeilen. Und auf der Rückseite sehen Sie eine Reihe von Chips. Und es mag noch mehr dazwischen sein, aber ich glaube nicht. Aber dies ist im Allgemeinen einer davon, der eigentliche Prozessor. Und der Prozessor, er beginnt mit einem H. Ich kann mich nicht erinnern, was es ist. Aber Sie schauen sich das Datenblatt für den Prozessor an und nicht das Datenblatt für das Display, weil die Größe des Displays eigentlich keine Rolle spielt. Dies ist nur RAM. Das Display sind nur Speicheradressen. Und es ist nicht flüchtig, glaube ich. Wenn Sie es also einstellen, es sei denn, Sie schalten es aus, wird es verschwinden. Aber während es eingeschaltet ist, bleibt der RAM dort und Sie können die RAM-Adressen auf dem Display ändern. Wenn Sie also ein 16 mal 2 oder 20 mal 4 hatten, sind die Adressen eigentlich die gleichen. Es ist nur so, dass Sie einen Startpunkt haben und einfach weitergehen und Sie möglicherweise Zeichen außerhalb des Randes haben, die Sie nicht wirklich sehen. Aber es ist immer noch, Sie wissen, nur weil das Display es nicht anzeigt, heißt das nicht, dass es es nicht tatsächlich in ihrem RAM hält. Oder es kann eine interne Steuerung haben, die die Verwendung dieser bestimmten Speicheradresse nicht zulässt. Aber wahrscheinlich ersteres, nicht letzteres. Der I-Quadrat-C-Multiplexer. Das ist tatsächlich eine gute Frage, denn wie wandelt er vom SSD 1306 Controller in I-Quadrat-C um, und ich glaube, der SSD 1306 sollte das bereits eingebaut haben. Denn dieses Dokument hier hat bereits Befehle für den I-Quadrat-C und zeigt Informationen über I-Quadrat-C. Ich glaube also, dass das eine Option für diesen spezifischen Controller ist, Sie könnten dies eher wie ein Bitwise-Kabel zum Programmieren verwenden. Und Sie können auf dieser Seite die Daten Null bis Sieben sehen. Das ist sehr ähnlich zu der Funktionsweise eines LCDs. Sie wissen schon, Sie haben die Datenpins, Sie haben all diese Pins hier und sieben oder acht davon sind Datenpins, genau wie diese acht hier von Null bis Sieben. Und Sie könnten es auf sehr ähnliche Weise wie ein LCD programmieren. Alles klar, das ist wahrscheinlich mehr Information, als ich über den Controller dort sagen muss. Okay, dieser Befehl schaltet den Standard-63-Multiplex-Modus um, und ich habe keine Ahnung, was Multiplex-Modus überhaupt bedeutet, auf ein beliebiges Multiplex-Verhältnis. Wenn jemand weiß, was Multiplex bedeutet, lasst es mich wissen. Also, was passiert, wenn ich einen dieser Werte ändere? Im Moment ist es ein 164stel-Duty. Was bedeutet also "Three F" im Binär- oder Dezimalsystem? Schauen wir uns das mal an. Ja, das war der, den ich vorher benutzt habe. Und wir bekommen gleichzeitig Werbung. Schau mal. Mal sehen, ob ich das runterholen kann. Okay, jetzt kannst du die Werbung nicht sehen. Alles klar, also nehmen wir die Hexadezimalzahl 3F. Es war 3F. Ja, 3F. Alles klar. Das sind also 63. Okay, was würde passieren, wenn wir es auf 1610 ändern? Was würde passieren, wenn wir das auf 10 ändern? Weiß das jemand? Ja, es ist 128 mal 64. Das ist richtig. Dieses Display hat 128 Pixel in der Breite und 64 Pixel in der Höhe. Okay, ich bin gleich fertig, lassen Sie mich näher herangehen, um zu sehen, ob wir etwas Interessantes sehen können. Ich sollte wahrscheinlich mehr Text hier unten einfügen, nur für den Fall, dass unten etwas passiert. Okay, dann der 164. Multiplexer, der eine der 64 Zeilen gleichzeitig anzeigt. Okay, aber was meinen sie mit 164stel-Duty oder was meint Claude damit, denn für mich klingt "Duty" wie "Duty Cycle". Das ist also schon verwirrend, wissen Sie, also mal sehen, was passiert, wenn wir, ich werde einfach den Play-Knopf drücken und sehen, was passiert. Ja, ich möchte mehr Informationen hinzufügen. Was soll ich also noch hier einfügen? Ich habe darüber nachgedacht, die Namen der Leute im Chat einzufügen, aber ich weiß nicht, ob ihr damit einverstanden seid. Wo ist das? Okay. Ich liebe Bob. Ja, lass es uns tun. Ganz sicher. Okay. Dritte Zeile. Alles klar, ich habe ein ha ha bekommen. Ich kann keine Gesichter machen, aber wir könnten immer die Emojis erstellen. Aber das würde eine Weile dauern, wie wir aus der vorherigen Sitzung wissen. fünf? Alles klar, was soll in Zeile Nummer fünf stehen? Ich werde ein Obst dort hineinlegen. Ich mag Out of Fruit. Geben Sie ihnen ein kleines Shoutout. Ich habe immer zu dieser Firma aufgeschaut. Sie gibt es seit 2005. Ich habe 2007 angefangen. Wir haben irgendwie eine parallele Entwicklung, denke ich. Sie sind natürlich viel erfolgreicher als ich. Aber ich habe immer zu ihren Sachen aufgeschaut. Sie haben so viele Informationen. Es ist einfach eine wunderschöne Firma. Alles klar, also verrückte Bitmaps. Okay, wir müssen noch eine Zeile gehen, ich denke sieben. Also 01234567. Grüß Gott. Und ich werde einfach "Grüß Gott" schreiben, weil ich weiß, dass du zu. JJ oder Hehe. Oder Ha Hehe. Ich denke, es ist wahrscheinlich Hehe. Ich weiß nicht, ob ich deinen Namen falsch ausspreche. Ich entschuldige mich zutiefst. Willkommen und vielen Dank, dass Sie gekommen sind und den Livestream genießen. Okay, also ich werde "Grüß Gott" machen. Okay, ich versuche einfach zufällig, Dinge auf dem Display anzuzeigen. Also, mal sehen, was passiert. Habe ich es auf 10 geändert? Das habe ich doch, oder? Okay, also schauen wir mal, was der 1/16-Duty oder 1/17-Duty, weil es vorher 1/64 war. Okay, schau mal. Es beginnt bei dem oh, das wäre interessant, damit zu spielen, wenn ich das in eine Schleife lege. Und ich frage mich, ob es im laufenden Betrieb aktualisiert wird. Dies ist vielleicht nicht eines dieser Dinge, die im laufenden Betrieb aktualisiert werden. Sie müssen das tun. Sie müssen dies in der ursprünglichen Konfiguration tun. Aber es wäre interessant zu sehen, was passiert, wenn ich das in eine for-Schleife lege und es ändere. Oder es ändere, während eine for-Schleife läuft. Also kann ich es in diese Hauptschleife hier legen. Also versuchen wir eine for-Schleife, und ihr wisst ja, wie das mit meiner Programmierung in C/C++ in einem Fiasko-Zugunglück endet. Alles klar, das ist der Befehl. Ich werde ihn hierhin legen, denn offensichtlich muss ich das zuerst einrichten und dann den Duty spezifizieren. Was auch immer das bedeutet. Alles klar. Ja, sehr, sehr, wissen Sie, diese Dinge kosten nur fünf Dollar. Wenn es explodiert, explodiert es. Es sorgt für gute Inhalte. Ich habe noch nie auf dem Nucleo-Board entwickelt, aber es wird sich nicht von dem unterscheiden, was ich hier mache. Sie programmieren immer noch mit einem Nucleo-Board, Sie programmieren immer noch über eine STM- oder ST-Link-Verbindung. Ich glaube nicht, dass es über. Es könnte sein, ich weiß nicht, ob es nicht über eine STM- oder ST-Link-Verbindung ist. Der ST-Link könnte tatsächlich auf dem Board integriert sein. Ich bin mir nicht wirklich sicher. Aber es ist so ziemlich dasselbe. Ja, kein großer Verlust. Selbst wenn ich mein gesamtes System hier in die Luft jagen würde, selbst diesen Chip, spielt das keine Rolle. Es ist mir egal. Es macht Spaß. Es macht Spaß, Experimente. Darum geht es in diesem Kanal, um Experimente. Okay, das stimmt. Ja, auf dem Board ist der ST-Link drauf. Also lag ich mit meiner Vermutung richtig. Cool. Alles klar, wer weiß, wie man eine For-Schleife macht? Mal sehen. For offene Klammern, zwei Semikolons. Wir haben den ST-Link. Wer weiß, wie man eine For-Schleife macht? Mal sehen. For offene Klammern, zwei Semikolons. Wir haben die Initialisierung einer Variable. Und ich werde sie auf Null initialisieren. Am Ende ist es der Schritt. Also können wir sie um eins erhöhen. Solange i kleiner als 64 ist, aber es muss tatsächlich bei 16 beginnen, nicht wahr? Und dann werde ich die Klammern verwenden und dieses Zeug hineinkopieren und dann dies zu I machen. Sieht jemand ein Problem damit? Außer dem wilden Abstand. Feranek, vielen Dank, dass du gekommen bist. Hallo, wie geht es dir? Alles klar, danke. Oh, ja, da hast du es. Bob, danke für den Beispielcode. Das weiß ich zu schätzen. Ich glaube, ich werde besser, wenn ich diese Livestreams mache. Ich werde anfangen, besser zu werden, diese Sachen zu programmieren, weil ich ziemlich eingerostet bin. Ich meine, ich musste mich so lange auf CNC-Sachen konzentrieren, dass vieles von diesem Programmierkram und auch ich programmiere C#, meine gesamte Website basiert auf C#-Programmierung. Ich habe wahrscheinlich viele Tausend, wahrscheinlich 100.000 Zeilen in diesem Programm. Ja, mal sehen. Verwenden wir eine Verzögerung. Du hast Recht. Verzögerung Millisekunden. Ich glaube, das habe ich als. Ja, es ist als leuchtend gelb signiert. Also sieht es so aus, als ob es richtig wäre. Also werde ich 300 Millisekunden machen. Das sollte gut sein, denke ich. Wir sollten von 16 bis 64 ziemlich schnell sein. Alles klar. Sind wir bereit? Seht ihr irgendwelche Probleme? Ich sehe keine Probleme. Hier sind wir. Wir laufen. Oh, schau dir das an. Es ist bedauerlich, dass wir bei 16 anfangen müssen. Das ist ziemlich cool. Du kannst das Gelb hier oben sehen. Was wäre, wenn wir versuchen, von eins zu 60 zu 64 zu 63 oder von Null zu 63 zu gehen? Macht Multiplexing in diesem Fall Sinn, das Wort Multiplexing? Für mich sieht das aus wie die Startlinie. Und wenn ich es in einem Datenblatt erklären müsste, würde es ein Ingenieur sicher erklären können. Er würde wahrscheinlich die richtige Terminologie verwenden wollen. Es ist sehr esoterisch, aber es sollte einige, Sie wissen schon, vielleicht ist das der Ausschluss. Vielleicht ist das der Ausschluss. Sie wissen schon, um Leute davon abzuhalten, dies zu tun, es sei denn, sie haben einen Hochschulabschluss. Huh. Energiesparen. Ja, denn im Datenblatt steht, dass man nur von 16 bis 64 gehen kann. Also, wie hier drüben, 16 bis 63. Lasst uns diese Lücke erweitern. Lasst uns von, lasst uns von eins gehen. Ich könnte von Null gehen, denke ich, oder? Und lasst uns einfach sehen, was passiert. Was ist das Schlimmste, was passieren kann? Okay, versuchen wir es. Ich werde zuerst mit 63, 32 bis 63 gehen. Und gehe mit dem, was Bob sagt. Probieren wir es aus. Nun, es wird einfach von der Mitte beginnen, denke ich. Ja, es wird einfach von der Mitte beginnen. Es sieht also so aus, als ob es von der 16. Zeile beginnt und bis zur 64. Zeile geht. Deshalb möchte ich irgendwie von der ersten Zeile beginnen und einfach sehen, was passiert. Hat jemand Vorhersagen? Sieh mal, scheint das nicht so, als wäre Multiplexing nicht das richtige Wort dafür? Alles klar, versuchen wir es. Schauen Sie sich das an. Ist das Datenblatt also falsch? Ich werde schneller. Ich möchte sehen, wie es aussieht, wenn es hier etwas schneller geht. 100 Millisekunden. Und ich werde beim nächsten Versuch auch von Null beginnen. Okay, also, ich meine, das könnte als Enthüllung verwendet werden. Und es ist gut zu wissen, dass diese Befehle geändert werden können. Dieser Befehl kann im laufenden Betrieb verwendet werden. So wie die, die wir zuvor ausprobiert haben, konnten wir das nicht tun. Oder wir wussten nicht, wie man das macht. Also, aber wir haben es versucht und es hat nicht funktioniert. Das war also ein Misserfolg. Aber das ist ein Erfolg. Ich denke, das ist ein Gewinn. Ich würde das nicht als Multiplex bezeichnen. Also werde ich den Kommentar zu Startzeile ändern. Weil dieses Multiplex-Verhältnis einfach nicht richtig erscheint. Das wird wahrscheinlich auch davon abhängen, siehe, hier steht "Setze Display-Startzeile". Und wir konnten dies nicht korrekt zum Laufen bringen. Ja, das ist eine gute Idee. Okay, machen wir das. Bob empfiehlt, es ist eine gute Empfehlung t