"Ручное облако" под управлением Arduino

09 апреля 2017

Сегодня мы создадим светильник ночник в виде пушистого облака, управляться который будет, при помощи платы Arduino LilyPad USB - ATmega32U4 Board. Проект довольно прост и отлично подойдет для знакомства с данной платформой.


Используемые материалы

  • Холлофайбер;
  • Деревянные шпажки;
  • Arduino LilyPad USB - ATmega32U4 Board;
  • Кольцо YwRobot Rainbow;
  • Бокс для 3х ААА батареек с кнопкой включения/выключения;
  • Пенопласт;
  • Соединительные провода.

Соединяем кольцо с платой Arduino

Способ соединения одинаковый для всех типов колец: VCC – VOUT; IN - A1; GND – GND.

Корпус

Следующим шагом необходимо поместить плату и кольцо в предварительно подготовленный шар из пенопласта. Закрепить все это внутри можно при помощи клея.

Далее вставляем деревянные шпажки в шар. И также крепим при помощи клея. Они будут служить каркасом для крепления холлофайбера.

Следующим шагом вырезаем в шаре отверстия для батарей. Устанавливаем и крепим их при помощи двусторонней клейкой ленты или клея.

Осталось только придать нашему облаку форму. Для этого клеим кусочки холлофайбера к шпажкам, пока они полностью не закроются.

Код

Первым делом необходимо добавить библиотеку Neopixel Adafruit.

Наш код придает облаку приятный эффект радуги.

}

// Fill the
dots one after the other with a color

void
colorWipe(uint32_t c, uint8_t wait) {

  for(uint16_t i=0; i<strip.numPixels();
i++) {

 strip.setPixelColor(i, c);

 strip.show();

 delay(wait); 

  } 

}

void
rainbow(uint8_t wait) {

  uint16_t i, j;

  for(j=0; j<256; j++) {

    for(i=0; i<strip.numPixels(); i++){ 

strip.setPixelColor(i,Wheel((i+j)
& 255));

 } 

strip.show();

delay(wait);

 }

}

// Slightly
different, this makes the rainbow equally distributed throughout

void
rainbowCycle(uint8_t wait) {

  uint16_t i, j;

 for(j=0; j<256*5; j++) { // 5 cycles of all
colors on wheel

    for(i=0; i< strip.numPixels(); i++) {

      strip.setPixelColor(i, Wheel(((i * 256 /
strip.numPixels()) + j) & 255));

    }

    strip.show();

    delay(wait);

  }

}

// Input a
value 0 to 255 to get a color value.

// The
colours are a transition r - g - b - back to r.

uint32_t
Wheel(byte WheelPos) {

  WheelPos = 255 - WheelPos;

  if(WheelPos < 85) {

    return strip.Color(255 - WheelPos * 3, 0,
WheelPos * 3);

  }

  if(WheelPos < 170) {

    WheelPos -= 85;

    return strip.Color(0, WheelPos * 3, 255 -
WheelPos * 3);

  }

  WheelPos -= 170;

  return strip.Color(WheelPos * 3, 255 -
WheelPos * 3, 0);

}

На этом все. Наш ночник полностью готов к работе.

Статья является авторским переводом с сайта instructables.com.


Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.


Поделиться: