Πίνακας περιεχομένων:

Χρονόμετρο Αίθουσας Μελέτης: 7 Βήματα
Χρονόμετρο Αίθουσας Μελέτης: 7 Βήματα

Βίντεο: Χρονόμετρο Αίθουσας Μελέτης: 7 Βήματα

Βίντεο: Χρονόμετρο Αίθουσας Μελέτης: 7 Βήματα
Βίντεο: Μαθηματικά - Νοερές πράξεις (Πρόσθεση - Αφαίρεση) Μέρος Α - Β' έως ΣΤ' Δημοτικού Επ. 10 2024, Νοέμβριος
Anonim
Χρονόμετρο Αίθουσας Μελέτης
Χρονόμετρο Αίθουσας Μελέτης
Χρονόμετρο Αίθουσας Μελέτης
Χρονόμετρο Αίθουσας Μελέτης
Χρονόμετρο Αίθουσας Μελέτης
Χρονόμετρο Αίθουσας Μελέτης

Οδηγίες για το πώς να δημιουργήσετε ένα χρονόμετρο για μια αίθουσα μελέτης.

Βήμα 1: Βίντεο αλληλεπίδρασης

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

Βήμα 2: Δήλωση προβλήματος

Τις περισσότερες φορές, οι αίθουσες μελέτης λαμβάνονται πάντα. Αυτό συμβαίνει επειδή στους ανθρώπους αρέσει να μένουν στο δωμάτιο για πολύ περισσότερο από όσο χρειάζονται. Έχουμε σχεδιάσει ένα χρονόμετρο που επιτρέπει σε κάθε άτομο συνολικά 2 ώρες και σε άτομα που περιμένουν τη δυνατότητα να ζητήσουν από το δωμάτιο να είναι η επόμενη ομάδα. Η χρήση RGB στα Neopixels θα εκφράσει τον χρόνο που απομένει.

Βήμα 3: Επισκόπηση του τρόπου λειτουργίας

Ο χρονοδιακόπτης αποτελείται από μέρη που κόβονται από τον κόφτη λέιζερ, 3 κουμπιά, 1 LED, 1 ποτενσιόμετρο.

Το Neopixels και το ποτενσιόμετρο είναι συνδεδεμένα στο NodeMCU. Το NodeMCU έχει προγραμματιστεί να επανασυντονίζει πόσο μακριά είναι το ποτενσιόμετρο για να αλλάξει την ποσότητα των LED που ανάβουν στην κυκλική ταινία Neopixel. Το κουμπί Αίτηση σταματά τη λειτουργία της λειτουργίας Έναρξη, Διακοπή και Ρύθμιση ώρας. Το χρώμα των LED στο χρονόμετρο μέσα στο δωμάτιο είναι το ίδιο χρώμα με το LED που ανάβει στο πλάι του κουτιού. Το neopixel στο πλάι του κουτιού αντιπροσωπεύει την οθόνη στο λόμπι του κτιρίου για να γνωρίζετε ποιο δωμάτιο έχει ληφθεί και πόσος χρόνος απομένει. Για κάθε δωμάτιο συνταγογραφούνται 2 LED, το ένα LED αντιπροσωπεύει εάν το δωμάτιο έχει ληφθεί και το άλλο led καθρεφτίζει το χρώμα των LED στο χρονόμετρο (το πράσινο είναι περισσότερος χρόνος, μετά το κίτρινο και μετά το κόκκινο για λιγότερο χρόνο).

Βήμα 4: Λίστα υλικών και εργαλείων

-Καθαρό ακρυλικό

-Καλώδιο MicroUSB

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

-Breadboard

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

-Ποτενσιόμετρο

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

-3 κουμπιά

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

-NodeMCU

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

- 2 ταινίες Neopixel

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

-Αντιστάσεις

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

- Σύρματα

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

-1 LED

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

-Καυτό όπλο κόλλας

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

-Κολλώδεις λωρίδες Velcro

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

Βήμα 5: Ξεκινήστε να χτίζετε με το Breadboard

Ξεκινήστε να χτίζετε με το Breadboard
Ξεκινήστε να χτίζετε με το Breadboard

A0 έως μεσαία καρφίτσα στο Ποτενσιόμετρο

Vin to Power on Neopixel ring

3v3 στη μία πλευρά του Ποτενσιόμετρου

Όλοι οι λόγοι για τη γείωση στο NodeMCU

D1 Κουμπί αίτησης

D2 για να ζητήσετε LED

Κουμπί D3 to Start (Έναρξη)

Κουμπί D4 to Stop

D5 σε αντίσταση σε Neopixel Είσοδος στον δακτύλιο

D6 στην αντίσταση στην ταινία εισόδου Neopixel

Βήμα 6: Εκκίνηση του κώδικα

Αυτός είναι ο κώδικας για να βεβαιωθείτε ότι το έργο σας λειτουργεί μέχρι τώρα. Ο χρονοδιακόπτης πρέπει να είναι μόνο μερικά δευτερόλεπτα ανά LED στο δαχτυλίδι Neopixel. Μόλις γνωρίζετε ότι λειτουργεί μέχρι αυτό το σημείο, το μόνο που χρειάζεται να κάνετε είναι να αλλάξετε την ώρα εάν οι παρακάτω προτάσεις στο καθορισμένο εύρος σας. Θα βάζω "#Αλλαγή χρόνου" σε κάθε φορά, εάν δηλώσεις που πρέπει να αλλάξετε για την κατανομή του χρόνου σας.

Δοκιμάζοντας τον Κώδικα:

εισαγωγή ωφέλιμου χρόνου

χρόνο εισαγωγής

από εισαγωγή μηχανής ADC

μηχανή εισαγωγής

εισαγωγή neopixel

adc = ADC (0)

pin = machine. Pin (14, machine. Pin. OUT)

np = neopixel. NeoPixel (pin, 12)

pin2 = machine. Pin (12, machine. Pin. OUT)

np2 = neopixel. NeoPixel (pin2, 8)

l1 = μηχάνημα. Pin (4, machine. Pin. OUT)

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

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

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

l1.τιμή (0)

def tglled (): # εναλλαγή της λειτουργίας "αίτησης" LED

αν l1.value () == 0:

l1. αξία (1)

αλλού:

l1.τιμή (0)

x = 0

b1temp1 = 0

b1temp2 = 0

t = 0

b2temp1 = 0

b2temp2 = 0

b3temp1 = 0

b3temp2 = 0

s = 0

ενώ True:

# Αυτό είναι το κουμπί που αλλάζει τη λυχνία LED "αίτησης"

b1temp2 = b1.τιμή ()

εάν b1temp1 και όχι b1temp2:

tglled ()

ώρα. ύπνος (0,05)

b1temp1 = b1temp2

# Αυτό είναι το πλέγμα

np2 [0] = np [11]

αν l1.value () == 1:

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

αλλού:

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

np2.write ()

# Εδώ επιλέγουμε πόσο χρόνο χρειαζόμαστε

αν t == 0:

για i στην περιοχή (-1, 12):

εάν (l1.τιμή () == 0):

εάν (adc.read ()> = (85.34 * (i+1))):

np = (0, 0, 0)

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

s = (i + 1)

αλλού:

np = (0, 0, 30)

np.write ()

αλλού:

np = (0, 0, 0)

np.write ()

# Αυτό είναι το κουμπί για την εκκίνηση του χρονοδιακόπτη

εάν (l1.τιμή () == 0) και (t == 0):

b2temp2 = b2.value ()

εάν b2temp1 και όχι b2temp2:

x += 1

t += (s * 100)

ώρα. ύπνος (0,05)

b2temp1 = b2temp2

# Αυτό το κουμπί τελειώνει το χρονόμετρο

εάν (l1.τιμή () == 0):

b3temp2 = b3.τιμή ()

εάν b3temp1 και όχι b3temp2:

x = 0

t = 0

ώρα. ύπνος (0,05)

b3temp1 = b3temp2

# Αυτό είναι το χρονόμετρο

αν x> 0:

t += 1

εάν (t> 0) και (t <= 100): #Αλλαγή χρόνου

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

εάν (t> 100) και (t <= 200): #Αλλαγή χρόνου

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

εάν (t> 200) και (t <= 300): #Αλλαγή χρόνου

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

εάν (t> 300) και (t <= 400): #Αλλαγή χρόνου

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

εάν (t> 400) και (t <= 500): #Αλλαγή χρόνου

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

εάν (t> 500) και (t <= 600): #Αλλαγή χρόνου

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

εάν (t> 600) και (t <= 700): #Αλλαγή χρόνου

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

εάν (t> 700) και (t <= 800): #Αλλαγή χρόνου

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

εάν (t> 800) και (t <= 900): #Αλλαγή χρόνου

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

εάν (t> 900) και (t <= 1000): #Αλλαγή χρόνου

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

εάν (t> 1000) και (t <= 1100): #Αλλαγή χρόνου

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

εάν (t> 1100) και (t <= 1200): #Αλλαγή χρόνου

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

αν t> = 1300: #Αλλαγή χρόνου

t = 0

x = 0

Βήμα 7: Τελειώνοντας τις πινελιές

Τώρα, όταν είστε τόσο μακριά, θα πρέπει να έχετε ανεβάσει τον κωδικό εργασίας στο NodeMCU και όλα τα μέρη να είναι συνδεδεμένα στο breadboard. Αφού δοκιμάσετε τον κώδικα και κόψετε όσα κομμάτια έχετε για το εξωτερικό, δηλαδή περίβλημα με λέιζερ, μπορείτε τώρα να κολλήσετε τα καλώδια στο NodeMCU. Η συγκόλληση είναι προαιρετική, αλλά μπορεί να την κάνει πιο ασφαλή και μικρότερη για το περίβλημα σας. Εδώ είναι μερικά από τα μέρη κοπής με λέιζερ που φτιάξαμε.

Συνιστάται: