meta data for this page
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
guide:itt11:microcontrollerprogrammierung_mit_tinkercad [2024/01/02 16:25] – juergenhaas | guide: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 // | ||
==== 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 '' | Die Programmierung des Arduino-Microcontrollers und der ESP-Microcontroller erfolgt in der Sprache C++, auch wenn die Dateiendung '' | ||
* Die {{ https:// | * Die {{ https:// | ||
- | * Die Programmierkenntnisse, | + | * Die Programmierkenntnisse, |
- | + | ||
- | + | ||
- | + | ||
- | ===== Codebeispiele für die Tinkercad-Quickstart-Aufgaben ===== | + | |
- | + | ||
- | ==== Codebeispiel zu 3. ==== | + | |
- | + | ||
- | <file cpp codebepspiel_3.cpp> | + | |
- | #define LED_EXTERN 2 | + | |
- | + | ||
- | void setup() | + | |
- | { | + | |
- | pinMode(LED_BUILTIN, | + | |
- | pinMode(LED_EXTERN, | + | |
- | digitalWrite(LED_EXTERN, | + | |
- | } | + | |
- | + | ||
- | void loop() | + | |
- | { | + | |
- | digitalWrite(LED_BUILTIN, | + | |
- | digitalWrite(LED_EXTERN, | + | |
- | delay(1000); | + | |
- | digitalWrite(LED_BUILTIN, | + | |
- | digitalWrite(LED_EXTERN, | + | |
- | delay(1000); | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | ==== Codebeispiel zu 4. ===== | + | |
- | + | ||
- | <file cpp codebeispiel_4.cpp> | + | |
- | void setup() | + | |
- | { | + | |
- | pinMode(LED_BUILTIN, | + | |
- | // Serielle Ausgabe mit 115200 Baud starten | + | |
- | Serial.begin(115200); | + | |
- | } | + | |
- | + | ||
- | void loop() | + | |
- | { | + | |
- | digitalWrite(LED_BUILTIN, | + | |
- | Serial.println(" | + | |
- | delay(1000); | + | |
- | digitalWrite(LED_BUILTIN, | + | |
- | Serial.println(" | + | |
- | delay(1000); | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | ==== Codebeispiel zu 6. ==== | + | |
- | + | ||
- | <file cpp codebeispiel_6.cpp> | + | |
- | #define POTIPIN A0 | + | |
- | + | ||
- | void setup() | + | |
- | { | + | |
- | Serial.begin(115200); | + | |
- | } | + | |
- | + | ||
- | void loop() | + | |
- | { | + | |
- | Serial.println(analogRead(POTIPIN)); | + | |
- | delay(100); | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | ==== 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, | + | |
- | pinMode(PIN_ECHO, | + | |
- | } | + | |
- | + | ||
- | void loop() | + | |
- | { | + | |
- | // 345m/s, Hin- und Rückweg, Messung in Mikrosekunden, | + | |
- | float factor = 0.0345 / 2; | + | |
- | unsigned int timeout = (SENSOR_MAX_RANGE / factor) * 1.1; | + | |
- | digitalWrite(PIN_TRIGGER, | + | |
- | delayMicroseconds(3); | + | |
- | digitalWrite(PIN_TRIGGER, | + | |
- | delayMicroseconds(10); | + | |
- | digitalWrite(PIN_TRIGGER, | + | |
- | time_of_flight = pulseIn(PIN_ECHO, | + | |
- | 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); | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | ==== 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, | + | |
- | Serial.begin(115200); | + | |
- | // Probelauf | + | |
- | analogWrite(SERVO, | + | |
- | delay(500); | + | |
- | analogWrite(SERVO, | + | |
- | delay(500); | + | |
- | analogWrite(SERVO, | + | |
- | Serial.println(" | + | |
- | } | + | |
- | + | ||
- | void loop() | + | |
- | { | + | |
- | // drehen und ausgeben | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | ==== Codebeispiel zu 11. ==== | + | |
- | + | ||
- | <file cpp codebeispiel_11.cpp> | + | |
- | #include < | + | |
- | // Erstellen eines LCD unter Angabe der verwendeten Pins | + | |
- | LiquidCrystal lcd(12, 11, 5, 4, 3, 2); | + | |
- | + | ||
- | void setup() | + | |
- | { | + | |
- | lcd.begin(16, | + | |
- | pinMode(A0, | + | |
- | } | + | |
- | + | ||
- | void loop() | + | |
- | { | + | |
- | lcd.clear(); | + | |
- | lcd.setCursor(0, | + | |
- | lcd.print(" | + | |
- | lcd.setCursor(0, | + | |
- | lcd.print(" | + | |
- | delay(100); | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | ==== Codebeispiel zu 12. ==== | + | |
- | + | ||
- | <file cpp codebeispiel_12.cpp> | + | |
- | #include < | + | |
- | #define NEO_PIXEL 2 // Pin für NeoPixel-Daten | ||
- | #define NPIXELS 2 // Anzahl der NeoPixel | ||
- | Adafruit_NeoPixel px = Adafruit_NeoPixel(NPIXELS, | + | ===== Code-Beispiele für die Tinkercad-Quickstart-Aufgaben ===== |
- | void setup() | + | Code-Beispiele sind im Anhang des PDF-Dokuments |
- | { | + | |
- | px.begin(); | + | |
- | px.clear(); | + | |
- | px.setBrightness(255); | + | |
- | px.show(); | + | |
- | Serial.begin(9600); | + | |
- | Serial.println(" | + | |
- | } | + | |
- | void loop() | ||
- | { | ||
- | Serial.println(" | ||
- | px.setPixelColor(0, | ||
- | px.setPixelColor(1, | ||
- | px.show(); | ||
- | delay(2000); | ||
- | | ||
- | Serial.println(" | ||
- | px.setPixelColor(0, | ||
- | px.setPixelColor(1, | ||
- | px.show(); | ||
- | delay(2000); | ||
- | | ||
- | Serial.println(" | ||
- | px.setPixelColor(0, | ||
- | px.setPixelColor(1, | ||
- | px.show(); | ||
- | delay(2000); | ||
- | } | ||
- | </ | ||
===== Ergänzendes und alternatives Material ===== | ===== Ergänzendes und alternatives Material ===== | ||
- | * YouTube: 6-teilige Videoreihe [[https:// | + | * YouTube: 6-teilige Videoreihe [[https:// |
* {{ : | * {{ : | ||
- | * {{ :guide: | + | * [[uebung: |