ws2812 дхо для электро самоката

jurafuxman
Offline
Зарегистрирован: 25.07.2014

Приветствую всех! есть идея собрать ДХО для самоката. Самодел. Пробую на ws2812+Nano. Простое подключение. Несколько контактов замыкаются на землю, подают сигнал. включается либо поворотник либо стоп сигнал,или ходовые огни. подключил одну кнопку типо поворот,8 диодов ws2812 красиво пробегают и гаснут. проблем нет. ПРОБЛЕМЫ:  невтыкаю как подключить вторую кнопку-не сробатывает,как заставить бежать огоньки в другую сторону. ну и в режиме тормоза как бы с концов бежало в центр. количество диодов не принципиально и может варироватся. помогайте пожалуйсто. в кодинге лох.

// Пример использования библиотеки GyverButton, все возможности в одном скетче.

#define BTN_PIN1 3				// кнопка подключена сюда (BTN_PIN --- КНОПКА --- GND)
#define BTN_PIN2 4
#include "GyverButton.h"
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif


#define PIN1  6 
#define PIN2  7 


#define NUMPIXELS 8 // Popular NeoPixel ring size
#define NUMPIXELS2 8 // Popular NeoPixel ring size


Adafruit_NeoPixel pixel_1(NUMPIXELS, PIN1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixel_2(NUMPIXELS2, PIN2, NEO_GRB + NEO_KHZ800);

#define DELAYVAL 90 // Time (in milliseconds) to pause between pixels

GButton butt1(BTN_PIN1);
GButton butt2(BTN_PIN2);


int value = 0;

void setup() {
  Serial.begin(9600);
  pixel_1.clear();
  pixel_2.clear();
  butt1.setDebounce(50);        // настройка антидребезга (по умолчанию 80 мс)
  butt1.setTimeout(200);        // настройка таймаута на удержание (по умолчанию 500 мс)
  butt1.setClickTimeout(600);   // настройка таймаута между кликами (по умолчанию 300 мс)
  butt1.setType(HIGH_PULL);
  butt1.setDirection(NORM_OPEN);
  butt2.setDebounce(50);        // настройка антидребезга (по умолчанию 80 мс)
  butt2.setTimeout(200);        // настройка таймаута на удержание (по умолчанию 500 мс)
  butt2.setClickTimeout(600);   // настройка таймаута между кликами (по умолчанию 300 мс)
  butt2.setType(HIGH_PULL);
  butt2.setDirection(NORM_OPEN);
//  #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
//  clock_prescale_set(clock_div_1);
//#endif
  // END of Trinket-specific code.

  pixel_1.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
  pixel_2.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}

void L_light(){
   pixel_1.clear();   
    for(int i=-1; i<NUMPIXELS; i++) { 
    pixel_1.setPixelColor(i, pixel_1.Color(150, 0, 0));
    pixel_1.show(); 
    delay(DELAYVAL); 
    } 
}

void R_light(){
   pixel_2.clear();   
    for(int i=-1; i<NUMPIXELS2; i++) { 
    pixel_2.setPixelColor(i, pixel_2.Color(150, 0, 0));
    pixel_2.show(); 
    delay(DELAYVAL); 
    } 
}



void dlight2(){
   pixel_1.clear();   
   pixel_1.setPixelColor(4, pixel_1.Color(150, 0, 0));
   pixel_1.setPixelColor(5, pixel_1.Color(150, 0, 0));
   pixel_1.setPixelColor(6, pixel_1.Color(150, 0, 0));
   pixel_1.setPixelColor(7, pixel_1.Color(150, 0, 0));
   pixel_1.show(); 
   delay(10); 
      } 


void stoplight2(){
   pixel_1.clear();   
    for(int i=-1; i<NUMPIXELS; i++) { 
    pixel_1.setPixelColor(i, pixel_1.Color(0, 0, 0));
    pixel_1.show(); 
    delay(10); 
      } 
}

void stoplight3(){
   pixel_2.clear();   
    for(int i=-1; i<NUMPIXELS2; i++) { 
    pixel_2.setPixelColor(i, pixel_2.Color(0, 0, 0));
    pixel_2.show(); 
    delay(10); 
      } 
}
void loop() {
  butt1.tick();  // обязательная функция отработки. Должна постоянно опрашиваться
  butt2.tick();  // обязательная функция отработки. Должна постоянно опрашиваться
  pixel_1.clear();
  pixel_2.clear();
  if (butt1.isClick()) L_light();  return; // проверка на удержание
  if (butt2.isClick()) R_light();  return;  // проверка на удержание
  //if (butt2.isRelease())stoplight3();
  //if (butt1.isRelease())stoplight2();
  
  //dlight2();return;
  pixel_1.clear(); 
  pixel_2.clear();
  
  }



void stoplight(){
   pixel_1.clear();   
    for(int i=-1; i<NUMPIXELS; i++) { 
    pixel_1.setPixelColor(i, pixel_1.Color(250, 0, 0));
    pixel_1.show(); 
    delay(DELAYVAL);   
        
    }
}

  

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

jurafuxman пишет:

 помогайте пожалуйсто. 

Какой именно помощи Вы ждёте?

1. Пожелать Вам удачи? Желаю!
2. Ответить на Ваши вопросы? Вы забыли их задать.
3. Написать код вместо Вас? Для таких запросов на форуме есть специальный раздел.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

Какой именно помощи Вы ждёте?

3. Написать код вместо Вас? Для таких запросов на форуме есть специальный раздел.

а ведь придётся, а то внуки гоняют на тележке без ДХО )))