Конечно ни куда он не левитирует, но при просмотре именно такое впечатление и создается. Иллюзию создает необычный корпус и бегущая светодиодная дорожка внутри корпуса светильника.
Давайте посмотрим видео с примером работы светильника.
Для изготовления такого светильника мастер использовал следующие
Инструменты и материалы:
-Arduino Nano;
-Перемычки;
-Неопиксельное светодиодное кольцо с 24-я светодиодами;
-Батарея 9В;
-Разъем батареи 9В;
-Мате;
-Леска;
-Клеевой пистолет;
-Паяльное оборудование;
-Доступ к лазерному резаку;








Шаг первый: электронная часть
Сначала мастер подготавливает электронику. Припаивает +(плюс) батарейного разъема (красный провод) к контакту VIN Ардуино, припаивает - (минус) разъема к GND платы.
Дальше нужно подключить светодиодное кольцо. На кольце четыре контакта DI, VCC и GND, и DO. Для этого проекта нужно подключить первых три. Подключает DI выводу D5, VCC к 5V, а GND - к GND Ардуино.
Шаг второй: корпус
Дальше мастер вырезает корпус с помощью лазерного резака. Удерживаться детали будут с помощью техники называемой тенсегрити*. Красными и синими линиями отмечена леска, которая соединяет две части корпуса. Скачать файл для лазерной резки можно ниже.
ProjPlans.ai

*Тенсегрити — принцип построения конструкций из стержней и тросов, в которых стержни работают на сжатие, а тросы — на растяжение.
Шаг третий: сборка
Дальше мастер приступает к сборке светильника.
Собирает части корпуса. Закрепляет леску.
Дальше приклеивает к диску светодиодное кольцо. На стойке закрепляет остальную электронику.
Приклеивает "липучку" к центру верней части корпуса и к кольцу. Соединяет кольцо с абажуром леской. Затем мастер просто прикрепит кольцо к корпусу липучкой. Такой способ крепления мастер выбрал на тот случай, если нужно будет заменить батарею.
Шаг четвертый: код
Дальше мастер загружает код и проверяет работу светильника.
#include// include the library to use the LED ring
#definePIN5// the pin which the LED ring is connected to
#defineNumPixels24// the number of pixels in the ring. there are rings with 8 LEDs, or you could use an LED strip with the Neopixels. Just remember to specify how many LEDs you have!
Adafruit_NeoPixel pixels(NumPixels, PIN, NEO_GRB + NEO_KHZ800); // declare the light object called pixels. The code will refer to the LED ring as this.
#defineDELAYVAL20// this decides how long the board should wait before the lights are rotated. If you make this smaller, then the rainbow colors will rotate even faster.
int r[NumPixels]; // this is the red value for all of the LEDs
int g[NumPixels]; // this is the green value for all of the LEDs
int b[NumPixels]; // this is the blue value for all of the LEDs
constint diff=31; // this sets the brightness value. The maximum number is 31, but any number x where 0 < x < 32 will work.
/////// Set the initial position of the lights ////////
voidsetLights(){
int R=8*diff,G=0,B=0; // the initial position of all of the LEDs
for(int i=0;i<8;i++,R-=diff,G+=diff){
r[i]=R;
g[i]=G;
b[i]=0;
}
for(int i=0;i<8;i++,G-=diff,B+=diff){
g[i+8]=G;
b[i+8]=B;
r[i+8]=0;
}
for(int i=0;i<8;i++,B-=diff,R+=diff){
r[i+16]=R;
b[i+16]=B;
g[i+16]=0;
}
}
/////// Finish setting the initial position of the LEDs ////////
voidsetup() {
pixels.begin(); // turn on the pixels object
setLights(); // set the initial position of the LEDs
}
int idx=0; // set the initial position of the LED rotation
voidloop() {
/////// set the color of each of the LEDs ////////
for(int i=0; i
pixels.setPixelColor(i, pixels.Color(r[(i+idx)%24], g[(i+idx)%24], b[(i+idx)%24]));
pixels.show();
}
/////// finish setting the color of the LEDs ////////
delay(DELAYVAL); // wait DELAYVAL milliseconds
idx++; // move the rotation of the LEDs by one
idx%=24; // mod the value by 24. This restricts the value of idx to between 0 and 23, inclusive
Все готово.
Источник (Source)
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.