Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
talit:electronics:arduno [2024-02-22 15:42] – [3.1 Chronometer 1] gratalit:electronics:arduno [2026-03-04 16:16] (aktuell) gra
Zeile 3: Zeile 3:
 ===== - Arduino-Box mit LCD – "Hello World" ===== ===== - Arduino-Box mit LCD – "Hello World" =====
  
-<color #7092be>**Lernziele:** Arduino-Entwicklungsumgeung (IDE) kennenlernen; Programmiersprache C\+\+ kennenlernen; estes Arduino-Programm schreiben; Display ansteuern.</color>+<color #7092be>**Lernziele:** Arduino-Entwicklungsumgeung (IDE) kennenlernen; Programmiersprache C\+\+ kennenlernen; erstes Arduino-Programm schreiben; Display ansteuern.</color>
  
 Zuerst baust du eine Adruino-Box. Das ist eine verschliessbaer **Plastik-Box**, die neben dem **Arduino UNO** folgende Komponenten enthält: Zuerst baust du eine Adruino-Box. Das ist eine verschliessbaer **Plastik-Box**, die neben dem **Arduino UNO** folgende Komponenten enthält:
Zeile 10: Zeile 10:
   * Display- und Batteriehlaterung (Batterie mit Kabel optional)   * Display- und Batteriehlaterung (Batterie mit Kabel optional)
   * LCD (Display) und Display-Kabel   * LCD (Display) und Display-Kabel
-  * USB-A-Kabel für die Verbindung zwischen Arduino und PC+  * USB-Kabel für die Verbindung zwischen Arduino und PC
  
 Die Idee der Box: Du kannst auf dem Breadboard elektronische Bauteile aufbringen und mit dem Arduino verbinden. Diesen Aufbau kannst du jederzeit mitnehmen: USB-Kabel rein, Box verschliessen und in den Rucksack! Die Idee der Box: Du kannst auf dem Breadboard elektronische Bauteile aufbringen und mit dem Arduino verbinden. Diesen Aufbau kannst du jederzeit mitnehmen: USB-Kabel rein, Box verschliessen und in den Rucksack!
-  - Baue die Box zusammen. **Überlege zuerst gut**, wie du Breadboard, Arduino- und Display-Halterung auf dem Deckel der Plastick-Box platzierst, sodass es praktisch zum Arbeiten ist (Verbindung zum Laptop, Batterie-Anschluss, Display-Verbindung etc.). Klebe dann die drei Komponenten mit doppelseitigem Klebenband fest.+  - Baue die Box zusammen. **Überlege zuerst gut**, wie du die Teile auf dem Deckel der Box platzierst, sodass es praktisch zum Arbeiten ist (Verbindung zum Laptop, Display-Verbindung etc.). Klebe dann die Teile mit doppelseitigem Klebenband oder Heissleim fest.
   - Informiere dich über die Arduino-Programmierung in der Programmiersprache C\+\+ hier: [[informatik:arduino_programmieren|Arduino programmieren]]   - Informiere dich über die Arduino-Programmierung in der Programmiersprache C\+\+ hier: [[informatik:arduino_programmieren|Arduino programmieren]]
   - Verbinde das Display und teste es: Dein Display soll "Hello World" zeigen.    - Verbinde das Display und teste es: Dein Display soll "Hello World" zeigen. 
Zeile 26: Zeile 26:
 //Tipp:// Du benötigst die Funktionen ''pinMode()'', ''digitalWrite()'' und ''delay()''. //Tipp:// Du benötigst die Funktionen ''pinMode()'', ''digitalWrite()'' und ''delay()''.
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung mit delay()| ++++Lösung mit delay()|
 <code c++ Blink.ino> <code c++ Blink.ino>
Zeile 45: Zeile 45:
 </nodisp> </nodisp>
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung mit millis()| ++++Lösung mit millis()|
 <code c++ BlinkMillis.ino> <code c++ BlinkMillis.ino>
Zeile 78: Zeile 78:
   * Programmiere den Arduino so, dass die Frequenz der blinkenden LED mit dem Potentiomter eingestellt werden kann.   * Programmiere den Arduino so, dass die Frequenz der blinkenden LED mit dem Potentiomter eingestellt werden kann.
  
-//Tipp:// Du benötigst u. a. die Funktion ''analogRead()''. Informiere dich erst über diese Funktion: [[https://reference.arduino.cc/reference/en/|Arduino-Referenz]] +//Tipp:// Du benötigst u. a. die Funktion ''analogRead()''. Informiere dich erst über diese Funktion: [[https://docs.arduino.cc/language-reference/de/|Arduino-Referenz]] 
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung| ++++Lösung|
 <code c++ BlinkTune.ino> <code c++ BlinkTune.ino>
Zeile 114: Zeile 114:
   * Ob eine Taste gedrückt ist oder nicht, fragst du innerhalb der loop()-Schleife mit If-Verzweigungen ab (z.B.: if (digitalRead(freqUpPin) == LOW){...}). Da die loop-Schleife mehrere zehntausend Male pro Sekunde durchlaufen wird, ist es gut möglich, dass auch eine sehr kurze Betätigung der Taste mehrmals erkannt wird und damit wie mehrere Betägtigungen wirkt. Das kannst du verhindern, indem du kurz nach Eintritt in die Verzweigung einige Millisekunden wartest (''delay()''). Alles klar? Falls nicht ganz: Lehrperson fragen!   * Ob eine Taste gedrückt ist oder nicht, fragst du innerhalb der loop()-Schleife mit If-Verzweigungen ab (z.B.: if (digitalRead(freqUpPin) == LOW){...}). Da die loop-Schleife mehrere zehntausend Male pro Sekunde durchlaufen wird, ist es gut möglich, dass auch eine sehr kurze Betätigung der Taste mehrmals erkannt wird und damit wie mehrere Betägtigungen wirkt. Das kannst du verhindern, indem du kurz nach Eintritt in die Verzweigung einige Millisekunden wartest (''delay()''). Alles klar? Falls nicht ganz: Lehrperson fragen!
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung| ++++Lösung|
 <code c++ BlinkSteps.ino> <code c++ BlinkSteps.ino>
Zeile 170: Zeile 170:
 ==== - RGB-LED ==== ==== - RGB-LED ====
   * Verbinde folgende Bauteile mit dem Arduino:   * Verbinde folgende Bauteile mit dem Arduino:
-    * [[https://www.adafruit.com/product/848|RGB-LED]]+    * [[https://www.adafruit.com/product/848|RGB-LED 10mm]] oder [[https://www.mouser.ch/datasheet/2/180/HV_5RGBXX_5mm_Full_Color_Series-1489147.pdf|RGB-LED 5mm]]
     * Potentiometer     * Potentiometer
     * drei Tasten     * drei Tasten
Zeile 182: Zeile 182:
   * Du sollst wissen, was PWM ist und wie es funktioniert: Lese [[https://docs.arduino.cc/learn/microcontrollers/analog-output|diese Beschreibung]] und frage nach, wenn etwas nicht ganz klar ist.   * Du sollst wissen, was PWM ist und wie es funktioniert: Lese [[https://docs.arduino.cc/learn/microcontrollers/analog-output|diese Beschreibung]] und frage nach, wenn etwas nicht ganz klar ist.
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung| ++++Lösung|
 <code c++ RGB-LED.ino> <code c++ RGB-LED.ino>
Zeile 243: Zeile 243:
 === Zusatzaufgaben === === Zusatzaufgaben ===
   - Zeige auf dem Display die aktuellen Farbwerte an.   - Zeige auf dem Display die aktuellen Farbwerte an.
-  - Progammiere ein Leuchtmuster: LED-Fabre wechselt regelmässig. +  - Progammiere ein Leuchtmuster: LED-Farbe wechselt regelmässig. 
   - Programmiere mehrere Leuchtmuster, die dann via Display und Tasten wählbar sind. Verwende evtl [[https://www.adafruit.com/category/168|Neo-Pixel-Bautele]] anstelle von RGB-LEDs.   - Programmiere mehrere Leuchtmuster, die dann via Display und Tasten wählbar sind. Verwende evtl [[https://www.adafruit.com/category/168|Neo-Pixel-Bautele]] anstelle von RGB-LEDs.
  
Zeile 256: Zeile 256:
     * Erstelle hierfür eine Funktion z. B. //showTime//, der du eine Zeit in Millisekunden übergeben kannst und die diese Zeit im gewünschten Format aufs Display schreibt. Nutze die Funktion ''sprintf'' für Formatierungen, siehe Beispiele [[https://gist.github.com/ArduinoBasics/6517378fc2ef9e851773837f301b1d55|hier]] und [[https://forum.arduino.cc/t/convert-int-to-sring-with-leading-zero/629313|hier]].     * Erstelle hierfür eine Funktion z. B. //showTime//, der du eine Zeit in Millisekunden übergeben kannst und die diese Zeit im gewünschten Format aufs Display schreibt. Nutze die Funktion ''sprintf'' für Formatierungen, siehe Beispiele [[https://gist.github.com/ArduinoBasics/6517378fc2ef9e851773837f301b1d55|hier]] und [[https://forum.arduino.cc/t/convert-int-to-sring-with-leading-zero/629313|hier]].
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung| ++++Lösung|
 <code c++ CrhonoMeter01.cpp>  <code c++ CrhonoMeter01.cpp> 
Zeile 350: Zeile 350:
   * Wenn der Reset-Eingang LOW wird, werden alle gemessenen oder gespeicherten Zeiten auf 0 gesetzt.   * Wenn der Reset-Eingang LOW wird, werden alle gemessenen oder gespeicherten Zeiten auf 0 gesetzt.
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung| ++++Lösung|
 <code c++ ChronoMeter02.cpp> <code c++ ChronoMeter02.cpp>
Zeile 480: Zeile 480:
   * Erstelle folgende Funktionen:   * Erstelle folgende Funktionen:
     * Eine Funktion //sortTimes//, die die Zeiten sortiert, sodass die kürzeste jeweils an erster Stelle im Array steht.     * Eine Funktion //sortTimes//, die die Zeiten sortiert, sodass die kürzeste jeweils an erster Stelle im Array steht.
-    * Zwei Funktionen //writeTimesEEP// und //readTimesEEP//, die alle fünf Bestzeiten im EEPROM speichern bzw. daraus auslesen. **Challengee:** Verwende nur die EEPROM-Funktionen //EEPROM.write// und //EEPROM.read//, welche jeweils nur ein Byte schreiben/lesen. Nutze [[https://www.arduino.cc/reference/en/language/structure/bitwise-operators/bitshiftleft/|Bit-Schiebe-]] und [[https://www.arduino.cc/reference/en/language/structure/bitwise-operators/bitwiseand/|Bit-Maskierungs]]-Operatoren, um Variablen von längeren Datentypen in mehrere Bytes aufzuteilen bzw. aus meherern Bytes zusammenzusetzen.+    * Zwei Funktionen //writeTimesEEP// und //readTimesEEP//, die alle fünf Bestzeiten im EEPROM speichern bzw. daraus auslesen. **Challenge:** Verwende nur die EEPROM-Funktionen //EEPROM.write// und //EEPROM.read//, welche jeweils nur ein Byte schreiben/lesen. Nutze [[https://www.arduino.cc/reference/en/language/structure/bitwise-operators/bitshiftleft/|Bit-Schiebe-]] und [[https://www.arduino.cc/reference/en/language/structure/bitwise-operators/bitwiseand/|Bit-Maskierungs]]-Operatoren, um Variablen von längeren Datentypen in mehrere Bytes aufzuteilen bzw. aus meherern Bytes zusammenzusetzen.
       * Alternative zu //EEPROM.write// und //EEPROM.read//: Betrachte EEPROM als ein Array, dessen Elemente 1 Byte gross sind: mit EEPROM[2] greifst du auf Adresse 2 zu.       * Alternative zu //EEPROM.write// und //EEPROM.read//: Betrachte EEPROM als ein Array, dessen Elemente 1 Byte gross sind: mit EEPROM[2] greifst du auf Adresse 2 zu.
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung| ++++Lösung|
 <code c++ ChronoMeter03.cpp> <code c++ ChronoMeter03.cpp>
  • talit/electronics/arduno.1708616548.txt.gz
  • Zuletzt geändert: 2024-02-22 15:42
  • von gra