Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Концепция:
Я сделал лампу, которая всегда требует внимания. На это меня вдохновила моя жена. Я учусь в аспирантуре, поэтому всегда занят школьными занятиями. Моя жена хочет поговорить со мной, когда я приду домой. Когда я мало обращаю на нее внимания, она дуется, а я хожу по яичной скорлупе. Я вложил ее характеристику в эту лампу. Чтобы лампа продолжала светиться, пользователь должен заводить ключ каждый час. Лампа погаснет, когда таймер покажет 0 минут.
Если вы делаете эту лампу, обращайтесь с ней как следует. (Тик-такт - это бонус для вас.)
Списки покупок:
Arduino Nano (ATmega328P)
Настольная лампа Basic
Лампа USB 5V 5W
Коммутационная плата с гнездовой розеткой USB типа A
Металлические ключи от часов
Таймер приготовления
Датчик эффекта Холла (A1301 / A1302)
Магниты (6 х 2 мм)
Винт с плоской головкой Phillips 6/32 (длина 2 дюйма)
Орехи, 6/32
Шаг 1. Лазерная резка нижней части и разборка лампы
Для нижней части я спроектировал и вырезал акриловые панели с помощью станка для лазерной резки.
Разберите лампу.
Шаг 2. Вставьте магниты и датчик / подключите USB-лампу
1. Поместите магнитный датчик Холла в часть тела для обнаружения магнита на вращающейся части.
2. Подключите USB-лампу, магнитный датчик Холла и Arduino Nano.
3. Вставьте магниты в отверстия.
Шаг 3. Код и схема
Схема ^
Код
/////// ДАТЧИК ЭФФЕКТА ЗАЛА /////////// #define NOFIELD 505L #define TOMILLIGAUSS 1953L
// Светодиод (коммутационная плата USB-разъема) к цифровому контакту 3
int led = 3;
// Датчик эффекта Холла к аналоговому выводу 0
int hall = A0;
// Строки ниже взяты из https://playground.arduino.cc/Code/HallEffect Роба Тиллаарта
int gauss;
int gaussX; int gauss2;
void setup () {pinMode (светодиод, ВЫХОД); pinMode (зал, ВХОД); Serial.begin (9600); }
void DoMeasurement ()
{int raw = analogRead (зал); длинная компенсация = raw - NOFIELD; // регулировка относительно отсутствия поля long gauss = компенсировано * TOMILLIGAUSS / 1000; // установить масштаб по Гауссу gaussX = constrain (gauss, 0, 500); gauss2 = map (gaussX, 0, 500, 0, 255); Serial.println (gauss2); // Serial.println (raw);
analogWrite (светодиод, gauss2);
}
пустой цикл ()
{DoMeasurement (); задержка (100); }
Шаг 4: Последний шаг
Выполнено.