meta data for this page
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
guide:itt11:microcontrollerprogrammierung_mit_tinkercad [2024/01/02 16:25] juergenhaasguide:itt11:microcontrollerprogrammierung_mit_tinkercad [2024/12/15 17:27] (aktuell) juergenhaas
Zeile 31: Zeile 31:
  
 Im Anhang des Dokuments sind zu einigen Aufgaben Codebeispiele enthalten. Diese findest du auch weiter unten auf dieser Seite. Versuche nach und nach alle Aufgaben zu lösen. Im Anhang des Dokuments sind zu einigen Aufgaben Codebeispiele enthalten. Diese findest du auch weiter unten auf dieser Seite. Versuche nach und nach alle Aufgaben zu lösen.
 +
 +Falls dir dieser Einstieg zu schwierig fällt, kannst du zuvor auch die unten verlinkten //Anfängerübungen// durcharbeiten. Beachte dabei, dass diese zusätzliche Zeit in Anspruch nehmen und du wahrscheinlich auch Zeit außerhalb der Unterrichtsstunden aufwenden musst, um am Ball zu bleiben.
  
 ==== Hinweise und Hilfsmittel ==== ==== Hinweise und Hilfsmittel ====
Zeile 36: Zeile 38:
 Die Programmierung des Arduino-Microcontrollers und der ESP-Microcontroller erfolgt in der Sprache C++, auch wenn die Dateiendung ''.ino'' lautet. Für viele Aufgaben gibt es spezifische Funktionen, welche in der Arduino-Referenz dokumentiert sind. Die Programmierung des Arduino-Microcontrollers und der ESP-Microcontroller erfolgt in der Sprache C++, auch wenn die Dateiendung ''.ino'' lautet. Für viele Aufgaben gibt es spezifische Funktionen, welche in der Arduino-Referenz dokumentiert sind.
   * Die {{ https://www.arduino.cc/reference/en/ | Arduino-Referenz }} sollte zum Nachschlagen stets griffbereit sein.   * Die {{ https://www.arduino.cc/reference/en/ | Arduino-Referenz }} sollte zum Nachschlagen stets griffbereit sein.
-  * Die Programmierkenntnisse, die du in deiner bisherigen Ausbildungszeit erwerben konntest, sollten eigentlich ausreichend sein, um einfachen C++-Code unter Verwendung von Vorlagen erstellen oder vorhandenen Code nach deinen Bedürfnissen anpassen zu können. Falls du dennoch solidere Grundlagen haben möchtest, kannst du dieses {{ https://www.arduino.cc/reference/en/ | interaktive C++-Tutorial }} versuchen. +  * Die Programmierkenntnisse, die du in deiner bisherigen Ausbildungszeit erwerben konntest, sollten eigentlich ausreichend sein, um einfachen C++-Code unter Verwendung von Vorlagen erstellen oder vorhandenen Code nach deinen Bedürfnissen anpassen zu können. Falls du dennoch solidere Grundlagen haben möchtest, kannst du dieses {{ https://www.learn-cpp.org/ | interaktive C++-Tutorial }} versuchen.
- +
- +
- +
-===== Codebeispiele für die Tinkercad-Quickstart-Aufgaben ===== +
- +
-==== Codebeispiel zu 3. ==== +
- +
-<file cpp codebepspiel_3.cpp> +
-#define LED_EXTERN 2 +
- +
-void setup() +
-+
- pinMode(LED_BUILTIN, OUTPUT); +
- pinMode(LED_EXTERN, OUTPUT); +
- digitalWrite(LED_EXTERN, LOW); +
-+
- +
-void loop() +
-+
- digitalWrite(LED_BUILTIN, HIGH); +
- digitalWrite(LED_EXTERN, HIGH); +
- delay(1000); // Wait for 1000 millisecond(s) +
- digitalWrite(LED_BUILTIN, LOW); +
- digitalWrite(LED_EXTERN, LOW); +
- delay(1000); // Wait for 1000 millisecond(s) +
-+
-</file> +
- +
- +
-==== Codebeispiel zu 4. ===== +
- +
-<file cpp codebeispiel_4.cpp> +
-void setup() +
-+
- pinMode(LED_BUILTIN, OUTPUT); +
- // Serielle Ausgabe mit 115200 Baud starten +
- Serial.begin(115200); +
-+
- +
-void loop() +
-+
- digitalWrite(LED_BUILTIN, HIGH); +
- Serial.println("LED ist an"); +
- delay(1000); // Wait for 1000 millisecond(s) +
- digitalWrite(LED_BUILTIN, LOW); +
- Serial.println("LED ist aus"); +
- delay(1000); // Wait for 1000 millisecond(s) +
-+
-</file> +
- +
-==== Codebeispiel zu 6. ==== +
- +
-<file cpp codebeispiel_6.cpp> +
-#define POTIPIN A0 +
- +
-void setup() +
-+
- Serial.begin(115200); +
-+
- +
-void loop() +
-+
- Serial.println(analogRead(POTIPIN)); +
- delay(100); +
-+
-</file> +
- +
-==== Codebeispiel zu 9. ==== +
- +
-<file cpp codebeispiel_9.cpp> +
-#define PIN_TRIGGER 13 +
-#define PIN_ECHO 12 +
-#define SENSOR_MAX_RANGE 300 +
-unsigned long time_of_flight; +
-unsigned int distance; +
- +
-void setup() +
-+
- Serial.begin(115200); +
- pinMode(PIN_TRIGGER, OUTPUT); +
- pinMode(PIN_ECHO, INPUT); +
-+
- +
-void loop() +
-+
- // 345m/s, Hin- und Rückweg, Messung in Mikrosekunden, 0,0345 cm/us +
- float factor = 0.0345 / 2; +
- unsigned int timeout = (SENSOR_MAX_RANGE / factor) * 1.1; +
- digitalWrite(PIN_TRIGGER, LOW); +
- delayMicroseconds(3); +
- digitalWrite(PIN_TRIGGER, HIGH); +
- delayMicroseconds(10); +
- digitalWrite(PIN_TRIGGER, LOW); +
- time_of_flight = pulseIn(PIN_ECHO, HIGH, timeout); +
- distance = time_of_flight * factor; +
- // Ausgeben der Entfernung, sofern diese in einem sinnvollen Bereich +
- // (positiv und unter der Messgrenze des Sensors) liegt, oder eine +
- // Fehlermeldung ausgeben +
- delay(1000); +
-+
-</file> +
- +
-==== Codebeispiel zu 10. ==== +
- +
-<file cpp codebeispiel_10.cpp> +
-#define SERVO 3 +
-#define SERVO_UP 1 +
-#define SERVO_DOWN 2 +
-static int servoPos = 0; +
-static int servoDir = SERVO_UP; +
- +
-void setup() +
-+
- pinMode(SERVO, OUTPUT); +
- Serial.begin(115200); +
- // Probelauf +
- analogWrite(SERVO, 0); +
- delay(500); +
- analogWrite(SERVO, 127); +
- delay(500); +
- analogWrite(SERVO, 255); +
- Serial.println("Setup abgeschlossen."); +
-+
- +
-void loop() +
-+
- // drehen und ausgeben +
-+
-</file> +
- +
-==== Codebeispiel zu 11. ==== +
- +
-<file cpp codebeispiel_11.cpp> +
-#include <LiquidCrystal.h> +
-// Erstellen eines LCD unter Angabe der verwendeten Pins +
-LiquidCrystal lcd(12, 11, 5, 4, 3, 2); +
- +
-void setup() +
-+
- lcd.begin(16,2); +
- pinMode(A0, INPUT); +
-+
- +
-void loop() +
-+
- lcd.clear(); +
- lcd.setCursor(0, 0); +
- lcd.print("BS Lichtenfels"); +
- lcd.setCursor(0, 1); +
- lcd.print("Messwert: "); +
- delay(100); +
-+
-</file> +
- +
-==== Codebeispiel zu 12. ==== +
- +
-<file cpp codebeispiel_12.cpp> +
-#include <Adafruit_NeoPixel.h>+
  
-#define NEO_PIXEL 2  // Pin für NeoPixel-Daten 
-#define NPIXELS 2  // Anzahl der NeoPixel 
  
-Adafruit_NeoPixel px Adafruit_NeoPixel(NPIXELS, NEO_PIXEL, NEO_GRB + NEO_KHZ800);+===== Code-Beispiele für die Tinkercad-Quickstart-Aufgaben =====
  
-void setup() +Code-Beispiele sind im Anhang des PDF-Dokuments {{ :guide:itt11:quickstart_tinkercad_und_arduino_v1.1_-_schuelerversion.pdf |Quickstart Tinkercad und Arduino}} zu findenUm sie einfacher kopieren zu können, gibt es aber auch eine [[uebung:itt11:microcontrollerprogrammierung_mit_tinkercad|Wiki-Seite mit den Beispielen]].
-{ +
-  px.begin(); +
-  px.clear(); +
-  px.setBrightness(255); +
-  px.show(); +
-  Serial.begin(9600); +
-  Serial.println("Setup"); +
-}+
  
-void loop() 
-{ 
-  Serial.println("One");  
-  px.setPixelColor(0, px.Color(255, 0, 0)); 
-  px.setPixelColor(1, px.Color(255, 255, 0)); 
-  px.show(); 
-  delay(2000); 
-   
-  Serial.println("Two"); 
-  px.setPixelColor(0, px.Color(0, 255, 0)); 
-  px.setPixelColor(1, px.Color(0, 255, 255)); 
-  px.show(); 
-  delay(2000); 
-   
-  Serial.println("Three"); 
-  px.setPixelColor(0, px.Color(0, 0, 255)); 
-  px.setPixelColor(1, px.Color(255, 0, 255)); 
-  px.show(); 
-  delay(2000); 
-} 
-</file> 
  
  
 ===== Ergänzendes und alternatives Material ===== ===== Ergänzendes und alternatives Material =====
-  * YouTube: 6-teilige Videoreihe [[https://www.youtube.com/watch?v=yyG0koj9nNY&list=PLV6cmKvnKRs5geApVORPW79U6s3wpa0Ht|Learn Arduino with Tinkercad Circuits]]+  * YouTube: 6-teilige Videoreihe [[https://www.youtube.com/watch?v=MojSo7OtF9w&list=PLV6cmKvnKRs5geApVORPW79U6s3wpa0Ht|Learn Arduino with Tinkercad Circuits]]
   * {{ :guide:itt11:grundlagen_mikrocontroller_v2.pdf |PDF-Dokument}} zu Microcontrollern im Allgemeinen ohne speziellen Bezug zu Arduino oder ESP8266   * {{ :guide:itt11:grundlagen_mikrocontroller_v2.pdf |PDF-Dokument}} zu Microcontrollern im Allgemeinen ohne speziellen Bezug zu Arduino oder ESP8266
-  * {{ :guide:itt11:anfaengeruebungen_tinkercad.zip |Anfängerübungen zu Tinkercad}} für alle, denen der Quickstart als Einstieg zu anspruchsvoll ist+  * [[uebung:itt11:anfaengeruebungen_tinkercad| Anfängerübungen zu Tinkercad]] für alle, denen der Quickstart als Einstieg zu anspruchsvoll ist