Адресные светодиоды WS2812b neopixel.
- Войдите на сайт для отправки комментариев
Пнд, 25/12/2017 - 01:17
Приветствую, Вас, sent) Dress Возникла идея применения светодиодов, несколько раз естественно и забрасывал идею разобраться как они работают. Сейчас дела пошли в Go, но возникла еще одна проблема. Работаю со стандарт библиотека разрушить. Не могу понять, какие команды за что отвечают. Если есть понимающие в этой области люди, очень хочу выслушать. Пример эскиза, широко я DIR моменты, которые не дают мне покоя. Буду рад выслушать любые предположения!!! Спасибо всем за ранее)))
#включить <Adafruit_NeoPixel.ч>
директива #define BUTTON_PIN 2
#определить PIXEL_PIN 6 // цифровой IO пин подключен к NeoPixels.
#определить PIXEL_COUNT 6
Параметра // 1 = Количество пикселей в полоску, neopixel палка 8
// Параметр 2 = пин-код (большинство из них действует)
// Параметр 3 = пикселей Тип флаги, сложить вместе по мере необходимости:
// NEO_RGB пикселей проводной для RGB в битовый поток
// NEO_GRB пикселей проводной для grb потока, необходимая для neopixel палку
// NEO_KHZ400 400 кГц потока (например, Флора пикселей)
// NEO_KHZ800 800 кГц битового потока (например, высокой плотности светодиодные ленты), необходимая для neopixel палку
Adafruit_NeoPixel полосы = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ400);
боол oldstate содержат = высокая;
инт showType = 0;
настройка недействительными() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
полосы.начать();
полосы.показать(); // инициализация всех пикселей в 'off'
}
недействительными петля() {
// Получить текущее состояние кнопки.
боол новогогосударственного = digitalRead(BUTTON_PIN);
// Проверяем если состояние меняется от высокого до низкого (нажмите кнопку).
если (новогогосударственного == низкий && oldstate содержат == высокая) {
// Небольшая задержка с кнопкой дребезга.
задержка(20);
// Проверяем, если кнопка все еще низкий после дребезга.
новогогосударственного = digitalRead(BUTTON_PIN);
если (новогогосударственного == низкий) {
showType++;
если (showType > 3)
showType=0;
startShow(showType);
}
}
// Устанавливаем последнее состояние кнопки к старому государству.
oldstate содержат = новогогосударственного;
}
пустота startShow(инт я) {
выключателя(I){
случай 0: colorWipe(полосы.Цвет(0, 0, 0), 100); // Выключает светодиоды по очереди от 1 к последнему со счет 100 мсц
перерыв;
случай 1: Радуга(20);
перерыв;
случай 2: rainbowCycle(20);
перерыв;
случай 3: theaterChaseRainbow(50);
перерыв;
}
}
// Заполняем точками одна за другой с цветом
пустота colorWipe(uint32_t с, uint8_t ждать) {
для(uint16_t i=0; я<ленты.numPixels(); я++) {
полосы.setPixelColor(я, с);
полосы.показать();
задержка(ожидание);
}
}
пустота Радуга(uint8_t ждать) {
uint16_t I и J;
для(от J=0; J с<256; J++ в) {
для(я=0; я<ленты.numPixels(); я++) {
полосы.setPixelColor(я, колесо((я+к) & 255));
}
полосы.показать();
задержка(ожидание);
}
}
// Немного отличаться, это делает Радуга равномерно распределяется по всей
пустота rainbowCycle(uint8_t ждать) {
uint16_t I и J;
для(от J=0; J с<256*5; к++) {цикл // 5 всех цветов на колеса
для(я=0; я< ленты.numPixels(); я++) {
полосы.setPixelColor(я, колесо(((я * 256 / прокладка.numPixels()) + к) & 255));
}
полосы.показать();
задержка(ожидание);
}
}
//Театральном стиле ползут огни.
пустота theaterChase(uint32_t с, uint8_t ждать) {
для (int J=0 и; с J<10; J++ в) { //выполнить 10 циклов гнать
для (int г=0; г < 3; и Q++) {
для (int я=0; я < ленты.numPixels(); я=Я+3) {
полосы.setPixelColor(я+м, с); //включить каждый третий пиксель
}
полосы.показать();
задержка(ожидание);
для (int я=0; я < ленты.numPixels(); я=Я+3) {
полосы.setPixelColor(я+г, 0); //включить каждый третий пиксель от
}
}
}
}
//Театр-стиль ползания света с влиянием радуги
пустота theaterChaseRainbow(uint8_t ждать) {
для (int J=0 И; И J < 256; J++ в) { // цикл по всем 256 цветов в колеса
для (int г=0; г < 3; и Q++) {
для (int я=0; я < ленты.numPixels(); я=Я+3) {
полосы.setPixelColor(Я+М, колеса( (я+к) % 255)); //включить каждый третий пиксель
}
полосы.показать();
задержка(ожидание);
для (int я=0; я < ленты.numPixels(); я=Я+3) {
полосы.setPixelColor(я+г, 0); //включить каждый третий пиксель от
}
}
}
}
// Ввести значение от 0 до 255, чтобы получить значение цвета.
// Цвета переходная Р - Г - Б - назад, направо.
uint32_t колеса(байт WheelPos) {
WheelPos = 255 - WheelPos;
если(WheelPos < 85) {
вернуться полосы.Цвет(255 - WheelPos * 3, 0, WheelPos * 3);
}
если(WheelPos < 170) {
WheelPos -= 85;
вернуться полосы.Цвет(0, WheelPos * 3, 255 - WheelPos * 3);
}
WheelPos -= 170;
вернуться полосы.Цвет(WheelPos * 3, 255 - WheelPos * 3, 0);
}
Ддда лажа, только сейчас понял, что форум переводит текст
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
Это просто щит.
Вот здесь не пробовал запостить? Там точно помогут.
только сейчас понял,
Похоже, таки не понял.