Мазмуну:

Окуу бөлмөсүнүн таймери: 7 кадам
Окуу бөлмөсүнүн таймери: 7 кадам

Video: Окуу бөлмөсүнүн таймери: 7 кадам

Video: Окуу бөлмөсүнүн таймери: 7 кадам
Video: Топор и хардкор ► 6 Прохождение Silent Hill Downpour 2024, Ноябрь
Anonim
Окуу бөлмөсүнүн таймери
Окуу бөлмөсүнүн таймери
Окуу бөлмөсүнүн таймери
Окуу бөлмөсүнүн таймери
Окуу бөлмөсүнүн таймери
Окуу бөлмөсүнүн таймери

Окуу бөлмөсү үчүн таймерди кантип түзүү боюнча нускамалар.

1 -кадам: Өз ара видео

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

2 -кадам: Проблемалар жөнүндө билдирүү

Көбүнчө окуу бөлмөлөрү дайыма алынат. Бул адамдар бөлмөдө муктаж болгондон алда канча көп убакыт калууну жакшы көргөндүктөн болот. Биз таймерди иштеп чыктык, ал ар бир адамга жалпы 2 сааттан жана бөлмөнү кийинки топко кирүү мүмкүнчүлүгүн күткөн адамдарга мүмкүндүк берет. Неопикселдерде RGB колдонуу калган убакытты билдирет.

3 -кадам: Бул кантип иштээрин карап чыгуу

Таймер лазер кескич менен кесилген бөлүктөрдөн турат, 3 баскыч, 1 LED, 1 потенциометр.

Neopixels жана потенциометр NodeMCUге туташтырылган. NodeMCU потенциометр канчалык бурулганын регонизациялоо үчүн программаланган. "Сурам" баскычы Баштоо, токтотуу жана убакытты коюу функциясын токтотот. Бөлмөнүн ичиндеги таймердеги светодиоддордун түсү кутунун капталында күйгөн LEDдын түсү менен бирдей. Кутунун капталындагы неопиксел имараттын фойесинде кайсы бөлмө алынганын жана канча убакыт калганын билүү үчүн дисплейди билдирет. Ар бир бөлмөгө 2 светодиод коюлган, бир светодиод бөлмө алынса, экинчиси таймердеги светодиоддун түсүн чагылдырат (жашыл көп убакыт, андан кийин сары, андан кийин кызыл аз убакытка).

4 -кадам: Материалдардын жана шаймандардын тизмеси

-Акрил тазалаңыз

-MicroUSB кабели

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

-Нан тактасы

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 неопикселдик тилке

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…

-жабышчаак велкро тилкелери

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

5 -кадам: Курулуш панелинен баштаңыз

Курулуш тактасынан баштаңыз
Курулуш тактасынан баштаңыз

A0 потенциометрдеги ортоңку пинге

Vin Neopixel шакегин иштетет

Потенциометрдин бир жагына 3v3

NodeMCUге негизделген бардык негиздер

D1 баскычын талап кылуу

D2 LED суроо үчүн

Баштоо баскычына D3

D4 баскычын басуу

D5 шакеги боюнча Neopixel киргизүү үчүн резисторго

D6 Neopixel киргизүү тилкесине резисторго

6 -кадам: Кодду баштоо

Бул сиздин долбооруңуздун ушул убакка чейин иштеп жатканына ынануу үчүн код. Таймер Neopixel Ringдеги LED күнүнө бир нече секунд болушу керек. Бул учурга чейин иштеп жатканын билгенден кийин, төмөндөгү билдирүүлөр көрсөтүлгөн убакытка чейин өзгөрүшү керек. Убактыңызды бөлүштүрүү үчүн өзгөртүшүңүз керек болгон билдирүүлөрдү мен ар бир убакытка '#Өзгөртүүнү' коем.

Кодду колдонуу:

utime импорттоо

импорттоо убактысы

ADC машина импортунан

машина импорттоо

неопикселди импорттоо

adc = ADC (0)

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

np = neopixel. NeoPixel (пин, 12)

pin2 = машина. Пин (12, машина. Пин. ОЮТ)

np2 = neopixel. NeoPixel (pin2, 8)

l1 = машина

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.value (0)

def tglled (): # өтүнүч 'LED функциясын алмаштыруу

эгер l1.value () == 0:

l1.баа (1)

башка:

l1.value (0)

x = 0

b1temp1 = 0

b1temp2 = 0

t = 0

b2temp1 = 0

b2temp2 = 0

b3temp1 = 0

b3temp2 = 0

s = 0

чын болсо:

# Бул "өтүнүч" LEDин алмаштыруучу баскыч

b1temp2 = b1.value ()

эгер b1temp2 эмес, b1temp2:

tglled ()

time.sleep (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.value () == 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.value () == 0) жана (t == 0):

b2temp2 = b2.value ()

эгер b2temp2 эмес, b2temp2:

x += 1

t += (s * 100)

time.sleep (0.05)

b2temp1 = b2temp2

# Бул баскыч таймерди аяктайт

эгер (l1.value () == 0):

b3temp2 = b3.value ()

эгер b3temp2 эмес, b3temp2:

x = 0

t = 0

time.sleep (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ге жумушчу код жүктөлүп берилиши керек жана анын бардык бөлүктөрү нан тактасына туташтырылган. Сиз кодду сынап көрүп, сырткы, башкача айтканда лазер менен кесилген капкактарды кесип алгандан кийин, сиз азыр зымдарды NodeMCUга ширете аласыз. Ширетүү милдеттүү эмес, бирок аны корпус үчүн коопсузураак жана кичирээк кылышы мүмкүн. Бул жерде биз жасаган лазердик тетиктердин айрымдары.

Сунушталууда: