forked from BKI/simonsays_2425
Initial commit
This commit is contained in:
commit
a939e6c71b
6 changed files with 469 additions and 0 deletions
BIN
Bilder/BildShield.jpeg
Normal file
BIN
Bilder/BildShield.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 88 KiB |
271
README.md
Normal file
271
README.md
Normal file
|
@ -0,0 +1,271 @@
|
|||
# simonsays_esp32
|
||||
|
||||

|
||||
|
||||
## Inhalt
|
||||
|
||||
<!-- toc -->
|
||||
|
||||
- [git installation](#git-installation)
|
||||
- [SSH-Zugang](#ssh-zugang)
|
||||
- [Nutzername](#nutzername)
|
||||
- [Sonstige Einstellungen/Tipps](sonstige-einstellungen/tipps)
|
||||
- [Mac-User](mac-user)
|
||||
- [Win-User](win-user)
|
||||
- [Linux-User](linux-user)
|
||||
- [Git Begriffe](#git-begriffe)
|
||||
- [Zusammenarbeiten](#zusammenarbeiten)
|
||||
- [Beschreibung](#beschreibung)
|
||||
- [Arbeitsauftrag](#arbeitsauftrag)
|
||||
- [Durchführung](#durchführung)
|
||||
|
||||
|
||||
<!-- tocstop -->
|
||||
|
||||
---
|
||||
|
||||
### git installation
|
||||
Link zur offiziellen Internetseite zu git:
|
||||
|
||||
[Installationsanleitung](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
|
||||
|
||||
---
|
||||
|
||||
### SSH-Zugang
|
||||
Um mit git über SSH zu arbeiten muss ein gültiger SSH-Schlüssel auf dem PC und auf dem Server vorhanden sein.
|
||||
|
||||
Der Schlüssel/Zertifikat kann über die Konsole/Terminal mit dem Befehl `ssh-keygen` erzeugt werden. Ein typischer Schlüssel wäre „ed25519“. Ein Passwort muss nicht zwingend angegeben werden. Die Datei heißt Standardmäßig z.B. „id_ed25519.pub“ und befindet sich im Home-Verzeichnis unter `.SSH`. Diese Datei kann mit einem Texteditor geöffnet und der Schlüssel kopiert werden. Alternativ kann über das Programm `git gui` der Schlüssel erzeugt, angezeigt und kopiert werden.
|
||||
|
||||
```
|
||||
ssh-keygen -f ed25519
|
||||
```
|
||||
|
||||
Der kopierte Schlüssel muss anschliessend auf der [git-Internetseite](git.steinbeis.schule) in den Benutzer Einstellungen unter SSH- / GPG-Schlüssel hinterlegt werden.
|
||||
|
||||
Mit folgendem Befehl kann die Verbindung zum Server der Schule getestet werden:
|
||||
```
|
||||
ssh git@git.steinbeis.schule -p 2222
|
||||
```
|
||||
|
||||
>[!NOTE]
|
||||
>Damit der PC die Verbindung via SSH zum git-Server speichert muss dieses Bestätigt werden.
|
||||
>Fingerprint -> `yes` eintippen und bestätigen
|
||||
|
||||
Anschließend kann mit der Konsole/Terminal oder einem git Programm das Repository geklont, Änderungen abgefragt und Änderungen hochgeladen werden.
|
||||
|
||||
> [!NOTE]
|
||||
> in der Schule werden die SSH-Schlüssel im Home-Verzeichnis gespeichert. Das bedeutet dass nur ein Schlüssel für alle PCs in der Schule erstellt werden muss.\
|
||||
> ??? (Ausnamhe Laptops C051/C055, lokales Home) ???
|
||||
|
||||
---
|
||||
|
||||
### Nutzername
|
||||
|
||||
Damit der PC einen Namen und Mail-Adresse für git festlegt müssen diese global angelegt werden: Festlegen eines Git-Benutzernamens für alle Repositorys auf deinem Computer. [Benutzername hinzufügen](https://docs.github.com/de/get-started/getting-started-with-git/setting-your-username-in-git)
|
||||
|
||||
Öffne das Terminal und lege einen Git-Benutzernamen fest:
|
||||
|
||||
```
|
||||
git config –global user.name „Mona Lisa“
|
||||
git config –global uer.email „mona.lisa@steinbeis.schule“
|
||||
```
|
||||
|
||||
oder öffne das Programm `git gui` über das Terminal und lege dort ind den globalen Einstellungen den Namen und die e-Mail Adresse fest.
|
||||
|
||||
> [!Tip]
|
||||
> Es kann auch ein Benutzer lokal in einem einzelnen Repository geändert werden werden.
|
||||
|
||||
---
|
||||
|
||||
### Sonstige Einstellungen/Tipps
|
||||
|
||||
## alte git Versionen
|
||||
Wenn eine ältere git Version oder manche Programme verwendet werden, ist der standard Branchname `master`. Dieses muss Aufgrund kompatibilitätsproblemem auf main geändert werden.
|
||||
|
||||
```
|
||||
git config --global init.defaultBranch main
|
||||
|
||||
```
|
||||
Bereits erstellte Repositorys müssen nachträglich angepasdst werden. Entweder über die grafische Benutzeroberfläche oder über die Konsole. Dazu mit `cd` in das passende Repository wechseln und dann
|
||||
```
|
||||
git branch -m master main # Lokal umbenennen
|
||||
git push origin main # Neuen Branch pushen
|
||||
git push origin --delete master # Alten Branch löschen
|
||||
```
|
||||
ausführen. Dabei dürfen keine Änderungen offen sein und sollte bald als möglich durchgeführt werden.
|
||||
|
||||
## Mac-User
|
||||
|
||||
- Für das Installieren von git und git gui ist homebrew notwendig. Da MAC allerdings eine eigene Verwaltung von git führt, ist dieses oftmals nicht auf dem aktuellen Stand/
|
||||
Dies kann verhindert werden:
|
||||
1. installieren homebrew [homebrew Installationanleitung](https://brew.sh/)
|
||||
2. git über homebrew installiert/
|
||||
```
|
||||
brew install git
|
||||
brew install git-gui
|
||||
```
|
||||
3. Abfragen der aktuellen Version /
|
||||
```
|
||||
git --version
|
||||
```
|
||||
4. zurück zum Home-Verzeichnis/
|
||||
```
|
||||
cd ~
|
||||
```
|
||||
5. öfnnen/erstellen der Settingsdatei /
|
||||
```
|
||||
vi .bashr
|
||||
```
|
||||
6. benutzte `i` (um einzufügen)/
|
||||
wenn bereits eine Zeile mit "export PATH......." vorhanden ist, drücke über Zeile Enter. Gib folgendes (zusätzlich) ein:
|
||||
```
|
||||
export PATH=/usr/local/:$PATH
|
||||
```
|
||||
(Achte sehr auf die korrekte Schreibweise, andernfalls kann es zu Störungen des Betriebsystems kommen)
|
||||
7. Beartbeiten beenden, drücke `esc`
|
||||
8. Datei speichern und verlassen
|
||||
```
|
||||
:wq
|
||||
```
|
||||
9. Terminal verlassen und neu starten
|
||||
10. neue Version in neuem Terminal-Fenster abfragen
|
||||
```
|
||||
git --version
|
||||
```
|
||||
- Bei Mac muss git-gui immer über das Terminal geöffnet werden, anschliessend kann ein Repository geöffnet oder geklont werden.
|
||||
|
||||
## Win-User
|
||||
|
||||
- Installation von git über die Konsole:
|
||||
```
|
||||
winget install --id Git.Git -e --source winget
|
||||
```
|
||||
- Wenn unter Windows die Befehle für die Rechte Maustaste installiert worden sind, kann ein Repository mit der rechten Maustaste geöffnet werden. Das Programm git-gui befindet sich nach Installation im Startmenu
|
||||
|
||||
- Unter Windows ist eventuell kein SSH-Client installiert. Dies kann installiert werden über
|
||||
- Einstellungen -> System -> ganz unten, optionale Features -> optionale Feature hinzufügen -> OpenSSH Clinet installieren
|
||||
|
||||
|
||||
## Linux-User
|
||||
|
||||
---
|
||||
|
||||
### Git Begriffe
|
||||
- **Repository**
|
||||
- Ein Repository (Repo) ist ein Projekt innerhalb eines Ordners und umfasst alle Daten und Ordner darin. Das Repository enthält ausserdem Hintergrunddaten wir Einstellungen und Versionshistorie zu dem Projekt.
|
||||
- **Clone** (Klon)
|
||||
- Mit dem Befehl clone kann ein externes Repository auf den lokalen PC heruntergeladen werden. Das lokale Repository enthält auch die Einstellungen zu dem externen Repository.
|
||||
- **Commit** (Kommentar)
|
||||
- Mit einem Commit werden die gemachten Änderungen kommentiert, damit nachvollziehbar ist was und vor allem warum etwas verändert wurde. Ein gutes Commit besteht in der ersten Zeile aus einer kurzen Zusammenfassung, Leerzeile und dann eine Ausführliche Beschreibung.
|
||||
- **Branch** (Zweig)
|
||||
- Ein Branch ist ein separater Entwicklungsstrang innerhalb eines Repositorys. In diesem können Änderungen und Features ausprobiert werden. Ohne den Hauptstrang (**main**) zu beeinflussen. Damit können mehrere Personen an einem Projekt arbeiten.
|
||||
- **Push**
|
||||
- Mit einem Push können die lokalen committeten Änderungen in das Externe Repository auf einem Server geladen werden.
|
||||
- **Fetch**
|
||||
- Mit Fetch werden alle Änderungen des externen Repositorys abgefragt und heruntergeladen.
|
||||
- **Merge**
|
||||
- Mit Merge werden zwei unterschiedliche Branches zusammengefügt. z.B. **main** und **feature**
|
||||
- **Pull**
|
||||
- Pull ist eine Kombination aus Fetch und Merge. Das ist Sinnvoll wenn nur im Hauptbranch gearbeitet wird.
|
||||
- **Fork**
|
||||
- Ein Fork ist eine kopie eines fremden Repositorys auf sein eigenes Benutzerprofil. Das funktioniert nur, wenn das andere Öffentlich zugänglich ist. Bei einem Fork kann man Änderungen erarbeiten ohne dass man Schreibrechte auf dem Original Repository hat. Anschlissend kann man die Änderungen beisteuern (contribute).
|
||||
- **Pull Request**
|
||||
- Mit einem Pull-Request werden die Änderungen vom eigenen Repository zum ursprünglichen Repository gesendet. Anschliessend kann der Besitzer des ursprünglichen Repository entscheiden, ob er die Änderungen in sein Repository übernehmen möchte.
|
||||
- **Release**
|
||||
- Ein Release ist eine Veröffentlichung des aktuellen Projektes. Es beinhaltet, bis auf die Daten von git, alle Anderen. In der Regel wird dafür eine .zip Datei bereitgestellt.
|
||||
- **Tag**
|
||||
- Ein Tag ist eine markierte Referenz auf einen bestimmten Zeitpunkt. Ein Tag wird oft mit einem Release in Verbindung benutzt. Es kann immer zu diesem speziellen Tag zurück gekehrt werden, falls nötig.
|
||||
### Git Dateien
|
||||
- **Hintergrunddateien**
|
||||
- Viele Dateien eines Repositorys sind versteckt und nicht direkt einsehbar. Darunter auch Ordner und Dateien, mit allen Änderungen und commits.
|
||||
- **.gitignore**
|
||||
- .gitignore ist eine wichtige Datei, in dem festgelegt wird, welche Dateien bei einem Pull oder Push Synchronisiert werden. Diese Datei befindet sich im Hauptordner des Repositorys. Typische Einträge sind: .DS_Store, desktop.ini, *.log, ect.
|
||||
- **README.me**
|
||||
- In README.me wird eine Infoseite dargestellt, die alle wichtigen Informationen zu Ihrem Repository enthalten sollte. Dieser gesamte Text ist diese Datei dieses Repositorys.
|
||||
|
||||
---
|
||||
|
||||
### Zusammenarbeiten
|
||||
|
||||
Es gibt unterschiedliche Arten um an einem Projekt zu Arbeiten.
|
||||
|
||||
- Forken:
|
||||
- **Unabhängigkeit:** Forking wird oft bei Open-Source-Projekten verwendet, bei denen externe Beitragende keine direkten Schreibrechte im Hauptrepository haben. Ein Fork erstellt eine persönliche Kopie des Repositorys, in dem man frei arbeiten kann.
|
||||
- **Isolation:** Es ermöglicht Entwicklern, Änderungen unabhängig zu entwickeln und erst dann über Pull Requests zum Hauptprojekt beizutragen, wenn die Änderungen fertig sind.
|
||||
- **Community:** Forking ist ideal, wenn viele unterschiedliche Personen oder Gruppen an einem Projekt arbeiten und jeder seinen eigenen Entwicklungsstrang haben möchte.
|
||||
|
||||
- Branching:
|
||||
- **Zusammenarbeit:** Branching wird in Teams bevorzugt, die eng zusammenarbeiten und gemeinsam an einem zentralen Repository arbeiten. Ein Branch ermöglicht es, neue Features oder Bugfixes parallel zu entwickeln, ohne das Hauptprojekt zu beeinträchtigen.
|
||||
- **Einfaches Management:** Mit Branches können Änderungen direkt ins Hauptrepository integriert werden, was die Verwaltung und Zusammenführung von Änderungen vereinfacht.
|
||||
- **Integrierte Workflows:** Branching unterstützt standardmäßige Workflows wie Feature-Branches, Hotfix-Branches und Release-Branches, was die Entwicklung und Versionierung strukturierter macht.
|
||||
|
||||
- Fazit:
|
||||
- Forken ist ideal für größere, offene Projekte mit vielen externen Beitragenden.
|
||||
- Branching ist besser für enge Teamarbeit und kontinuierliche Integration in einem zentralen Repository.
|
||||
|
||||
---
|
||||
|
||||
### Beschreibung
|
||||
Gedächtnisspiel mit dem ESP32
|
||||
|
||||
Es gibt vier Leuchten mit den Farben Rot, Grün, Gelb und Blau.
|
||||
- Das Spiel beginnt mit einer zufälligen Farbe.
|
||||
- Der Spieler muss dann die entsprechende Farbe über einen Taster bestätigen.
|
||||
- Hat der Spieler die richtige Farbe gedrückt, folg Runde Zwei.
|
||||
- In Runde Zwei kommt dieselbe Farbe aus der vorherigen Runde. Zusätzlich kommt eine neue zufällige Farbe im Anschluss.
|
||||
- Der Spieler muss dann die Farbkombination entsprechend tätigen und eine neue Runde startet.
|
||||
- Das Spiel endet mit Eingabe einer **falschen** Kombination.
|
||||
|
||||
---
|
||||
|
||||
### Arbeitsauftrag
|
||||
Das Projekt wird als Zustandsmaschine mit insgesamt 6 Zuständen programmiert.
|
||||
|
||||
1. Erstellenung einer grafischen Übersicht der Zustandmaschine.
|
||||
2. Einteilung der Gruppen.
|
||||
3. Arbeiten Sie sich in git ein, benutzen Sie dazu die oberen Begriffe und machen sich ein Überblich mit der Software git gui, welche Sie über das Terminal aufufen können.
|
||||
4. Melden Sie sich auf der [git-Internetseite](git.steinbeis.schule) an und forken Sie das Repository *simonsays_esp32* in der Organisation BKI auf ihr eigenes Benutzerprofil. Dazu müsssen Sie Mitglied der Organisation BKI sein.
|
||||
5. Klonen Sie nun Ihr Repository auf ihren lokalen PC.
|
||||
7. Analyse des Programmcodes der einzelnen Zustände innerhalb der Gruppen.
|
||||
8. Contributen der Lösungen und Zusammenführung.
|
||||
Sobald Sie fertig sind, können Sie Ihren Teil der Lösung hoch laden. Anschliessend wird Ihre Lösung durch die Lehrkraft zusammengeführt.
|
||||
9. Wenn alle Lösungen hochgeladen wurden, kann das Repository Synchronisiert, gepullt und getestet werden.
|
||||
10. Falls Änderungen nötig sind, können Sie das in Ihrem Repository machen und erneut Contributen.
|
||||
|
||||
<!--
|
||||
|
||||
Alternativ Branchen:
|
||||
|
||||
Für das Branchen muss das Team BKI-Students schreibrechte erhalten.
|
||||
|
||||
4. Melden Sie sich auf der [git-Internetseite](git.steinbeis.schule) an und clonen Sie das Repository *simonsays_esp32* in der Organisation BKI auf Ihren lokalen PC. Dazu müsssen Sie Mitglied der Organisation BKI sein.
|
||||
5. erstellen Sie einen Neuen Branch mit dem Namen GruppeX (z.B. Gruppe1, Gruppe2, usw.).
|
||||
5. jede Gruppe erstellt ein PAP zu Ihrem Zustand und fügt es dem Repository im Ordner stateMachine mit dem Namen GruppeX (z.B. Gruppe1, Gruppe2, usw.) hinzu.
|
||||
6. Programmierung der einzelnen Zustände innerhalb der Gruppen.
|
||||
7. Commiten und pushen der Lösungen zum Hauptbranch.
|
||||
Sobald Sie fertig sind, können Sie Ihr Lösung hochladen und anschliessend testen.
|
||||
8. Falls Änderungen nötig sind, können Sie das in Ihrem Repository einen neuen Branch eröffnen, Änderungen tätigen und erneut zum Hauptbranch pushen.
|
||||
|
||||
-->
|
||||
|
||||
---
|
||||
|
||||
### Durchführung
|
||||
Das Projekt sollte in 6 Gruppen durchgeführt werden. Jede Gruppe lädt ihren Teil des gesamten Codes hoch, mit entsprechendem commit und Pull-Request.
|
||||
|
||||
Klonen Sie das Repository vom Server auf Ihren PC. Kopieren Sie unter verwendung der Arduino IDE, aus dem Ordner `SimonSaysLoesung` Ihren Abschnitt der Lösung in die Datei `SimonSaysProgram`. Erstellen Sie ein geeignetes commit, pushen Sie Ihre Änderungen auf `forgejo`. Erstellen Sie nun im Browser in forgejo einen `Pullrequest`.
|
||||
|
||||
Wenn alle Gruppen einen Pullrequest gemacht haben, wird die Lehrkraft diese entsprechend mergen und die Finale Lösung kann getestet werden.
|
||||
|
||||
Globale Variablen und Initialisierungen sind in der Vorlage bereits vorhanden.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Die einzelnen Gruppen müssen innerhalb Ihres Bereiches bleiben, sonst ist ein PullRequest der aktuellen Stände nicht möglich!
|
||||
|
||||
- Gruppe 1: Init einer neuen Runde
|
||||
- Gruppe 2: Ausgabe der aktuellen Runde
|
||||
- Gruppe 3: Eingabe der aktuellen Runde
|
||||
- Gruppe 4: Vergleich Ein- und Ausgabe
|
||||
- Gruppe 5: Runde geschafft
|
||||
- Gruppe 6: Runde verloren
|
||||
|
119
SimonSaysLoesung/SimonSaysLoesung.ino
Normal file
119
SimonSaysLoesung/SimonSaysLoesung.ino
Normal file
|
@ -0,0 +1,119 @@
|
|||
#include <FVS.h>
|
||||
//Memory_Shield
|
||||
//LEDs und Taster müssen Invertiert werden, da gegen Masse geschaltet wird
|
||||
|
||||
#define BUTTON0 1
|
||||
#define BUTTON1 5
|
||||
#define BUTTON2 3
|
||||
#define BUTTON3 4
|
||||
|
||||
#define MAXLEVEL 10
|
||||
|
||||
int buttons[] = { BUTTON0, BUTTON1, BUTTON2, BUTTON3 };
|
||||
int state = 0;
|
||||
int level = 0;
|
||||
|
||||
int musterVorgabe[MAXLEVEL] = {};
|
||||
int musterEingabe[MAXLEVEL] = {};
|
||||
|
||||
void setup() {
|
||||
//alle LEDs löschen
|
||||
portMode(1, OUTPUT);
|
||||
portWrite(1, 0);
|
||||
//LEDs vom Shield ausschalten
|
||||
for (int i = 0; i < 4; i++) {
|
||||
digitalWrite(buttons[i], HIGH);
|
||||
}
|
||||
//Tft initialisieren
|
||||
Tft.begin();
|
||||
//Zufallszahl starten
|
||||
randomSeed(analogRead(39));
|
||||
}
|
||||
|
||||
void loop() {
|
||||
switch (state) {
|
||||
case 0: // neue Runde
|
||||
Tft.setCursorCharacter(1, 1);
|
||||
Tft.print("neue Runde in ");
|
||||
for (int j = 3; j > 0; j--) {
|
||||
Tft.setCursorCharacter(1, 15);
|
||||
Tft.print(String(j) + " ");
|
||||
delay(1000);
|
||||
}
|
||||
level = 0;
|
||||
|
||||
for (int i = 0; i < MAXLEVEL; i++) {
|
||||
musterVorgabe[i] = random(0, 4);
|
||||
musterEingabe[i] = -1;
|
||||
}
|
||||
state = 1;
|
||||
break;
|
||||
case 1: // Ausgabe aktuelle Runde
|
||||
Tft.setCursorCharacter(1, 1);
|
||||
Tft.println("Ausgabe ");
|
||||
Tft.print(" ");
|
||||
portMode(1, OUTPUT);
|
||||
for (int i = 0; i <= level; i++) {
|
||||
digitalWrite(buttons[musterVorgabe[i]], LOW);
|
||||
delay(500);
|
||||
digitalWrite(buttons[musterVorgabe[i]], HIGH);
|
||||
delay(500);
|
||||
}
|
||||
state = 2;
|
||||
break;
|
||||
case 2: // Eingabe aktuelle Runde
|
||||
//GPIOs auf INPUT_PULLUP setzten und auf 0 abfragen!
|
||||
for (int b = 0; b < 4; b++) {
|
||||
pinMode(buttons[b], INPUT_PULLUP);
|
||||
}
|
||||
Tft.setCursorCharacter(1, 1);
|
||||
Tft.println("Eingabe ");
|
||||
for (int i = 0; i <= level; i++) {
|
||||
while (musterEingabe[i] == -1) {
|
||||
for (int j = 0; j < 4; j++) {
|
||||
while (digitalRead(buttons[j]) == false) {
|
||||
musterEingabe[i] = j;
|
||||
}
|
||||
}
|
||||
delay(100);
|
||||
}
|
||||
Tft.print(".");
|
||||
}
|
||||
//Warte bis Vergleich, sieht besser aus wegen den Punkten
|
||||
delay(500);
|
||||
state = 3;
|
||||
break;
|
||||
case 3: // Vergleich Eingabe/Ausgabe
|
||||
for (int i = 0; i <= level; i++) {
|
||||
if (musterEingabe[i] == musterVorgabe[i]) {
|
||||
state = 4;
|
||||
} else {
|
||||
state = 5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4: // geschafft, Runde hochzählen und auf Display ausgeben
|
||||
//Muster zurücksetzen der Eingabe
|
||||
for (int i = 0; i < MAXLEVEL; i++) {
|
||||
musterEingabe[i] = -1;
|
||||
}
|
||||
level++;
|
||||
Tft.setCursorCharacter(4, 1);
|
||||
Tft.print("aktuelle Runde:" + String(level) +" ");
|
||||
state = 1;
|
||||
break;
|
||||
case 5: // verloren
|
||||
Tft.setCursorCharacter(1, 1);
|
||||
Tft.print("leider verloren..");
|
||||
Tft.setCursorCharacter(1, 1);
|
||||
Tft.print(" ");
|
||||
Tft.setCursorCharacter(4, 1);
|
||||
Tft.print(" ");
|
||||
Tft.setCursorCharacter(5, 1);
|
||||
Tft.print("letzter Rekord:" + String(level));
|
||||
delay(3000);
|
||||
state = 0;
|
||||
break;
|
||||
}
|
||||
}
|
78
SimonSaysProgramm/SimonSaysProgramm.ino
Normal file
78
SimonSaysProgramm/SimonSaysProgramm.ino
Normal file
|
@ -0,0 +1,78 @@
|
|||
#include <FVS.h>
|
||||
//Memory_Shield
|
||||
//LEDs und Taster müssen Invertiert werden, da gegen Masse geschaltet wird
|
||||
|
||||
#define BUTTON0 1
|
||||
#define BUTTON1 5
|
||||
#define BUTTON2 3
|
||||
#define BUTTON3 4
|
||||
|
||||
#define MAXLEVEL 10
|
||||
|
||||
int buttons[] = { BUTTON0, BUTTON1, BUTTON2, BUTTON3 };
|
||||
int state = 0;
|
||||
int level = 0;
|
||||
|
||||
int musterVorgabe[MAXLEVEL] = {};
|
||||
int musterEingabe[MAXLEVEL] = {};
|
||||
|
||||
void setup() {
|
||||
//alle LEDs löschen
|
||||
portMode(1, OUTPUT);
|
||||
portWrite(1, 0);
|
||||
//LEDs vom Shield ausschalten
|
||||
for (int i = 0; i < 4; i++) {
|
||||
digitalWrite(buttons[i], HIGH);
|
||||
}
|
||||
//Tft initialisieren
|
||||
Tft.begin();
|
||||
//Zufallszahl starten
|
||||
randomSeed(analogRead(39));
|
||||
}
|
||||
|
||||
void loop() {
|
||||
switch (state) {
|
||||
case 0: // neue Runde
|
||||
//Gruppe 1 start ===============================================================================
|
||||
|
||||
|
||||
|
||||
//Gruppe 1 ende ================================================================================
|
||||
break;
|
||||
case 1: // Ausgabe aktuelle Runde
|
||||
//Gruppe 2 start ===============================================================================
|
||||
|
||||
|
||||
|
||||
//Gruppe 2 ende ================================================================================
|
||||
break;
|
||||
case 2: // Eingabe aktuelle Runde
|
||||
//Gruppe 3 start ===============================================================================
|
||||
|
||||
|
||||
|
||||
//Gruppe 3 ende ================================================================================
|
||||
break;
|
||||
case 3: // Vergleich Eingabe/Ausgabe
|
||||
//Gruppe 4 start ===============================================================================
|
||||
|
||||
|
||||
|
||||
//Gruppe 4 ende ================================================================================
|
||||
break;
|
||||
case 4: // geschafft, Runde hochzählen und auf Display ausgeben
|
||||
//Gruppe 5 start ===============================================================================
|
||||
|
||||
|
||||
|
||||
//Gruppe 5 ende ================================================================================
|
||||
break;
|
||||
case 5: // verloren
|
||||
//Gruppe 6 start ===============================================================================
|
||||
|
||||
|
||||
|
||||
//Gruppe 6 ende ================================================================================
|
||||
break;
|
||||
}
|
||||
}
|
BIN
Stromlaufplan/Simon_Says.pdf
Normal file
BIN
Stromlaufplan/Simon_Says.pdf
Normal file
Binary file not shown.
1
stateMachine/readme.txt
Normal file
1
stateMachine/readme.txt
Normal file
|
@ -0,0 +1 @@
|
|||
Hier bitte die PAP ablegen mit dem Namen GruppeX (z.B. Gruppe1, Gruppe2, Gruppe3, usw.)
|
Loading…
Add table
Reference in a new issue