Skip to content

Instantly share code, notes, and snippets.

@gelicia
Created June 22, 2015 02:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gelicia/fd67649baccbb150feab to your computer and use it in GitHub Desktop.
Save gelicia/fd67649baccbb150feab to your computer and use it in GitHub Desktop.
#include <Adafruit_NeoPixel.h>
#define LLEDPIN 10
#define LBUTTONPIN 2
#define RLEDPIN 11
#define RBUTTONIN 3
int leftOldButtonState = 0;
int leftCount = 0;
int rightOldButtonState = 0;
int rightCount = 0;
int buttonOnSensitivity = 1;
int buttonWaitSensitivity = 5;
int leftButtonState = HIGH;
int rightButtonState = HIGH;
int lSignalOn = 0;
int rSignalOn = 0;
Adafruit_NeoPixel l_arrow = Adafruit_NeoPixel(3, LLEDPIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel r_arrow = Adafruit_NeoPixel(3, RLEDPIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(9600);
pinMode(LBUTTONPIN, INPUT);
pinMode(RBUTTONIN, INPUT);
pinMode(LLEDPIN, OUTPUT);
pinMode(RLEDPIN, OUTPUT);
}
void loop() {
leftButtonState = digitalRead(LBUTTONPIN);
rightButtonState = digitalRead(RBUTTONIN);
if (leftButtonState == LOW && leftOldButtonState == LOW){
if(lSignalOn == 0 && leftCount >= buttonOnSensitivity){
lSignalOn = 1;
}
else if(lSignalOn == 1 && leftCount >= buttonWaitSensitivity){
lSignalOn = 0;
}
leftCount++;
}
else{
if (leftButtonState != leftOldButtonState){
leftCount = 0;
}
else {
leftCount++;
}
}
if (rightButtonState == LOW && rightOldButtonState == LOW){
if(rSignalOn == 0 && rightCount >= buttonOnSensitivity){
rSignalOn = 1;
}
else if(rSignalOn == 1 && rightCount >= buttonWaitSensitivity){
rSignalOn = 0;
}
rightCount++;
}
else{
if (rightButtonState != rightOldButtonState){
rightCount = 0;
}
else {
rightCount++;
}
}
if (lSignalOn == 1){
lOn();
}
else {
lOff();
}
if (rSignalOn == 1){
rOn();
}
else {
rOff();
}
Serial.println(leftCount);
leftOldButtonState = leftButtonState;
rightOldButtonState = rightButtonState;
delay(100);
}
void lOn() {
if (leftCount % 2 == 0){
lOff(); // I want this to blink when it's on
}
else {
for(uint16_t i=0; i<l_arrow.numPixels(); i++) {
l_arrow.setPixelColor(i, l_arrow.Color(255,0,0));
}
l_arrow.show();
}
}
void lOff() {
for(uint16_t i=0; i<l_arrow.numPixels(); i++) {
l_arrow.setPixelColor(i, l_arrow.Color(0,0,0));
}
l_arrow.show();
}
void rOn() {
if (rightCount % 2 == 0){
rOff(); //I want this to blink when it's on
}
else {
for(uint16_t i=0; i<r_arrow.numPixels(); i++) {
r_arrow.setPixelColor(i, r_arrow.Color(255,0,0));
}
r_arrow.show();
}
}
void rOff() {
for(uint16_t i=0; i<r_arrow.numPixels(); i++) {
r_arrow.setPixelColor(i, r_arrow.Color(0,0,0));
}
r_arrow.show();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment