Платформа предназначена для демонстрации кукол. Регулируется скорость и направление вращения.
Также регулируется подсветка платформы. Есть несколько режимов подсветки:
- выключена,
- постоянный цвет и яркость,
- постоянный цвет и меняющаяся яркость,
- все цвета по кругу (красный, зеленый, синий, желтый, пурпурный, голубой, белый) и постоянная яркость,
- все цвета и меняющаяся яркость,
Бюджетный вариант по компонентам. Сама платформа напечатана на 3d-принтере
Используемые компоненты:
- Arduino Nano - 1 шт
- Шаговый двигатель 28BYJ-48 с драйвером на микросхеме ULN2003 - 1 шт
- Bluetooth-модуль HC-05 - 1 шт
- Светодиодная лента RGB - 10-12 светодиодов
- Транзистор TIP120 - 3 шт
- Резистор 1 кОм - 3 шт
- RGB-светодиод - 1 шт
- Резистор 220 Ом - 3 шт
- Буззер - 1 шт
- Кнопка с колпачком - 3 шт
- Резистор 10 кОм - 3 шт
- Понижающий DC-DC преобразователь LM2596S - 1 шт
- Блок питания 12В 2А
Схема соединений
Настройка параметров движения и подсветки с помощью мобильного приложения, либо с помощью трех кнопок. Средняя кнопка - выбор режима настройки (при это RGB-светодиод горит определенным цветом):
№ | цвет RGB-светодиода | Режим | Кнопка1 | Кнопка3 | Подпрограмма |
0 | не горит | остановить платформу и выключить подсветку | остановить платформу | выключить подсветку | doButtons0() |
1 | красный | установка направление движения мотора | вращение по часовой | вращение против часовой | doButtons1() |
2 | зеленый |
установка скорость движения мотора |
уменьшение скорости |
увеличение скорости | doButtons2() |
3 | синий | установка максимальной яркости RGB-лента от brightRGBMin до brightRGBMmax с шагом brightRGBStep |
уменьшение яркости | увеличение яркости | doButtons3() |
4 | желтый | установка цвета RGB-лента | предыдущий | следующий | doButtons4() |
5 | фиолетовый | выбор длительности смены цвета RGB-ленты | длительность нажатия кнопки | doButtons5() | |
6 | голубой | выбор режима освещения RGB-лента 0 - не горит , 1 - пост. цвет и яркость, 2 - пост. цвет и меняющаяся яркость 0 --> max , 3 - все цвета и постоянная яркость, 4 - все цвета и меняющаяся яркость 0 --> max, |
предыдущий режим | следующий режим | doButtons6() |
7 | белый | сохранение текущих параметров в EEPROM получение настроек из EEPROM |
получение настроек из EEPROM | сохранение текущих параметров в EEPROM | doButtons7() |
Код на Arduino для определения нажатия кнопки или получения команды по bluetooth
void loop() { // данные по bluetooth if (stringComplete) { //Serial.println(inputString); if(parseHC05()) { //Serial.println("ok"); setParam(inHC05data[0],inHC05data[1]); } else { //Serial.println("no"); } // inputString = ""; stringComplete = false; } // проверка нажатия-отжатия кнопки int but=getButton(); if(but>0) { //Serial.println(but); switch(resSettings) { case 0: doButtons0(but); break; case 1: doButtons1(but); break; case 2: doButtons2(but); break; case 3: doButtons3(but); break; case 4: doButtons4(but); break; case 5: doButtons5(but); break; case 6: doButtons6(but); break; case 7: doButtons7(but); break; default: break; } } motor.runSpeed(); // освещение RGB-лента RGB(platform.numLight); }
За воспроизведение освещения отвечает функция RGB
struct PLATFORM { int dir; // направление движения мотора (-1, 0, 1) int speedMotor; // скорость движения мотора int numLight; // номер режима освещения // 0 - выкл, // 1 - пост. цвет и яркость, // 2 - пост. цвет и меняющаяся яркость, // 3 - все цвета и постоянная яркость, // 4 - все цвета и меняющаяся яркость, int color; // цвет int bright; // яркость //unsigned long pause; // скорость изменения яркости unsigned int pause; // скорость изменения яркости int currentColor; // текущий цвет int currentBright; // текущая яркость int dirCurrentBright; // текущее направление изменения яркости }; PLATFORM platform={-1,200,4,2,200,1000,2,10,1}; // RGB-лента void RGB(int res) { switch(res) { case 0: // выключить RGB setLedsLight(0,0,0); break; case 1: // один цвет на постоянной яркости setLedsLight(min(ledsSettings[platform.color][0],platform.bright), min(ledsSettings[platform.color][1],platform.bright), min(ledsSettings[platform.color][2],platform.bright)); break; case 2: // setLedsLight(min(ledsSettings[platform.color][0],platform.currentBright), min(ledsSettings[platform.color][1],platform.currentBright), min(ledsSettings[platform.color][2],platform.currentBright)); if(millis()-millisChangeRGB >= platform.pause/platform.bright) { platform.currentBright=platform.currentBright+platform.dirCurrentBright; if(platform.currentBright>platform.bright) { platform.dirCurrentBright=-1; platform.currentBright=platform.bright; } else if(platform.currentBright<0) { platform.dirCurrentBright=1; platform.currentBright=0; } millisChangeRGB=millis(); } break; case 3: setLedsLight(min(ledsSettings[platform.currentColor][0],platform.bright), min(ledsSettings[platform.currentColor][1],platform.bright), min(ledsSettings[platform.currentColor][2],platform.bright)); if(millis()-millisChangeRGB >= platform.pause) { platform.currentColor=max(1,(platform.currentColor+1)%8); millisChangeRGB=millis(); } break; case 4: setLedsLight(min(ledsSettings[platform.currentColor][0],platform.currentBright), min(ledsSettings[platform.currentColor][1],platform.currentBright), min(ledsSettings[platform.currentColor][2],platform.currentBright)); if(millis()-millisChangeRGB >= platform.pause/platform.bright) { platform.currentBright=platform.currentBright+platform.dirCurrentBright; if(platform.currentBright>platform.bright) { platform.dirCurrentBright=-1; platform.currentBright=platform.bright; } else if(platform.currentBright<0) { platform.dirCurrentBright=1; platform.currentBright=0; platform.currentColor=max(1,(platform.currentColor+1)%8); } millisChangeRGB=millis(); } break; default: break; } }
Полный скетч можно скачать по ссылке ниже
Вид приложения на Android (написано в программе app2inventor)
Stl файлы для печати корпуса созданы в программе Tinkercad.
И фото устройства
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
Плата Arduino | Arduino Nano 3.0 | 1 | Поиск в магазине Отрон | |||
Шаговый двигатель | 28BYJ-48 | 1 | Поиск в магазине Отрон | |||
Драйвер | на микросхеме ULN2003 | 1 | Поиск в магазине Отрон | |||
Bluetooth-модуль | HC-05 | 1 | Поиск в магазине Отрон | |||
Биполярный транзистор | TIP120 | 3 | Поиск в магазине Отрон | |||
Резистор | 220 Ом | 3 | Поиск в магазине Отрон | |||
Резистор | 1 кОм | 3 | Поиск в магазине Отрон | |||
Светодиод | RGB | 1 | Поиск в магазине Отрон | |||
Кнопка | 3 | Поиск в магазине Отрон | ||||
Резистор | 10 кОм | 3 | Поиск в магазине Отрон | |||
Буззер | 1 | Поиск в магазине Отрон | ||||
Светодиодная лента | RGB | 1 | Поиск в магазине Отрон | |||
Понижающий DC-DC преобразователь | LM2596S | 1 | Поиск в магазине Отрон | |||
Блок питания | 12В 2А | 1 | Поиск в магазине Отрон | |||
Скачать список элементов (PDF)
Прикрепленные файлы:
- DollsRotatePlatform01_(1).zip (60 Кб)
- Dolls_platform_stl.zip (12 Кб)
- dolls_platform_01_end.zip (8 Кб)
Комментарии (2) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]