Paso 3: Paso 3: ardino código y protoboard
Comencé con el siguiente código y un botón con la configuración que se muestra a la tira de led de alimentación.
CÓDIGO:
Esto es una demostración sobre cómo utilizar un dispositivo de entrada para desencadenar cambios en los píxeles de neo.
Debe cable pulsador momentáneo para conectarse desde un pin del IO digital. Cuando usted
Pulse el botón cambiará a una nueva animación de píxeles. Tenga en cuenta que debe presionar la
una vez el botón para iniciar la primera animación!
#include
#define BUTTON_PIN 2 / / pin IO Digital conectado al botón. Se trata de
conducido con un resistor de pull-up por lo que el interruptor debe
Tire de la clavija a tierra momentáneamente. En un alto -> bajo
transición que se ejecutará la lógica de la prensa de botón.
#define PIXEL_PIN 6 / pin IO Digital conectado a la NeoPixels.
#define PIXEL_COUNT 30
Parámetro 1 = número de pixeles en la tira, neopixel palillo tiene 8
Parámetro 2 = número de pin (la mayoría son válidos)
Parámetro 3 = píxeles tipo banderas, sumar como sea necesario:
NEO_RGB píxeles están cableados para flujo de bits RGB
NEO_GRB píxeles están cableados para GRB bitstream, correcto para el palillo de neopixel
NEO_KHZ400 400 KHz bitstream (por ejemplo píxeles de FLORA)
NEO_KHZ800 800 KHz bitstream (p. ej. tira de LED de alta densidad), corregir para el palillo de neopixel
Tira de Adafruit_NeoPixel = Adafruit_NeoPixel (PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
bool oldState = alta;
int showType = 0;
void setup() {}
pinMode (BUTTON_PIN, INPUT_PULLUP);
Strip.Begin();
Strip.Show(); Inicializar todos los píxeles en 'off'
}
void loop() {}
Obtener el estado del botón actual.
bool newState = digitalRead(BUTTON_PIN);
Compruebe si el estado cambia de alto a bajo (pulsación).
Si (newState == baja & & oldState == HIGH) {}
Corto retardo para debounce botón.
Delay(20);
Compruebe si el botón está todavía bajo después debounce.
newState = digitalRead(BUTTON_PIN);
Si (newState == LOW) {}
showType ++;
Si (showType > 10)
showType = 0;
startShow(showType);
}
}
Establece el último estado de botón en el viejo estado.
oldState = newState;
}
void startShow(int i) {}
{Switch(i)}
caso 0: colorWipe (de la tira. Color(0, 0, 0), 50); Negro/apagado
rotura;
caso 1: colorWipe (de la tira. Color(255, 0, 0), 50); Rojo
rotura;
caso 2: colorWipe (de la tira. Color(255, 96, 0), 50); naranja
rotura;
caso 3: colorWipe (de la tira. Color(255, 255, 0), 50); amarillo necesita ayuda
rotura;
caso 4: colorWipe (de la tira. Color(0, 255, 0), 50); verde
rotura;
caso 5: colorWipe (de la tira. Color(0, 0, 255), 50); azul
rotura;
caso 6: colorWipe (de la tira. Color(38, 222, 220), 50); Teal
rotura;
caso 7: colorWipe (de la tira. Color(75, 0, 13), 50); Púrpura
rotura;
caso 8: colorWipe (de la tira. Color(255, 0, 255), 50); Color de rosa
rotura;
caso 9: colorWipe (de la tira. Color(252, 253, 253), 50); Blanco
rotura;
}
}
Rellenar los puntos uno tras otro con un color
{} void colorWipe (uint32_t c, uint8_t espera)
para (uint16_t i = 0; i
strip.setPixelColor (i, c);
Strip.Show();
Delay(Wait);
}
}
{} void arco iris (uint8_t esperar)
uint16_t i, j;
para (j = 0; j < 256; j ++) {}
para (i = 0; i
strip.setPixelColor (i, Wheel((i+j) y 255));
}
Strip.Show();
Delay(Wait);
}
}
Un valor de 0 a 255, para obtener un valor de color de entrada.
Los colores son una transición r - g - b - a r.
uint32_t rueda (bytes WheelPos) {}
WheelPos = 255 - WheelPos;
if(WheelPos < 85) {}
volver la tira. Color (255 - WheelPos * 3, 0, WheelPos * 3);
} else if(WheelPos < 170) {}
WheelPos-= 85;
volver la tira. Color (0, WheelPos * 3, 255 - WheelPos * 3);
} else {}
WheelPos-= 170;
volver la tira. Color (WheelPos * 3, 255 - WheelPos * 3, 0);
}
}