Съдържание:
- Стъпка 1: Изисквания
- Стъпка 2: Разбиране на хардуера и софтуера
- Стъпка 3: Настройване на компонентите
- Стъпка 4: Кодиране
Видео: Промяна на цвета на нощната светлина с помощта на Ardruino 101: 4 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
В този проект ще правите нощна лампа, използвайки ardruino, Adafruit neo rgb Strips и 3D принтер.
Обърнете внимание, че този натрапчив е само за моя училищен проект. Кодът за този проект се основава на друг проект. С това казано, че не съм експерт, що се отнася до Ардруино.
Стъпка 1: Изисквания
За този проект ще ви трябват следните хардуер и инструменти
Хардуер:
1 - Ardruino101 (в САЩ) или Genuino101 (за извън САЩ).
2 - NeoPixel rgb led ленти от adafruit (5 волта).
3 - USB конектор ardruino (конектор тип B към A).
4 - Софтуер от Ardruino, Ardruino IDE В този урок ще използваме версията 1.8.5. Изискванията към софтуерната библиотека са: 101, Adafruit NeoPixel и Madgwick.
5 -И обект, който да съхранява вашия хардуер. В този случай ще използвам 3D принтер. Файлът за този 3D печат се намира в описанията, наречени "Lamp Head". Имайте предвид, че този файлов формат не е готов за 3D печат. В зависимост от вашите 3D принтери, първо трябва предварително да стартирате определения 3D софтуер за печат върху 3D обекта. Понякога мащабът на 3D отпечатването ще се нулира. затова се уверете, че диаметърът е зададен на 11 cm на 11 cm.
6 - Основен комплект за запояване.
Стъпка 2: Разбиране на хардуера и софтуера
Ардруин/Генуино101
Само за да изясним Ardruino101 и genuino101 са абсолютно еднакви до имената. И двете имат еднакви спецификации и използват един и същ софтуер.
Ardruino101 притежават основните спецификации като ardruino UNO и други. Основната характеристика на ardruino101 е акселерометърът и жироскопът, които ще използваме в нашия проект. Също така този тип ardruino имат своята уникална библиотека с кодове, наречена CurrieIMU (Вътрешни мерни единици), която е включена в библиотечното разширение 101.
С казаното нека поговорим за софтуера.
Софтуер и библиотеки
Ardruino IDE използва python като основен изходен код. това е и основният платформен код, където работи повечето ardruino. Има много уроци онлайн за това как да използвате този софтуер, така че препоръчвам първо да ги проучите, ако сте нов в тази програма.
Като се има предвид това, библиотеките, които използваме, са следните:
От менюто Sketch,> Include Library> Manage Libraries … В полето за въвеждане на текст въведете
- 101 Стандартно ardruino 101 не се включва автоматично в ardruino IDE. Нуждаем се от това разширение на библиотеката, за да кодираме нашия тип ardruino.
-Adafruit NeoPixel за кодиране на нашите Neo пикселни ленти.
-Madgwick За да се четат необработените данни и да се изчисляват тези данни към необработени, питч и рол.
Не RGB ленти
Типът, който ще използвам, е тип 5 напрежение или 5v. С този 5v нямам нужда от разширен източник на захранване, за да контролирам лентите си. Вместо това ще използвам ardruino като източник на захранване за контрол и осветяване на лентите.
Ето няколко съвета, които трябва да знаете, преди да започнете с тези ленти.
Първо ще ви трябват Neodigital RGB LED ленти от adafruit. Този вид ленти може да се управлява с помощта на кодове. След това трябва да знаете, че на тези ленти има задна и челна страна. Този гръб и лицевата страна са важни за запояването. Уверете се, че сте запоявали предната страна, където клавишът със стрелка сочи далеч от върха.
Ето ръководство за това как да ги използвате.
Има 3 точки на спойка, които трябва да имате предвид Заземяващата връзка (GND), Напрежената връзка (V) и Пин връзката (DIN).
Стъпка 3: Настройване на компонентите
Първо ще трябва да отпечатате 3D компонента, който можете да намерите в изискванията. В този случай ще използвам PLA. Уверете се, че диаметърът на общия предмет е 11 см на 11 см. Това ще гарантира, че ardruino и лентите ще се поберат в shpere. Имайте предвид, че всеки 3D принтер използва различни софтуерни програми, за да изчисли процеса на печат. Като се има предвид това, файлът, който използвате, може да се мащабира различно, така че имайте това предвид.
Второ след отпечатването се уверете, че компонентите могат да се затворят. 3D отпечатъците заедно образуват сфера. Те трябва да стоят добре. Ако компонентът трябва да се загуби, добавете малко лента към вътрешната страна, така че капачката да е пълна. И ако е с дебелина, използвайте шкурка.
Трето, скематиците за ardruino и лентите са доста лесни. Ще използвате 3 проводника, за да свържете лентите към ardruino. Обърнете внимание, че единственото място, където запоявам, е върху лентите. не на самия Ардруино.
GND отива към GND
DIN отива към Pin (в нашия случай pin6 на ardruino)
5V преминава към 5V
Уверете се, че количеството на светодиодните ленти, които използвате, е ограничено на 30. Така че и това няма да успее да изпълни правилно кода. Можете просто да изрежете всякакви ненужни ленти, показани с ножичен знак.
Четвъртото нещо трябва да се вписва добре в сферата. Може да харесате, че направих пресечна точка между 1 от 3D отпечатъка, за да видя коритото и да поставя пластмасово корито на върха.
Стъпка 4: Кодиране
Така че досега трябва да имате всички необходими компоненти във вашата библиотека.
Ето кода, който ще ви е необходим, за да стартирате проекта. Резултатът трябва да изглежда като видео връзката, която изпращам на тази страница.
Източникът на този код може да се намери тук. Този проект включва и неотложните стъпки за по -добро разбиране на кода и алгаритмите зад употребите.
#включи #включи #включи #включи
#define PIN 6 // 11 пиксела NeoPixel Strip
#define PIN1 7 // 1 пиксел NeoPixel Strip #define NUMPIXELS 30 // Брой пиксели #дефинирайте SAMPLE_RATE 25 // Честота на дискретизация за акселерометър и жироскоп
// Конфигурация на Madgwick
Филтър Madgwick; без подпис дълги microsPerReading, microsPrevious; float accelScale, gyroScale;
// Конфигурация на NeoPixel
Adafruit_NeoPixel пиксели = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel pixelsStatus = Adafruit_NeoPixel (1, 7, NEO_GRB + NEO_KHZ800);
// Цветни пространства
RGBConverter rgbConverter; двойно h = 1; двойно s = 1; двойно v = 1; байт rgb [3];
// Статусна лампа за движение
// Състояние 0 -> Избор на нюанс -Стъпка // Състояние 1 -> Избор на наситеност -Ролка // Състояние 2 -> Избор на стойност -Изкривяване // Състояние 3 -> Поправяне на променлив цвят int statusLamp = 0;
void setup () {
Serial.begin (9600);
// стартира IMU и филтрира
CurieIMU.begin (); CurieIMU.setGyroRate (SAMPLE_RATE); CurieIMU.setAccelerometerRate (SAMPLE_RATE); filter.begin (SAMPLE_RATE);
// Задайте обхвата на акселерометъра на 2G
CurieIMU.setAccelerometerRange (2); // Задайте диапазона на жироскопа на 250 градуса/секунда CurieIMU.setGyroRange (250);
CurieIMU.autoCalibrateAccelerometerOffset (X_AXIS, 0);
CurieIMU.autoCalibrateAccelerometerOffset (Y_AXIS, 0); CurieIMU.autoCalibrateAccelerometerOffset (Z_AXIS, 1); CurieIMU.autoCalibrateGyroOffset ();
CurieIMU.attachInterrupt (eventCallback);
CurieIMU.setDetectionThreshold (CURIE_IMU_TAP, 950); CurieIMU.прекъсва (CURIE_IMU_TAP);
// инициализира променливите, за да ускорява актуализациите, за да коригира скоростта
microsPerReading = 1000000 / SAMPLE_RATE; microsPrevious = micros ();
// Init NeoPixel 11
pixels.begin (); pixels.show ();
// Init NeoPixel 1
pixelsStatus.begin (); pixels.show ();
// Показване на състоянието в px
setStatusPixel (statusLamp); }
void loop () {
int aix, aiy, aiz; // акселерометър int gix, giy, giz; поплавъчна брадва, ай, аз; float gx, gy, gz; поплавъчна ролка, стъпка, криволичене; статични неподписани дълги microsNow;
// проверяваме дали е време за четене на данни и актуализиране на филтъра
microsNow = micros (); if (microsNow - microsPrevious> = microsPerReading) {
// чете необработени данни от CurieIMU
CurieIMU.readMotionSensor (aix, aiy, aiz, gix, giy, giz);
// конвертираме от необработени данни в гравитация и градуси/секунди
ax = convertRawAcceleration (aix); ay = convertRawAcceleration (aiy); az = convertRawAcceleration (aiz); gx = convertRawGyro (gix); gy = convertRawGyro (giy); gz = convertRawGyro (giz);
// актуализира филтъра, който изчислява ориентацията
filter.updateIMU (gx, gy, gz, ax, ay, az);
// отпечатайте заглавието, височината и ролката
roll = filter.getRoll (); pitch = filter.getPitch (); yaw = filter.getYaw ();
// увеличаваме предишния път, така че поддържаме правилното темпо
microsPrevious = microsPrevious + microsPerReading;
// Само ако промените Hue, Saturation или Value
if (statusLamp изберете Hue if (височина> = -90 && височина <= 90 && statusLamp == 0) {// Трансформирайте ъгъл на стъпка = височина + 90; // Получава цветни кординати от ъгли h = стъпка / 180.0;}
// Ограничения за ъгли
// само ролка -90º до 90º = 180º // Състояние 1 -> изберете Saturation if (roll> = -90 && roll <= 90 && statusLamp == 1) {// Трансформирайте ъгъл roll = roll + 90; // Получава цветни кординати от ъгли s = ролка / 180.0; }
// Състояние 2 -> изберете стойност
if (statusLamp == 2) {// криволичене 0º до 360º v = криволичене / 360,0; }
// Конвертиране в rgb
rgbConverter.hsvToRgb (h, s, v, rgb); /* Serial.print ("Цвят:"); Serial.print (h); Serial.print (" -"); Serial.print (s); Serial.print (" -"); Serial.print (v); Serial.println ("");
Serial.print ("Ориентация:");
Serial.print (криволичене); Serial.print (""); Serial.print (стъпка); Serial.print (""); Serial.println (ролка); */
// Промяна на цвета на пикселите
for (int px = 0; px <NUMPIXELS; px ++) {pixels.setPixelColor (px, pixels. Color (rgb [0], rgb [1], rgb [2])); pixels.show (); }}
// Показване на състоянието в px
setStatusPixel (statusLamp); }}
float convertRawAcceleration (int aRaw) {
// тъй като използваме 2G обхват // -2g карти до сурова стойност от -32768 // +2g карти до сурова стойност от 32767
поплавък a = (aRaw * 2.0) / 32768.0;
връщане a; }
float convertRawGyro (int gRaw) {
// тъй като използваме диапазон от 250 градуса/секунди // -250 карти до сурова стойност от -32768 // +250 карти до сурова стойност от 32767
поплавък g = (gRaw * 250.0) / 32768.0;
връщане g; }
static void eventCallback ()
{// Откриване на докосване по цялата ос, ако (CurieIMU.getInterruptStatus (CURIE_IMU_TAP)) {Serial.print ("Докоснете открита statusLamp:"); Serial.println (statusLamp);
// Промяна на състоянието
statusLamp ++;
// Init състояние
if (statusLamp> 3) {statusLamp = 0; }}}
void setStatusPixel (int statusPx)
{switch (statusPx) {case 0: pixelsStatus.setPixelColor (0, pixelsStatus. Color (150, 0, 0)); pixelsStatus.show (); прекъсване; случай 1: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 150, 0)); pixelsStatus.show (); прекъсване; случай 2: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 0, 150)); pixelsStatus.show (); прекъсване; случай 3: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 0, 0)); pixelsStatus.show (); прекъсване;
}
}
Препоръчано:
Лесна промяна на цвета, базирана на наклона, безжична лампа с куб Рубик: 10 стъпки (със снимки)
Лесна промяна на цвета, базирана на наклона, безжична лампа с кубик на Рубик: Днес ще изградим тази страхотна лампа с кубик на Рубик, която променя цвета в зависимост от това коя страна е нагоре. Кубът работи на малка LiPo батерия, заредена от стандартен micro-usb кабел и, според моите тестове, има живот на батерията от няколко дни. Това
Промяна на цвета LED пръстен светлина: 11 стъпки
Променяща цвета LED LED пръстен: Днес ще направим 20 инчова LED променлива светлина с променящ се цвят. Знам, че пръстеновите светлини обикновено са с кръгла форма, но тази ще бъде квадратна, за да направи нещата малко по -лесни. Този мини проект е предимно за фотографи, които се нуждаят от бюджет
Светеща китара за промяна на цвета: 49 стъпки (със снимки)
Светеща китара за промяна на цвета: В кралството на рокендрола е важно да се отличите. С милиони хора в този свят, които могат да свирят на китара, просто да свириш добре просто няма да го отрежеш. Имате нужда от нещо допълнително, за да се издигнете като рок бог. Помислете за този гу
RGB LED Евтина и лесна промяна на цвета нощна светлина: 3 стъпки
RGB LED евтина и лесна промяна на цвета на нощна светлина: Този проект беше доста лесен, след като се заиграх и го измислих, което отне известно време. Идеята е да можете да промените цвета с превключвател и да имате LED опции за затъмняване също. Това са елементите, които ще трябва да
Нощната светлина на приятелката: 34 стъпки (със снимки)
Нощната лампа на приятелката: За първи път ми хрумна идеята за нощната лампа на приятелката, когато моята половинка разкри, че се страхува от тъмното и не може да спи без включен телевизор. Тъй като съм лесно разсеян, не мога да спя, когато телевизорът е включен. & Nb