Logo

Cлучайные товары

Лазер 2,5 Вт с TTL модулем
Мотор-редуктор с колесами

Посмотреть товар в Магазине »

Мы в соц сетях


Подпишись на канал
Мы на facebook

Умный ночник на Arduino и адресных светодиодах WS2811

.Умный ночник на Arduino и адресных светодиодах WS2811

В интернете большое количество проектов на Arduino с использованием адресных светодиодов и лент WS2812. Я тоже решил сделать пару проектов на данных замечательных светодиодах WS2811.

При создании проекта были использованный следующие материалы:

1. Адресные светодиоды

2. Arduino Nano

3. Тактовые кнопки

Сделал я вот такой ночник с двумя режимами и регулированием яркости.

Сделал я вот такой ночник на Arduino и ленте  WS2812

Первый режим плавно изменяет цвет светодиодов со сдвигом на один. Второй режим светит обычным белым цветом.

Регулирование яркости изменяет яркость на 20%.

Программа сделана практически на стандартных примерах которые устанавливаются с библиотекой FastLED.

Установить библиотеку FastLED можно из менеджера библиотек.

Установить библиотеку FastLED

Или скачать архив отсюда и установить библиотеку FastLED

Скетч небольшой и прокомментирован.

#include <FastLED.h>

#define LED_PIN     6
byte button_rejim = 2;  // кнопка режим
byte button_yarkast = 3;  // кнопка яркасть
int rejim = 0;       // текущий режим
int yarkast = 100;       // текущая яркасть 
boolean lastButten = LOW;     // предыдущее состояние кнопки
boolean currentButten = LOW;  // текущее состояние кнопки

boolean lastButten2 = LOW;     // предыдущее состояние кнопки 2
boolean currentButten2 = LOW;  // текущее состояние кнопки 2

// Information about the LED strip itself
#define NUM_LEDS    15
#define CHIPSET     WS2811
#define COLOR_ORDER GRB
CRGB leds[NUM_LEDS];

// How many seconds to show each temperature before switching
#define DISPLAYTIME 20
// How many seconds to show black between switches
#define BLACKTIME   3

void setup() {
  pinMode(button_rejim, INPUT_PULLUP); // настроить пин кнопки
  pinMode(button_yarkast, INPUT_PULLUP); // настроить пин кнопки
  //delay( 3000 );
  FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalSMD5050 );
  
}

boolean debvance (boolean last) //убираем дребизг 1
{
  boolean current = digitalRead (button_yarkast); // считываем данные с кнопки
  if (last != current) // Если текущее состояни еотличететься от предыдущего 
  {
   delay (5);   // Ждем 5 милисек.
   current = digitalRead (button_yarkast); // Присваеваем текущее состояние кнопки
    return current; 
  }
}

boolean debvance2 (boolean last) //убираем дребизг 2
{
  boolean current = digitalRead (button_rejim); // считываем данные с кнопки
  if (last != current) // Если текущее состояни еотличететься от предыдущего 
  {
   delay (5);   // Ждем 5 милисек.
   current = digitalRead (button_rejim); // Присваеваем текущее состояние кнопки
    return current; 
  }
}

void loop(){
  currentButten = debvance (lastButten); // Передаем функции дребезга значение по умолчанию LOW 
  if (lastButten == LOW && currentButten == HIGH) // Проверяем отпускали мы кнопку или нет
  {
    yarkast  = yarkast+50; // увеличиваем яркость 
  }
 lastButten =  currentButten;  // Переприсваеваем прошлое состояние кнопки
  if (yarkast > 250)
    yarkast = 0;

  currentButten2 = debvance2 (lastButten2); // Передаем функции дребезга значение по умолчанию LOW 
  if (lastButten2 == LOW && currentButten2 == HIGH) // Проверяем отпускали мы кнопку или нет
  {
    rejim  = !rejim; // изменяем режим
  }
 lastButten2 =  currentButten2;  // Переприсваеваем прошлое состояние кнопки   

if (rejim)
{
  FastLED.setBrightness( yarkast );
  static uint8_t starthue = 0;
  fill_rainbow( leds, NUM_LEDS, ++starthue, 40);

}
else
{

  static uint8_t hue;
     for(int i = 0; i < NUM_LEDS; i++) {   
      leds[i] = CHSV(0,0,yarkast); 
     }
} 
   FastLED.show();
   FastLED.delay(10);
}

Я думаю вопросов не должно быть. Но если что то не работает пишите будем разбираться.


Подписывайтесь на мой канал на Youtube и вступайте в группы в Вконтакте и Facebook.

Спасибо за внимание!

Вернуться в раздел: Проекты на Arduino Дата публикации 15 января , 2018

Яндекс.Метрика

Portal-PK (Портал ПК) © 2015 - 2018 MiniYiiCMS Заказать сайт: f-studio.biz
Обратная связь
Вопрос-Ответ