No description
Find a file
trs f869a17027 Lösung Trs Gruppe1
Übernahme aus Lösung, da Gruppe 1 nichts gearbeitet....
2025-01-31 10:52:46 +01:00
Bilder Initial commit 2025-01-24 10:10:26 +01:00
SimonSaysLoesung Initial commit 2025-01-24 10:10:26 +01:00
SimonSaysProgramm Lösung Trs Gruppe1 2025-01-31 10:52:46 +01:00
stateMachine Initial commit 2025-01-24 10:10:26 +01:00
Stromlaufplan Initial commit 2025-01-24 10:10:26 +01:00
README.md README.md aktualisiert 2025-01-24 11:14:37 +01:00

simonsays_esp32

Shield

hübsches Bild

Inhalt


git installation

Link zur offiziellen Internetseite zu git:

Installationsanleitung


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 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

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

Ö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

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
    2. git über homebrew installiert/
    brew install git
    brew install git-gui
    
    1. Abfragen der aktuellen Version /
    git --version
    
    1. zurück zum Home-Verzeichnis/
    cd ~
    
    1. öfnnen/erstellen der Settingsdatei /
    vi .bashr
    
    1. 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
    
    1. Terminal verlassen und neu starten
    2. 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

  • 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 Starmenu

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.
  • .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.
  • 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.

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 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. Clonen Sie nun Ihr Repository auf ihren lokalen PC.
  6. 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.
  7. Programmierung der einzelnen Zustände innerhalb der Gruppen.
  8. Contributen der Lösungen und Zusammenführung. Sobald Sie fertig sind, können Sie Ihr Lösung hoch laden. Anschliessend wird Ihre Lösung zusammengeführt.
  9. Wenn alle Ihre Lösung hochgeladne haben, kann das Repository Synchronisiert und getestet werden.
  10. Falls Änderungen nötig sind, können Sie das in Ihrem Repository machen und erneut Contributen.

Durchführung

Das Projekt sollte in 6 Gruppen entwickelt werden. Die einzelnen Gruppen haben verschiedene Schwierigkeitsgrade (*) und können beliebig erweitert werden. z.B. durch eine Anzeige auf dem Display. Ein testen der einzelnen Zustände ist teilweise nur provisorischer programmierung der anderen Zustände möglich.

Globale Variablen und Initialisierungen sind in der Vorlage bereits vorhanden.

Important

Die einzelnen Gruppen müssen innerhalb Ihres Bereiches bleiben, sonst ist ein Hochladen 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 *