В интернете большое количество проектов на Arduino с использованием адресных светодиодов и лент WS2812. Я тоже решил сделать пару проектов на данных замечательных светодиодах WS2811.
При создании проекта были использованный следующие материалы:
2. Arduino Nano
Сделал я вот такой ночник с двумя режимами и регулированием яркости.
Первый режим плавно изменяет цвет светодиодов со сдвигом на один. Второй режим светит обычным белым цветом.
Регулирование яркости изменяет яркость на 20%.
Программа сделана практически на стандартных примерах которые устанавливаются с библиотекой 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);
}
Я думаю вопросов не должно быть. Но если что то не работает пишите будем разбираться.
Понравилась статья? Поделитесь ею с друзьями:
Вернуться в раздел: Проекты на Arduino Дата публикации 15 января , 2018
Читайте также
Красивый ночник, хотя и из подручных средств. Деревяшку хорошо бы покрасить.
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.