Ceci est une ancienne révision du document !
Code Arduino pour la boîte Ouvert/fermé
/* Sketch created for an Open/closed sign for Pop [lab] Montreuil
An Arduino connects to 2 Pololu Led strips, 12 leds long
A switch toggles between which one is lit
Fallback mode only back and forward
mh8 - December 2017
*/
#include <PololuLedStrip.h>
// Create 2 ledStrip objects on pin 10 & 12
PololuLedStrip<12> ledStripOpen;
PololuLedStrip<10> ledStripClosed;
// Create two buffers to hold the colors on the ledStrips
#define LED_COUNT 12
rgb_color colorsOpen[LED_COUNT];
rgb_color colorsClosed[LED_COUNT];
rgb_color colors[LED_COUNT];
rgb_color colorsOff[LED_COUNT];
// A switch button toggles On/Off
const uint8_t buttonPin = 2;
uint8_t buttonState = 0;
// A push button selects between different modes
// Use a 4.7K pullup resistor to connect the pin to the 5V
const uint8_t switchPin = 4;
uint8_t switchSelect = 0;
//Variable for delays (can go up to 65536 on 2 bytes)
uint16_t interval = 100;
//Variable defining maximum number of modes. Count starts at 0.
//This value should be 1 more than the number of the last mode
uint8_t maxModes = 3;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(switchPin, INPUT);
Serial.begin(115200);
//Initialize all arrays to off
for (int i = 0; i < LED_COUNT; i++)
{
colors[i] = colorsOff[i] = rgb_color(0, 0, 0);
}
}
void loop() {
//In this mode we need to know if we address the OPEN or the CLOSED ledStrip
int buttonState = digitalRead(buttonPin);
//Define two random colors to use in the back and foward movement
rgb_color colorOne = rgb_color(random(255), random(255), random(255));
rgb_color colorTwo = rgb_color(random(255), random(255), random(255));
//FORWARD Movement
for (uint8_t i = 0; i < LED_COUNT; i++) {
colors[i] = colorOne;
if (buttonState == 1) {
// Write to OPEN not to CLOSED
ledStripOpen.write(colors, LED_COUNT);
ledStripClosed.write(colorsOff, LED_COUNT);
}
else if (buttonState == 0) {
// Write to CLOSED not to OPEN
ledStripClosed.write(colors, LED_COUNT);
ledStripOpen.write(colorsOff, LED_COUNT);
}
delay(interval);
}
//BACK Movement
for (uint8_t i = LED_COUNT; i > 0; i--) {
colors[i] = colorTwo;
if (buttonState == 1) {
// Write to OPEN not to CLOSED
ledStripOpen.write(colors, LED_COUNT);
}
else if (buttonState == 0) {
// Write to CLOSED not to OPEN
ledStripClosed.write(colors, LED_COUNT);
}
delay(interval);
}
}
void writetoLeds() {
int buttonState = digitalRead(buttonPin);
if (buttonState == 1) {
// Turn ON OPEN led strip turn OFF CLOSED led strip
for (uint8_t i = 0; i < LED_COUNT; i++)
{
colorsOpen[i] = colors[i];
colorsClosed[i] = colorsOff[i];
}
}
else if (buttonState == 0) {
// Turn OFF OPEN led strip turn ON CLOSED led strip
for (uint8_t i = 0; i < LED_COUNT; i++)
{
colorsOpen[i] = colorsOff[i];
colorsClosed[i] = colors[i];
}
}
// Write to the led strips
ledStripOpen.write(colorsOpen, LED_COUNT);
ledStripClosed.write(colorsClosed, LED_COUNT);
delay(10);
}
