Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .unosim-compatible-commit
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5042bd0398271fa4e12f3e7eeb1003a58e382a57
5ce3564b2b770e59f48d8bc3b97097bf1f2ab894
27 changes: 21 additions & 6 deletions examples/IT01/it01-01-variable-speichern.ino
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,26 @@ void loop() {
*/

/* @unosim-tutor
schemaVersion: 1
topics:
- variables-and-serial
primaryTopic: variables-and-serial
schemaVersion: 2
learningObjectives:
- Die Studierenden sollen erklären können, welche Rolle die Variable im aktuellen Sketch spielt.
- Sie sollen den Zusammenhang zwischen gespeichertem Wert und serieller Ausgabe verstehen.
- "Die Studierenden sollen erklären können, welche Rolle die Variable im aktuellen Sketch spielt."
- "Sie sollen den Zusammenhang zwischen gespeichertem Wert und serieller Ausgabe verstehen."
exclusive: true
focus:
- id: wert-und-zuweisung
title: "Wert und Zuweisung"
objective: "Die Studierenden sollen den Aspekt \"Wert und Zuweisung\" erklären können."
questions:
- kind: recall
text: "Welchen Wert besitzt `anzahlTeile` direkt nach der Deklaration?"
- kind: prediction
text: "Was geschieht mit dem alten Wert von `anzahlTeile`, wenn `anzahlTeile = 5` ausgeführt wird?"
- id: sichtbare-ausgabe
title: "Sichtbare Ausgabe"
objective: "Die Studierenden sollen den Aspekt \"Sichtbare Ausgabe\" erklären können."
questions:
- kind: concept
text: "Warum erscheint jede Ausgabe von `Serial.println` nur einmal?"
- kind: transfer
text: "Welche weitere Zuweisung und Ausgabe würdest du ergänzen, um einen dritten Wert sichtbar zu machen?"
@end-unosim-tutor */
24 changes: 24 additions & 0 deletions examples/IT01/it01-02-konstante.ino
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,27 @@ void loop() {
* 2. Warum meldet der Compiler beim zweiten Experiment einen Fehler?
* 3. Warum werden Konstantennamen hier grossgeschrieben?
*/

/* @unosim-tutor
schemaVersion: 2
learningObjectives:
- "Einen Wert mit const als Konstante deklarieren."
exclusive: true
focus:
- id: konstante-oder-variable
title: "Konstante oder Variable"
objective: "Die Studierenden sollen den Aspekt \"Konstante oder Variable\" erklären können."
questions:
- kind: concept
text: "Wodurch unterscheidet sich `MAXIMALE_ANZAHL` von einer gewöhnlichen Variablen?"
- kind: prediction
text: "Was würde der Compiler melden, wenn man später versucht, `MAXIMALE_ANZAHL` einen neuen Wert zuzuweisen, und warum?"
- id: const-und-namen
title: "const und Namenswahl"
objective: "Die Studierenden sollen den Aspekt \"const und Namenswahl\" erklären können."
questions:
- kind: concept
text: "Welche Aufgabe hat das Schlüsselwort `const` in der Deklaration?"
- kind: concept
text: "Warum ist der Name `MAXIMALE_ANZAHL` hier großgeschrieben?"
@end-unosim-tutor */
24 changes: 24 additions & 0 deletions examples/IT02/it02-01-arithmetische-operatoren.ino
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,27 @@ void loop() {
* 2. Welche Bedeutung hat das Ergebnis von 13 % 5?
* 3. Bei welchem Experiment darf der Operator % nicht verwendet werden?
*/

/* @unosim-tutor
schemaVersion: 2
learningObjectives:
- "Die Operatoren +, -, *, / und % anwenden."
exclusive: true
focus:
- id: ganzzahldivision
title: "Ganzzahldivision"
objective: "Die Studierenden sollen den Aspekt \"Ganzzahldivision\" erklären können."
questions:
- kind: concept
text: "Warum liefert `a / b` bei Variablen vom Typ `int` ein ganzzahliges Ergebnis?"
- kind: prediction
text: "Welches Ergebnis erwartest du für `a / b`, wenn `a` den Wert 13 und `b` den Wert 5 hat?"
- id: modulo
title: "Rest einer Division"
objective: "Die Studierenden sollen den Aspekt \"Rest einer Division\" erklären können."
questions:
- kind: concept
text: "Welche Bedeutung hat das Ergebnis von `a % b`?"
- kind: application
text: "Wofür könnte man den Rest einer Division in einem Programm nutzen?"
@end-unosim-tutor */
24 changes: 24 additions & 0 deletions examples/IT02/it02-02-vergleichsoperatoren.ino
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,27 @@ void loop() {
* 2. Was ist der Unterschied zwischen = und ==?
* 3. Welchen Datentyp hat das Ergebnis eines Vergleichs?
*/

/* @unosim-tutor
schemaVersion: 2
learningObjectives:
- "Vergleichsoperatoren anwenden und ihr boolesches Ergebnis beobachten."
exclusive: true
focus:
- id: vergleichsergebnis
title: "Ergebnis eines Vergleichs"
objective: "Die Studierenden sollen den Aspekt \"Ergebnis eines Vergleichs\" erklären können."
questions:
- kind: prediction
text: "Welche der Vergleiche `a == b`, `a != b`, `a < b` und `a >= b` sind mit den aktuellen Werten wahr?"
- kind: recall
text: "Wie werden ein wahres und ein falsches Ergebnis in der Ausgabe dargestellt?"
- id: zuweisung-oder-vergleich
title: "Zuweisung oder Vergleich"
objective: "Die Studierenden sollen den Aspekt \"Zuweisung oder Vergleich\" erklären können."
questions:
- kind: concept
text: "Was ist der Unterschied zwischen `=` und `==`?"
- kind: concept
text: "Welchen Datentyp hat das Ergebnis eines Vergleichs?"
@end-unosim-tutor */
24 changes: 24 additions & 0 deletions examples/IT02/it02-03-boolesche-operatoren.ino
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,27 @@ void loop() {
* 2. Wann ergibt eine ODER-Verknuepfung false?
* 3. Welche Wirkung hat der Operator ! auf einen Wahrheitswert?
*/

/* @unosim-tutor
schemaVersion: 2
learningObjectives:
- "Die Operatoren &&, || und ! auf Wahrheitswerte anwenden."
exclusive: true
focus:
- id: verknuepfungen
title: "UND und ODER"
objective: "Die Studierenden sollen den Aspekt \"UND und ODER\" erklären können."
questions:
- kind: concept
text: "Wann ergibt `schalter1 && schalter2` den Wert `true`?"
- kind: prediction
text: "Welche Ausgabe erwartest du für `schalter1 || schalter2` mit den aktuellen Werten?"
- id: negation
title: "Negation"
objective: "Die Studierenden sollen den Aspekt \"Negation\" erklären können."
questions:
- kind: concept
text: "Welche Wirkung hat der Operator `!` auf `schalter1`?"
- kind: transfer
text: "Wie würdest du ausdrücken, dass genau einer der beiden Schalter `true` ist?"
@end-unosim-tutor */
24 changes: 24 additions & 0 deletions examples/IT02/it02-04-bitoperatoren.ino
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,27 @@ void loop() {
* 2. Welchen Dezimalwert hat MASKE_BIT_2?
* 3. Worin unterscheiden sich & und &&?
*/

/* @unosim-tutor
schemaVersion: 2
learningObjectives:
- "Eine Bitmaske mit dem bitweisen UND-Operator anwenden."
exclusive: true
focus:
- id: bitmaske
title: "Bitmaske"
objective: "Die Studierenden sollen den Aspekt \"Bitmaske\" erklären können."
questions:
- kind: concept
text: "Warum bleibt bei `wert & MASKE_BIT_2` nur ein gesetztes Bit erhalten?"
- kind: prediction
text: "Welches Ergebnis erwartest du für `wert & MASKE_BIT_2`, wenn Bit 2 in `wert` nicht gesetzt wäre?"
- id: bitweise-oder-logisch
title: "Bitweise oder logisch"
objective: "Die Studierenden sollen den Aspekt \"Bitweise oder logisch\" erklären können."
questions:
- kind: concept
text: "Welche Rolle spielt `BIN` in `Serial.println(wert, BIN)`?"
- kind: concept
text: "Worin unterscheidet sich der bitweise Operator `&` vom logischen UND mit zwei Und-Zeichen?"
@end-unosim-tutor */
24 changes: 24 additions & 0 deletions examples/IT03/it03-01-serielle-ausgabe.ino
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,27 @@ void loop() {
* 2. Warum muss Serial.begin() vor der ersten Ausgabe stehen?
* 3. Wie oft werden die Texte ausgegeben und warum?
*/

/* @unosim-tutor
schemaVersion: 2
learningObjectives:
- "Die serielle Verbindung starten und Text mit print() und println() ausgeben."
exclusive: true
focus:
- id: print-und-println
title: "print und println"
objective: "Die Studierenden sollen den Aspekt \"print und println\" erklären können."
questions:
- kind: concept
text: "Was unterscheidet `Serial.print` von `Serial.println`?"
- kind: application
text: "Wie viele Zeilen erscheinen im Monitor, und woran erkennst du das im Code?"
- id: initialisierung
title: "Serielle Verbindung starten"
objective: "Die Studierenden sollen den Aspekt \"Serielle Verbindung starten\" erklären können."
questions:
- kind: concept
text: "Warum muss `Serial.begin` vor der ersten Ausgabe stehen?"
- kind: prediction
text: "Wie oft werden die Texte ausgegeben, und warum nicht fortlaufend?"
@end-unosim-tutor */
24 changes: 24 additions & 0 deletions examples/IT03/it03-02-serielles-zeichen-einlesen.ino
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,27 @@ void loop() {
* 2. Was liefert Serial.read(), wenn kein Zeichen vorhanden ist?
* 3. Warum erscheinen bei einer int-Variablen Zahlen statt Zeichen?
*/

/* @unosim-tutor
schemaVersion: 2
learningObjectives:
- "Mit Serial.available() und Serial.read() ein einzelnes Zeichen empfangen."
exclusive: true
focus:
- id: zeichen-empfangen
title: "Zeichen empfangen"
objective: "Die Studierenden sollen den Aspekt \"Zeichen empfangen\" erklären können."
questions:
- kind: concept
text: "Warum wird `Serial.available` vor `Serial.read` geprüft?"
- kind: prediction
text: "Was geschieht in `loop`, solange kein Zeichen gesendet wurde?"
- id: datentyp-char
title: "Datentyp char"
objective: "Die Studierenden sollen den Aspekt \"Datentyp char\" erklären können."
questions:
- kind: concept
text: "Welche Rolle spielt der Datentyp `char` für die Variable `zeichen`?"
- kind: prediction
text: "Was würde sich in der Ausgabe ändern, wenn `zeichen` den Typ `int` hätte?"
@end-unosim-tutor */
24 changes: 21 additions & 3 deletions examples/IT03/it03-03-digitaler-ausgang.ino
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,26 @@ void loop() {
*/

/* @unosim-tutor
schemaVersion: 1
schemaVersion: 2
learningObjectives:
- Die Studierenden sollen erklären können, wie ein digitaler Ausgang im aktuellen Sketch gesetzt wird.
- Sie sollen den Zusammenhang zwischen Ausgangszustand und beobachtbarer Wirkung beschreiben können.
- "Die Studierenden sollen erklären können, wie ein digitaler Ausgang im aktuellen Sketch gesetzt wird."
- "Sie sollen den Zusammenhang zwischen Ausgangszustand und beobachtbarer Wirkung beschreiben können."
exclusive: true
focus:
- id: pin-konfigurieren
title: "Pin konfigurieren"
objective: "Die Studierenden sollen den Aspekt \"Pin konfigurieren\" erklären können."
questions:
- kind: concept
text: "Welche Aufgabe hat `pinMode(PIN_LED, OUTPUT)`?"
- kind: concept
text: "Welche elektrische Bedeutung hat `HIGH` an diesem Pin?"
- id: programmstruktur
title: "Programmstruktur"
objective: "Die Studierenden sollen den Aspekt \"Programmstruktur\" erklären können."
questions:
- kind: concept
text: "Warum reicht für dieses Beispiel die Funktion `setup` aus?"
- kind: transfer
text: "Wie würdest du die LED wieder ausschalten?"
@end-unosim-tutor */
24 changes: 24 additions & 0 deletions examples/IT03/it03-04-digitaler-eingang.ino
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,27 @@ void loop() {
* 2. Warum liefert ein gedrueckter Taster bei INPUT_PULLUP normalerweise LOW?
* 3. Welchen Zweck hat ein Pullup-Widerstand?
*/

/* @unosim-tutor
schemaVersion: 2
learningObjectives:
- "Einen Eingang mit internem Pullup-Widerstand konfigurieren und lesen."
exclusive: true
focus:
- id: eingang-lesen
title: "Eingang lesen"
objective: "Die Studierenden sollen den Aspekt \"Eingang lesen\" erklären können."
questions:
- kind: recall
text: "Welche Werte kann `digitalRead` liefern?"
- kind: concept
text: "Welchen Zweck hat `INPUT_PULLUP` für den Pin `PIN_TASTER`?"
- id: taster-logik
title: "Taster-Logik"
objective: "Die Studierenden sollen den Aspekt \"Taster-Logik\" erklären können."
questions:
- kind: prediction
text: "Welcher Wert wird ausgegeben, solange der Taster gedrückt ist, und warum?"
- kind: concept
text: "Warum steht in `loop` der Aufruf `delay(500)`?"
@end-unosim-tutor */
27 changes: 21 additions & 6 deletions examples/IT03/it03-05-millis.ino
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,26 @@ void loop() {
*/

/* @unosim-tutor
schemaVersion: 1
topics:
- long-values
primaryTopic: long-values
schemaVersion: 2
learningObjectives:
- Die Studierenden sollen erklären können, warum millis() einen Zeitwert liefert.
- Sie sollen den Zeitwert als Grundlage für einen wiederkehrenden Ablauf einordnen können.
- "Die Studierenden sollen erklären können, warum millis() einen Zeitwert liefert."
- "Sie sollen den Zeitwert als Grundlage für einen wiederkehrenden Ablauf einordnen können."
exclusive: true
focus:
- id: zeitwert
title: "Der Zeitwert"
objective: "Die Studierenden sollen den Aspekt \"Der Zeitwert\" erklären können."
questions:
- kind: concept
text: "In welcher Einheit liefert `millis()` die Zeit?"
- kind: prediction
text: "Wie verändert sich der ausgegebene Wert von einem Schleifendurchlauf zum nächsten?"
- id: datentyp
title: "Der Datentyp"
objective: "Die Studierenden sollen den Aspekt \"Der Datentyp\" erklären können."
questions:
- kind: concept
text: "Warum eignet sich `unsigned long` für `zeitSeitStart`?"
- kind: concept
text: "Wird der Zeitwert durch einen erneuten Durchlauf von `loop` zurückgesetzt?"
@end-unosim-tutor */
24 changes: 24 additions & 0 deletions examples/IT04/it04-01-analoger-eingang.ino
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,27 @@ void loop() {
* 2. Warum sind fuer diesen Bereich 10 Bit erforderlich?
* 3. Muss ein analoger Eingang mit pinMode() eingerichtet werden?
*/

/* @unosim-tutor
schemaVersion: 2
learningObjectives:
- "Einen Messwert mit analogRead() erfassen."
exclusive: true
focus:
- id: wertebereich
title: "Wertebereich"
objective: "Die Studierenden sollen den Aspekt \"Wertebereich\" erklären können."
questions:
- kind: recall
text: "Welchen Wertebereich liefert `analogRead` beim Arduino Uno?"
- kind: concept
text: "Warum sind für diesen Bereich 10 Bit erforderlich?"
- id: pin-und-messwert
title: "Pin und Messwert"
objective: "Die Studierenden sollen den Aspekt \"Pin und Messwert\" erklären können."
questions:
- kind: concept
text: "Muss ein analoger Eingang wie `PIN_SENSOR` mit pinMode() eingerichtet werden?"
- kind: application
text: "Welchen Wert erwartest du für `messwert`, wenn A0 auf halber Referenzspannung liegt?"
@end-unosim-tutor */
24 changes: 24 additions & 0 deletions examples/IT04/it04-02-messwert-in-volt.ino
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,27 @@ void loop() {
* 2. Warum wird fuer spannung der Datentyp float verwendet?
* 3. Welche Bedeutung hat die Referenzspannung in der Rechnung?
*/

/* @unosim-tutor
schemaVersion: 2
learningObjectives:
- "Den digitalisierten Messwert eines Analogeingangs in eine Spannung umrechnen."
exclusive: true
focus:
- id: umrechnung
title: "Umrechnung in Volt"
objective: "Die Studierenden sollen den Aspekt \"Umrechnung in Volt\" erklären können."
questions:
- kind: prediction
text: "Welche Spannung gehört ungefähr zum Messwert 512?"
- kind: concept
text: "Welche Bedeutung hat `REFERENZSPANNUNG` in der Rechnung?"
- id: datentyp-float
title: "Gleitkommazahlen"
objective: "Die Studierenden sollen den Aspekt \"Gleitkommazahlen\" erklären können."
questions:
- kind: concept
text: "Warum wird für `spannung` der Datentyp `float` verwendet?"
- kind: prediction
text: "Was ändert sich im Ergebnis, wenn bei `1024.0` der Dezimalpunkt entfällt?"
@end-unosim-tutor */
Loading
Loading