Schatzkiste - Montage Anleitung

Die Schatzkiste lässt sich mit dem Betätigen von vier Tasten in der richtigen Reihenfolge öffnen. Wird eine Taste betätigt, leuchtet die darüber liegende LED. Ist der Tasten-Code richtig eingegeben, gehen die vier weißen LEDs über den Tasten aus, eine grüne LED leuchtet und die beiden Servo-Motoren öffnen die Verschlüsse. Ist die Schatzkiste geöffnet, kann mit jeder beliebigen Taste die Schatzkiste wieder verschlossen werden. Ist der Code falsch eingegeben, erlöschen die vier LEDS und die Schatzkiste bleibt verschlossen.

Im inneren der Schatzkiste ist ein Reed-Kontakt versteckt. Nur der Eigentümer der Schatzkiste weiß, wo sich der Reed-Kontakt befindet. Wird an diesen Reed-Kontakt ein Magnet gehalten, blinken die vier Taster-LEDs und der Code kann neu programmiert werden. Nach erfolgreicher Programmierung blinken die vier Taster-LEDs erneut. Der Code wird in das EEPROM des NANO geladen, so dass auch bei Spannungsausfall der Code erhalten bleibt.

schatzkiste.png

Die Schatzkiste

 

Hardware

Die Stückliste für die Schatzkiste

Aufbau und Montage

Der Aufbau und die Montage der Schatzkiste ist in mehrere Schritte unterteilt.

Schritt 1: Das Gehäuse

schatzkiste_lk.png

Schritt 2: 3D-Druck

Zeichne und drucke 4 Platinen Füße für den NANO, D=5mm x 5mm
Klebe die Füße auf die Unterseite des NANO-Shields

spacer5mm.png

Schritt 3: Verdrahtung und Lötarbeiten

Bestücke das NANO-Shield mit den Buchsenleisten und den beiden Stiftleisten für die Servo-Motore
Biege an einem Ende der Widerstände und am +Pol der LEDs eine Öse

r-led.jpg

Führe Anschlussdrähte für die Widerstände und der LEDs durch die Öse und Löte sie an

sk10.png
sk11.png

sk12.png

sk13.png

Verdrahte das Shield, die LEDs, Taster und den Reed-Kontakt nach den Verdrahtungsplan

shield.png

schatzkiste-verdrahtung.png

Schritt 4: Inbetriebnahme


Servo -Text Programm

/*************************************************************************************************
                                      PROGRAMMINFO
**************************************************************************************************
  Funktion: Schatzkiste Servo Test
          Die Servos muessen sich zum oeffnen der Schazkiste entgegengesetzt bewegen

  Servo links D9
  Servo rechte D10
  Taster  D7 betaetigt/geschlossen => GND, 

**************************************************************************************************
  Version: 28.01.2023
**************************************************************************************************
  Board: NANO 1.6.21
**************************************************************************************************
  Libraries:
  https://github.com/espressif/arduino-esp32/tree/master/libraries
  C:\Users\User\Documents\Arduino
  D:\gittemp\Arduino II\A156_Wetterdaten_V3
**************************************************************************************************
  C++ Arduino IDE V1.8.19

**************************************************************************************************
  Einstellungen:
  https://dl.espressif.com/dl/package_esp32_index.json
  http://dan.drown.org/stm32duino/package_STM32duino_index.json
  http://arduino.esp8266.com/stable/package_esp8266com_index.json
**************************************************************************************************/
#include <Servo.h>

Servo myservo_li; //Servo links
Servo myservo_re; //Servo rechts

int pos = 0;
int button = 7;  //button = LOW -> Schatzkiste zu


void setup()
{
  myservo_li.attach(9);  // Servo links
  myservo_re.attach(10);  // Servo rechts
  pinMode(pos, OUTPUT);
  pinMode(button, INPUT);

  digitalWrite (button, HIGH);
}

void loop()
{
//******* Servo links ********************
  if (digitalRead(button) == LOW)
    for (pos = 0; pos < 90; pos += 90)
    {
      myservo_li.write(pos);
    }
  if (digitalRead(button) == HIGH)
    for (pos = 90; pos >= 90; pos -= 90)
    {
      myservo_li.write(pos);
      delay(50);
    }
//******* Servo rechts ********************
  for (pos = 90; pos >= 90; pos -= 90)
  {
    myservo_re.write(pos);
  }
  if (digitalRead(button) == HIGH)
    for (pos = 0; pos < 90; pos += 90)
    {
      myservo_re.write(pos);
      delay(50);
    }
}

schatzkiste.png

Fertig!


Version #1
Erstellt: 31 März 2025 21:37:12 von Joel Hatsch
Zuletzt aktualisiert: 31 März 2025 21:47:08 von Joel Hatsch