Оглавление:
- Шаг 1. Интерактивное видео
- Шаг 2: Постановка проблемы
- Шаг 3. Обзор того, как это работает
- Шаг 4: Список материалов и инструментов
- Шаг 5: начните сборку с макетной платы
- Шаг 6: запуск кода
- Шаг 7: завершающие штрихи
Видео: Таймер кабинета: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Инструкция, как создать таймер для кабинета.
Шаг 1. Интерактивное видео
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
Шаг 2: Постановка проблемы
Большую часть времени всегда занимают учебные комнаты. Это происходит потому, что людям нравится оставаться в комнате намного дольше, чем им нужно. Мы разработали таймер, который позволяет каждому человеку в общей сложности 2 часа и людям, ожидающим возможности запросить комнату для следующей группы. Использование RGB на Neopixels будет выражать количество оставшегося времени.
Шаг 3. Обзор того, как это работает
Таймер состоит из деталей, вырезанных лазерным резаком, 3 кнопок, 1 светодиода, 1 потенциометра.
Neopixels и потенциометр подключены к NodeMCU. NodeMCU запрограммирован на определение того, насколько повернут потенциометр, чтобы изменить количество светодиодов, которые горят на круглой полосе Neopixel. Кнопка Request останавливает функции Start, Stop и Set time. Цвет светодиодов на таймере внутри комнаты совпадает с цветом светодиода на боковой стороне коробки. Неопиксель на боковой стороне коробки представляет собой дисплей в вестибюле здания, чтобы узнать, какая комната занята и сколько времени осталось. Для каждой комнаты предписано 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 полоски Neopixel
www.amazon.com/Lighting-Modules-NeoPixel-W…
-Резисторы
www.digikey.com/product-detail/en/te-conne…
- Провода
www.digikey.com/product-detail/en/sparkfun…
-1 светодиод
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 для запроса светодиода
D3 к кнопке пуска
D4 к кнопке остановки
D5 к резистору к входу Neopixel на кольце
D6 к резистору к входной полосе Neopixel
Шаг 6: запуск кода
Это код, чтобы убедиться, что ваш проект работает до сих пор. Таймер должен составлять всего пару секунд на каждый светодиод на Neopixel Ring. Как только вы узнаете, что он работает до этого момента, все, что вам нужно сделать, это изменить приведенные ниже операторы time if на указанный диапазон. Я добавлю "#Change time" к каждому из операторов time if, которые вам нужно изменить в соответствии с вашим временным распределением.
Пробуем код:
импортировать utime
время импорта
из машинного импорта АЦП
импортная машина
импортный неопиксель
adc = ADC (0)
pin = machine. Pin (14, machine. Pin. OUT)
np = neopixel. NeoPixel (вывод, 12)
pin2 = machine. Pin (12, machine. Pin. OUT)
np2 = neopixel. NeoPixel (pin2, 8)
l1 = machine. 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.value (0)
def tglled (): # переключить функцию светодиода 'request'
если l1.value () == 0:
l1.value (1)
еще:
l1.value (0)
х = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
в то время как True:
# Это кнопка, которая включает светодиод запроса.
b1temp2 = b1.value ()
если 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.value () == 0):
если (adc.read ()> = (85,34 * (i + 1))):
np = (0, 0, 0)
np [11] = (0, 0, 30)
s = (я + 1)
еще:
np = (0, 0, 30)
np.write ()
еще:
np = (0, 0, 0)
np.write ()
# Это кнопка для запуска таймера
если (l1.value () == 0) и (t == 0):
b2temp2 = b2.value ()
если b2temp1, а не b2temp2:
х + = 1
т + = (с * 100)
время сна (0,05)
b2temp1 = b2temp2
# Эта кнопка завершает таймер
если (l1.value () == 0):
b3temp2 = b3.value ()
если b3temp1, а не b3temp2:
х = 0
t = 0
время сна (0,05)
b3temp1 = b3temp2
# Это таймер
если x> 0:
т + = 1
if (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 ()
if (t> 100) and (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 ()
if (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 ()
if (t> 300) and (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 ()
if (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 ()
if (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 ()
if (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 ()
if (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 ()
if (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 ()
if (t> 900) and (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 ()
if (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 ()
if (t> 1100) and (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 ()
if t> = 1300: # Время изменения
t = 0
х = 0
Шаг 7: завершающие штрихи
Теперь, когда вы зашли так далеко, у вас должен быть загружен рабочий код в NodeMCU и все части подключены к макетной плате. После того, как вы попробовали код и вырезали все детали, которые у вас есть для внешнего вида, например, корпус, вырезанный лазером, теперь вы можете припаять провода к NodeMCU. Пайка не является обязательной, но может сделать ее более безопасной и компактной для вашего корпуса. Вот некоторые детали, вырезанные лазером, которые мы сделали.
Рекомендуемые:
Таймер с Arduino и поворотным энкодером: 5 шагов
Таймер с Arduino и поворотным энкодером: таймер - это инструмент, который часто используется как в промышленности, так и в быту. Эта сборка дешевая и простая в изготовлении. Она также очень универсальна, позволяя загружать программу, выбранную в соответствии с потребностями. Есть несколько программ, написанных мной для Ardui
Рестомод стерео кабинета Volumio Console 1960-х: 8 шагов (с изображениями)
Рестомод для стерео-кабинета Volumio Console 1960-х годов: у моих дедушек и бабушек была стереоконсоль, когда я был ребенком, и я всегда любил с ней играть. В такой функциональной мебели есть что-то прекрасное. Я знал, когда я купил свое собственное жилье, мне нужно было иметь его. Я нашел старый Penncrest o
Говорящий дисплей Baymax для кабинета педиатра: 10 шагов (с изображениями)
Говорящий дисплей Baymax для кабинета педиатра: «Здравствуйте. Я Бэймакс, ваш личный помощник в области здравоохранения ». - Baymax В офисе моего местного педиатра они приняли интересную стратегию, пытаясь сделать медицинскую среду менее стрессовой и более интересной для детей. Они наполнили е
Использование Mame / Создание кабинета Mame: 12 шагов (с изображениями)
Использование Mame / Построение шкафа для мам: Итак, после нескольких месяцев размышлений о создании шкафа для мам, я уже в пути. Я думал, что опубликую свой прогресс и все такое. Это наполовину ПОЛНОЕ руководство, которое разберет каждый элемент построения шкафа. Также ниже находится файл в формате pdf, который поможет вам
Создание переносного гитарного кабинета: 11 шагов
Создайте переносной гитарный кабинет: (Создайте его на свой страх и риск. Из-за плохих навыков деревообработки можно потратить много денег, и много пальцев можно потерять из-за неправильного использования оборудования.) Я надеялся купить гитарный кабинет Mesa Boogie Thiele , но цена сдула меня! Так после