Inhaltsverzeichnis:

Timer für das Arbeitszimmer - Gunook
Timer für das Arbeitszimmer - Gunook

Video: Timer für das Arbeitszimmer - Gunook

Video: Timer für das Arbeitszimmer - Gunook
Video: [ioBroker] VIS Visualisierung – #11 –Timer & Wecker, Zeitsteuerung mit Blockly 2024, November
Anonim
Arbeitszimmer-Timer
Arbeitszimmer-Timer
Arbeitszimmer-Timer
Arbeitszimmer-Timer
Arbeitszimmer-Timer
Arbeitszimmer-Timer

Anleitung zum Erstellen eines Timers für ein Arbeitszimmer.

Schritt 1: Interaktionsvideo

drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk

Schritt 2: Problembeschreibung

Studienräume sind meistens immer belegt. Dies geschieht, weil die Leute gerne viel länger im Raum bleiben, als sie brauchen. Wir haben einen Timer entwickelt, der es jeder Person erlaubt, insgesamt 2 Stunden zu verbringen, und die wartenden Personen die Möglichkeit, den Raum als nächste Gruppe anzufordern. Die Verwendung von RGB auf Neopixels drückt die verbleibende Zeit aus.

Schritt 3: Überblick über die Funktionsweise

Der Timer besteht aus Teilen, die mit dem Laserschneider geschnitten wurden, 3 Tasten, 1 LED, 1 Potentiometer.

Die Neopixel und das Potentiometer sind mit der NodeMCU verdrahtet. Die NodeMCU ist so programmiert, dass sie regonisiert, wie weit das Potentiometer gedreht wird, um die Anzahl der LEDs zu ändern, die auf dem kreisförmigen Neopixel-Streifen leuchten. Die Schaltfläche Request stoppt die Funktion der Funktion Start, Stop und Set time. Die Farbe der LEDs an der Zeitschaltuhr im Raum entspricht der Farbe der LED an der Seite der Box. Das Neopixel an der Seite der Box stellt die Anzeige in der Lobby des Gebäudes dar, um zu wissen, welcher Raum belegt ist und wie viel Zeit noch übrig ist. Für jeden Raum sind 2 LEDs vorgeschrieben, eine LED zeigt an, ob der Raum belegt ist und die andere LED spiegelt die Farbe der LEDs des Timers (grün ist mehr Zeit, dann gelb, dann rot für weniger Zeit).

Schritt 4: Liste der Materialien und Werkzeuge

-Klares Acryl

-MicroUSB-Kabel

www.digikey.com/product-detail/de/stewart-…

-Breadboard

www.amazon.com/gp/product/B01EV6LJ7G/ref=o…

-Potentiometer

www.alliedelec.com/honeywell-380c32500/701…

-3 Tasten

www.digikey.com/product-detail/de/te-conne…

-KnotenMCU

www.amazon.com/gp/product/B07CB4P2XY/ref=o…

- 2 Neopixel-Streifen

www.amazon.com/Lighting-Modules-NeoPixel-W…

-Widerstände

www.digikey.com/product-detail/de/te-conne…

- Drähte

www.digikey.com/product-detail/de/sparkfun…

-1 LED

www.mouser.com/ProductDetail/Cree-Inc/C512…

-Heißklebepistole

www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…

-Klebbare Klettstreifen

www.amazon.com/VELCRO-Brand-90076-Fastener…

Schritt 5: Beginnen Sie mit dem Bauen mit dem Steckbrett

Beginnen Sie mit dem Bauen mit dem Steckbrett
Beginnen Sie mit dem Bauen mit dem Steckbrett

A0 zum mittleren Pin am Potentiometer

Vin to Power auf Neopixel-Ring

3v3 auf einer Seite des Potentiometers

Alle Gründe zu Ground on NodeMCU

D1 zur Anforderungstaste

D2 zur Anforderungs-LED

D3 zum Startknopf

D4 zum Stopp-Knopf

D5 zum Widerstand zum Neopixel-Eingang am Ring

D6 zum Widerstand zum Neopixel-Eingangsstreifen

Schritt 6: Starten des Codes

Dies ist der Code, um sicherzustellen, dass Ihr Projekt bisher funktioniert. Der Timer sollte nur ein paar Sekunden pro LED auf dem Neopixel-Ring betragen. Sobald Sie wissen, dass es bis zu diesem Punkt funktioniert, müssen Sie nur noch die Zeit-if-Anweisungen unten auf Ihren angegebenen Bereich ändern. Ich werde '#Zeit ändern' auf jede der Zeitangaben setzen, die Sie für Ihr Zeitkontingent ändern müssen.

Code ausprobieren:

utime importieren

Importzeit

aus Maschinenimport ADC

Importmaschine

Neopixel importieren

ADC = ADC(0)

Pin = Maschine. Pin(14, Maschine. Pin. OUT)

np = neopixel. NeoPixel(pin, 12)

Pin2 = Maschine. Pin(12, Maschine. Pin. OUT)

np2 = neopixel. NeoPixel(pin2, 8)

l1 = Maschine. Pin(4, Maschine. Pin. OUT)

b1 = Maschine. Pin(5, Maschine. Pin. IN, Maschine. Pin. PULL_UP)

b3 = Maschine. Pin(2, Maschine. Pin. IN, Maschine. Pin. PULL_UP)

b2 = Maschine. Pin(0, Maschine. Pin. IN, Maschine. Pin. PULL_UP)

l1. Wert(0)

def tglled(): # Toggle 'request' LED-Funktion

if l1.value() == 0:

l1. Wert(1)

anders:

l1. Wert(0)

x = 0

b1temp1 = 0

b1temp2 = 0

t = 0

b2temp1 = 0

b2temp2 = 0

b3temp1 = 0

b3temp2 = 0

s = 0

während Wahr:

# Dies ist die Taste, die die 'Anfrage'-LED umschaltet

b1temp2 = b1.value()

wenn b1temp1 und nicht b1temp2:

tglled()

time.sleep(0.05)

b1temp1 = b1temp2

# Das ist das Gitter

np2[0] = np[11]

if l1.value() == 1:

np2[1] = (30, 0, 0)

anders:

np2[1] = (0, 0, 30)

np2.write()

# Hier wählen wir aus, wie viel Zeit wir brauchen

wenn t == 0:

für i im Bereich (-1, 12):

if (l1.value() == 0):

if (adc.read() >= (85,34 * (i+1))):

np = (0, 0, 0)

np[11] = (0, 0, 30)

s = (i + 1)

anders:

np = (0, 0, 30)

np.write()

anders:

np = (0, 0, 0)

np.write()

# Dies ist die Schaltfläche zum Starten des Timers

if (l1.value() == 0) und (t == 0):

b2temp2 = b2.value()

wenn b2temp1 und nicht b2temp2:

x += 1

t += (s * 100)

time.sleep(0.05)

b2temp1 = b2temp2

# Diese Schaltfläche beendet den Timer

if (l1.value() == 0):

b3temp2 = b3.value()

wenn b3temp1 und nicht b3temp2:

x = 0

t = 0

time.sleep(0.05)

b3temp1 = b3temp2

# Das ist der Timer

wenn x > 0:

t += 1

if (t > 0) und (t <= 100): #Zeit ändern

np[0] = (5, 30, 0)

np[1] = (5, 30, 0)

np[2] = (5, 30, 0)

np[3] = (5, 30, 0)

np[4] = (5, 30, 0)

np[5] = (5, 30, 0)

np[6] = (5, 30, 0)

np[7] = (5, 30, 0)

np[8] = (5, 30, 0)

np[9] = (5, 30, 0)

np[10] = (5, 30, 0)

np[11] = (5, 30, 0)

np.write()

if (t > 100) und (t <= 200): #Zeit ändern

np[0] = (0, 0, 0)

np[1] = (10, 30, 0)

np[2] = (10, 30, 0)

np[3] = (10, 30, 0)

np[4] = (10, 30, 0)

np[5] = (10, 30, 0)

np[6] = (10, 30, 0)

np[7] = (10, 30, 0)

np[8] = (10, 30, 0)

np[9] = (10, 30, 0)

np[10] = (10, 30, 0)

np[11] = (10, 30, 0)

np.write()

if (t > 200) und (t <= 300): #Zeit ändern

np[0] = (0, 0, 0)

np[1] = (0, 0, 0)

np[2] = (15, 30, 0)

np[3] = (15, 30, 0)

np[4] = (15, 30, 0)

np[5] = (15, 30, 0)

np[6] = (15, 30, 0)

np[7] = (15, 30, 0)

np[8] = (15, 30, 0)

np[9] = (15, 30, 0)

np[10] = (15, 30, 0)

np[11] = (15, 30, 0)

np.write()

if (t > 300) und (t <= 400): #Zeit ändern

np[0] = (0, 0, 0)

np[1] = (0, 0, 0)

np[2] = (0, 0, 0)

np[3] = (20, 30, 0)

np[4] = (20, 30, 0)

np[5] = (20, 30, 0)

np[6] = (20, 30, 0)

np[7] = (20, 30, 0)

np[8] = (20, 30, 0)

np[9] = (20, 30, 0)

np[10] = (20, 30, 0)

np[11] = (20, 30, 0)

np.write()

if (t > 400) und (t <= 500): #Zeit ändern

np[0] = (0, 0, 0)

np[1] = (0, 0, 0)

np[2] = (0, 0, 0)

np[3] = (0, 0, 0)

np[4] = (25, 30, 0)

np[5] = (25, 30, 0)

np[6] = (25, 30, 0)

np[7] = (25, 30, 0)

np[8] = (25, 30, 0)

np[9] = (25, 30, 0)

np[10] = (25, 30, 0)

np[11] = (25, 30, 0)

np.write()

if (t > 500) und (t <= 600): #Zeit ändern

np[0] = (0, 0, 0)

np[1] = (0, 0, 0)

np[2] = (0, 0, 0)

np[3] = (0, 0, 0)

np[4] = (0, 0, 0)

np[5] = (30, 30, 0)

np[6] = (30, 30, 0)

np[7] = (30, 30, 0)

np[8] = (30, 30, 0)

np[9] = (30, 30, 0)

np[10] = (30, 30, 0)

np[11] = (30, 30, 0)

np.write()

if (t > 600) und (t <= 700): #Zeit ändern

np[0] = (0, 0, 0)

np[1] = (0, 0, 0)

np[2] = (0, 0, 0)

np[3] = (0, 0, 0)

np[4] = (0, 0, 0)

np[5] = (0, 0, 0)

np[6] = (30, 25, 0)

np[7] = (30, 25, 0)

np[8] = (30, 25, 0)

np[9] = (30, 25, 0)

np[10] = (30, 25, 0)

np[11] = (30, 25, 0)

np.write()

if (t > 700) und (t <= 800): #Zeit ändern

np[0] = (0, 0, 0)

np[1] = (0, 0, 0)

np[2] = (0, 0, 0)

np[3] = (0, 0, 0)

np[4] = (0, 0, 0)

np[5] = (0, 0, 0)

np[6] = (0, 0, 0)

np[7] = (30, 20, 0)

np[8] = (30, 20, 0)

np[9] = (30, 20, 0)

np[10] = (30, 20, 0)

np[11] = (30, 20, 0)

np.write()

if (t > 800) und (t <= 900): #Zeit ändern

np[0] = (0, 0, 0)

np[1] = (0, 0, 0)

np[2] = (0, 0, 0)

np[3] = (0, 0, 0)

np[4] = (0, 0, 0)

np[5] = (0, 0, 0)

np[6] = (0, 0, 0)

np[7] = (0, 0, 0)

np[8] = (30, 15, 0)

np[9] = (30, 15, 0)

np[10] = (30, 15, 0)

np[11] = (30, 15, 0)

np.write()

if (t > 900) und (t <= 1000): #Zeit ändern

np[0] = (0, 0, 0)

np[1] = (0, 0, 0)

np[2] = (0, 0, 0)

np[3] = (0, 0, 0)

np[4] = (0, 0, 0)

np[5] = (0, 0, 0)

np[6] = (0, 0, 0)

np[7] = (0, 0, 0)

np[8] = (0, 0, 0)

np[9] = (30, 10, 0)

np[10] = (30, 10, 0)

np[11] = (30, 10, 0)

np.write()

if (t > 1000) und (t <= 1100): #Zeit ändern

np[0] = (0, 0, 0)

np[1] = (0, 0, 0)

np[2] = (0, 0, 0)

np[3] = (0, 0, 0)

np[4] = (0, 0, 0)

np[5] = (0, 0, 0)

np[6] = (0, 0, 0)

np[7] = (0, 0, 0)

np[8] = (0, 0, 0)

np[9] = (0, 0, 0)

np[10] = (30, 5, 0)

np[11] = (30, 5, 0)

np.write()

if (t > 1100) und (t <= 1200): #Zeit ändern

np[0] = (0, 0, 0)

np[1] = (0, 0, 0)

np[2] = (0, 0, 0)

np[3] = (0, 0, 0)

np[4] = (0, 0, 0)

np[5] = (0, 0, 0)

np[6] = (0, 0, 0)

np[7] = (0, 0, 0)

np[8] = (0, 0, 0)

np[9] = (0, 0, 0)

np[10] = (0, 0, 0)

np[11] = (30, 0, 0)

np.write()

wenn t >= 1300: #Zeit ändern

t = 0

x = 0

Schritt 7: Feinschliff

Sobald Sie so weit sind, sollten Sie den Arbeitscode auf die NodeMCU hochgeladen und alle Teile mit dem Steckbrett verdrahtet haben. Nachdem Sie den Code ausprobiert und alle Teile, die Sie für das Äußere haben, z. B. das lasergeschnittene Gehäuse, geschnitten haben, können Sie nun die Drähte an die NodeMCU löten. Das Löten ist optional, kann es aber für Ihr Gehäuse sicherer und kleiner machen. Hier sind einige der lasergeschnittenen Teile, die wir hergestellt haben.

Empfohlen: