Платформа предназначена для демонстрации кукол. Регулируется скорость и направление вращения.
Также регулируется подсветка платформы. Есть несколько режимов подсветки:
- выключена,
- постоянный цвет и яркость,
- постоянный цвет и меняющаяся яркость,
- все цвета по кругу (красный, зеленый, синий, желтый, пурпурный, голубой, белый) и постоянная яркость,
- все цвета и меняющаяся яркость,
Бюджетный вариант по компонентам. Сама платформа напечатана на 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 | ||||