Arduino Projekt: Türsicherheitssystem: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 72: Zeile 72:
=='''Programmierung Vorkenntnisse'''==
=='''Programmierung Vorkenntnisse'''==
*Kenntnisse in den '''Programmierrichtlinien''' für die Erstellung von Software. ([[Programmierrichtlinien Einsteiger|Link]])<br>
*Kenntnisse in den '''Programmierrichtlinien''' für die Erstellung von Software. ([[Programmierrichtlinien Einsteiger|Link]])<br>
*Grundkenntnisse von Projekt '''1-5''' verstanden haben. [https://wiki.hshl.de/wiki/index.php/Kategorie:Arduino:_Projekt (Link)]
*Grundkenntnisse von Projekt '''1-4''' verstanden haben. [https://wiki.hshl.de/wiki/index.php/Kategorie:Arduino:_Projekt (Link)]
*Grundkenntnisse für das Projekt '''"Arduino Pong Spiel"''' verstehen. ([[Grundkenntnisse Programmierung (Arduino Pong Spiel) |Link]])
*Grundkenntnisse für das Projekt '''"Tür Sicherheitssystem"''' verstehen. ([[Grundkenntnisse Programmierung (Tür Sicherheitssystem) |(Link)]])


=='''Programmierung Anleitung'''==
=='''Programmierung Anleitung'''==

Version vom 23. Juli 2023, 15:43 Uhr

Datei:PongGae neu.gif
Abb. 1: Pong Spiel

Autor: Justin Frommberger

Aufgabenstellung

Ziel von dem Projekt ist eine Tür Sicherheitssystem zu simulieren.
Die Aufgabe ist mit einem vier stelligen Zahlen Code die Tür zu öffnen.

Benötigte Software

  • Aktuellste Arduino IDE mit der Version für ihren PC. (Download link)
  • Bibliotheken für das 4x4 Tastenfeld downloaden: (Link)
    • Klicke oben rechts in GitHub auf Code und dann downloade die Zip-Datei.
    • Um die Zip-Datei in ihre Arduino Bibliothek einzubinden, folgen diese Schritte: (Link)

Benötigte Materiallien

Tabelle 1: Materialliste

Nr. Anz. Beschreibung Bild Pos. Anz. Beschreibung Bild
1 Funduino Arduino UNO R3
viele Jumper Kabel, männlich/männlich
1 Steckbrett
2 LED beliebige Farbe
3 Widerstand
120 Ω
1 TowerPro SG90 Servomotor
1 Piezo Lautsprecher
1 4x4 Tastenfeld

Vorab wichtig zu wissen!

Abb. 2: LED

Arduino Uno R3:

  • Der Arduino besitzt unterschiedliche Schnittstellen, weil der Arduino ein digitaler Mikrocontroller ist, kann er nur  5 Volt ausgeben oder annehmen.
  • Bei einer konstanten  5 V Spannung, ist die LED immer gleich hell, so ist das Ziel die Spannung zur LED zu reduzieren.
  • Dafür wird eine Pulsweitenmodulation (PWM) Schnittstelle benötigt, denn bei den anderen Schnittstellen ist dies nicht möglich.
  • Bei einem geringen PWM-Wert ist das  5 V Signal kaum noch vorhanden und bei einem hohen PWM-Wert liegt das  5 V Signal nahezu durchgehend am Pin an.
  • Durch die PWM Schnittstelle kann nun die LED unterschiedlich hell leuchten, da die Spannung anpassbar ist.
  • Die [PWM] Schnittstellen sind ganz einfach zu erkennen an diesem Zeichen (~)

LED:

  • Beachte beim Arbeiten mit der LED, die Anode und Kathode nicht zu vertauschen.
  • In die Anode fließt der Strom hinein (lange Seite), danach fließt der Strom wieder durch die Kathode hinaus (kurze Seite) siehe Abb. 2.
  • Wenn die LED am Ende des Projektes nicht leuchtet, wurde dies vertauscht, einfach umdrehen und sie leuchtet!

Steckbrett:
Erklärung zum Arbeiten mit einem Steckbrett: (Link)

Servomotor:

  • Schwarz oder Braun = Masse (GND)
  • Rot = + 5 V
  • Orange, Gelb oder Weiß = PWM-Signal

Tastenfeld:
Anleitung zum Tastenfeld siehe: (Link)

Aufbau Schaltung

Abb.3 Schaltung Pong Spiel

In Abb. 3 wird die Schaltung für das Projekt " Tür Sicherheitssystem" dargestellt.

Arduino Datei erstellen

Erstellen der ersten Arduino Datei (Link zum Tutorial).

Programmierung Vorkenntnisse

  • Kenntnisse in den Programmierrichtlinien für die Erstellung von Software. (Link)
  • Grundkenntnisse von Projekt 1-4 verstanden haben. (Link)
  • Grundkenntnisse für das Projekt "Tür Sicherheitssystem" verstehen. ((Link))

Programmierung Anleitung

Nachdem alle Schritte abgeschlossen sind, kann mit der Programmierung des Projektes gestartet werden.

1) Bibliotheken einfügen

Zuerst muss, für das Projekt Pong Spiel die heruntergeladenen Bibliotheken eingefügt werden.

Benötigt wird:

  1. Kommunikation zum I2C/TWI Gerät.
  2. Kommunikation mit dem SPI Gerät.
  3. Adafruit GFX Grafik.
  4. 128x64 and 128x32 OLEDs Displays.

Quelltext 1: Pong.ino

2) Initialisierung Arduino

Nachdem nun die Bibliotheken hinzugefügt wurden, folgt nun die Initialisierung der benötigten Pins und Variablen.
Wichtig ist, sich vorab Gedanken zu machen, wie man diese anordnet. (siehe Abbildung 3)

2.1) Taster:

Zuerst müssen allen vier Tastern einen Pin am Arduino zugewiesen werden, diese kann man beliebig an den digitalen Schnittstellen anschließen.
Danach werden die Pins mit pinMode(); und digitalWrite(); initialisiert.

Quelltext 2: Pong.ino

2.2) OLED Display

Um das OLED Display zu initialisieren, wird die Bibliothek Adafruit_SSD1306 benötigt.
Hierfür nutzt man die Adafruit_SSD1306 display() Funktion.

Quelltext 3: Pong.ino

2.3) Variablen

Auch können vorab Variablen bestimmt werden, die für die Programmierung benötigt werden.
Wie die Größe des Displays und die Eigenschaften vom Schläger und Ball.
Zusätzlich ist geplant, eine Punkteanzeige zu entwerfen, wofür zwei Variablen benötigt werden.

Quelltext 4: Pong.ino

2.4) Position vom Ball, Paddle und Spieler auf dem Display

Im nächsten Schritt sollen die Postionen auf dem Display festgelegt werden.
Benötigte Postionen sind: Ball, Spieler 1 (Player) und Spieler 2 (CPU).
Auch werden zwei update Variablen benötigt, um später den Ball und Schläger bewegen zu können.
Dieser Werte können nach Geschmack angepasst werden.

Quelltext 5: Pong.ino

3) Display hochfahren

Um später zu sehen, wo man welche Objekte platziert hat, muss das Display hochgefahren werden.
Zusätzlich wird beim Start vom Display ein Timer gesetzt, dieser wird für die Bewegung vom Ball benötigt.
Benötigt wird: display.display(); und mills(); zum Zeitauslesen.

Quelltext 6: Pong.ino

3.1) Display Spielname anzeigen

Als Zusatzaufgabe habe ich überlegt, bevor das Spiel startet den Namen Pong Spiel auf dem Display anzeigen zu lassen.
Tipp: Hierfür werden die display.set(); und display.println(); Funktionen benötigt.

Quelltext 7: Pong.ino

4) Display Punkteanzeige

Um die Punktanzeige ins Spiel mit einzubringen, werden zwei Methoden benötigt.
Die erste Methode soll die Zahlen auf dem Display anzeigen.
Die zweite Methode soll die erstellen Zahlen wieder löschen, um das nächste Ergebnis korrekt anzuzeigen.
Tipp: Hierfür werden die display.set(); und display.println(); Funktionen benötigt.

Quelltext 8: Pong.ino

5) Bewegter Ball

Musterlösung

Quelle: Link



→ zurück zum Hauptartikel: BA: Arduino-Projekte für die Lehre