Ultimate natt cykel (4 / 30 steg)
Steg 4: Att komma igång med det FastLED biblioteket och ladda upp den Arduino skiss
Jag arbetar främst med FastLED.io bibliotek för LED programmering, det är ganska enkelt när det gäller RGB-programmering, och de har bra dokumentation för sin kod.
Här är en instructable beskriver installationen av FastLED biblioteket.
Detta är den kod som måste ladda upp till Arduino:
//
//
//
//
//
//
Ultimate natt cykel av AUDREY kärlek
ett projekt för Arduino, Radioshack LED Tricolor Light Strip och en cykel.
//
//
//
//
med stort stöd från FastLED.io biblioteket
Ladda ner det här: https://github.com/FastLED
//
//
//
#include "FastLED.h"
#define NUM_LEDS 10
#define DATA_PIN 6
CRGB lysdioder [NUM_LEDS];
___pin beteckningar
int programIndicator = 13. PIN-kod för program/indikatorn LED
int buttonPin = 2; numrera av tryckknapp PIN-koden
Variabler som ändras:
int ledState = låg; ledState används för att ange LED
lång previousMillis = 0; kommer att lagra förra gången LED uppdaterades
lång intervalOne = 1500; intervall som blinka (millisekunder)
lång intervalTwo = 500. intervall som blinka (millisekunder)
lång intervalThree = 300; intervall som blinka (millisekunder)
lång intervalFour = 200. intervall som blinka (millisekunder)
lång intervalFive = 100; intervall som blinka (millisekunder)
lång intervalSix = 50; intervall som blinka (millisekunder)
int brightValue = 0;
int satValue = 0;
int hueValue = 0;
knappen
booleska buttonValue = sant; variabel för att läsa knappen status
booleska buttonState = sant; variabel att hålla knappen staten
mönster
int patternProgram = 0; vilket knappen program är i användning
void setup() {
deklarera signal stift
pinMode (programIndicator, produktionen);
pinMode(buttonPin,INPUT_PULLUP);
Sanity check dröjsmål - tillåter omprogrammering om misstag blåser power w/lysdioder
Delay(2000);
FastLED.addLeds < TM1803, DATA_PIN, GBR > (lysdioder, NUM_LEDS);
Serial.BEGIN(9600); initiera seriell kommunikation på 9600 bitar per sekund:
}
void loop() {
Serial.println(buttonValue);
Serial.println(patternProgram);
knapptryckningar växla mellan lägen
buttonValue =! digitalRead(buttonPin); Läs indatavärde och lagra den i val
om (buttonValue! = buttonState) {/ / knappen staten har förändrats!
om (buttonValue == 0) {/ / kolla om knappen trycks
om (patternProgram == 0) {/ / om satt till smidig logaritmisk kartläggning
patternProgram = 1; Växla till klev kromatisk kartläggning
}
annat {
om (patternProgram == 1) {/ /
patternProgram = 2; Växla till nästa läge
}
annat {
om (patternProgram == 2) {/ /
patternProgram = 3; Växla till nästa läge
}
annat {
om (patternProgram == 3) {/ /
patternProgram = 4; Växla till nästa läge
}
annat {
om (patternProgram == 4) {/ /
patternProgram = 5; Växla till nästa läge
}
annat {
om (patternProgram == 5) {/ /
patternProgram = 0; Växla till nästa läge
}
}
}
}
}
}
}
buttonState = buttonValue; spara den nya staten i våra variabel
}
brightValue = analogRead(A2);
satValue = analogRead(A3);
hueValue = analogRead(A4);
Serial.println(hueValue);
Switch(patternProgram) {
fall 0:
lysdioder [0] = CHSV ((hueValue/4) + 1, + 1 (satValue/4), (brightValue/4) + 1);
lysdioder [1] = CHSV ((hueValue/4) + 1, + 1 (satValue/4), (brightValue/4) + 1);
lysdioder [2] = CHSV ((hueValue/4) + 1, + 1 (satValue/4), (brightValue/4) + 1);
lysdioder [3] = CHSV ((hueValue/4) + 1, + 1 (satValue/4), (brightValue/4) + 1);
lysdioder [4] = CHSV ((hueValue/4) + 1, + 1 (satValue/4), (brightValue/4) + 1);
lysdioder [5] = CHSV ((hueValue/4) + 1, + 1 (satValue/4), (brightValue/4) + 1);
lysdioder [6] = CHSV ((hueValue/4) + 1, + 1 (satValue/4), (brightValue/4) + 1);
lysdioder [7] = CHSV ((hueValue/4) + 1, + 1 (satValue/4), (brightValue/4) + 1);
lysdioder [8] = CHSV ((hueValue/4) + 1, + 1 (satValue/4), (brightValue/4) + 1);
lysdioder [9] = CHSV ((hueValue/4) + 1, + 1 (satValue/4), (brightValue/4) + 1);
FastLED.show();
Delay(40);
bryta;
fall 1:
{
osignerade långa currentMillis = millis();
om (currentMillis - previousMillis > intervalTwo) {
spara den senaste gången du blinkade lysdioden
previousMillis = currentMillis;
om lysdioden är stänger den på och vice versa:
om (ledState == låg)
ledState = hög;
annat
ledState = låg;
Set LED med ledState av variabeln:
digitalWrite (programIndicator, ledState);
}
}
lysdioder [0] = CRGB::Red;
lysdioder [1] = CRGB::Orange;
lysdioder [2] = CRGB::Yellow;
lysdioder [3] = CRGB::Green;
lysdioder [4] = CRGB::Aqua;
lysdioder [5] = CRGB::Blue;
lysdioder [6] = CRGB::Purple;
lysdioder [7] = CRGB::Magenta;
lysdioder [8] = CRGB::Red;
lysdioder [9] = CRGB::Orange;
FastLED.show();
Delay(60);
lysdioder [0] = CRGB::Magenta;
lysdioder [1] = CRGB::Red;
lysdioder [2] = CRGB::Orange;
lysdioder [3] = CRGB::Yellow;
lysdioder [4] = CRGB::Green;
lysdioder [5] = CRGB::Aqua;
lysdioder [6] = CRGB::Blue;
lysdioder [7] = CRGB::Purple;
lysdioder [8] = CRGB::Magenta;
lysdioder [9] = CRGB::Red;
FastLED.show();
Delay(60);
lysdioder [0] = CRGB::Purple;
lysdioder [1] = CRGB::Magenta;
lysdioder [2] = CRGB::Red;
lysdioder [3] = CRGB::Orange;
lysdioder [4] = CRGB::Yellow;
lysdioder [5] = CRGB::Green;
lysdioder [6] = CRGB::Aqua;
lysdioder [7] = CRGB::Blue;
lysdioder [8] = CRGB::Purple;
lysdioder [9] = CRGB::Magenta;
FastLED.show();
Delay(60);
lysdioder [0] = CRGB::Blue;
lysdioder [1] = CRGB::Purple;
lysdioder [2] = CRGB::Magenta;
lysdioder [3] = CRGB::Red;
lysdioder [4] = CRGB::Orange;
lysdioder [5] = CRGB::Yellow;
lysdioder [6] = CRGB::Green;
lysdioder [7] = CRGB::Aqua;
lysdioder [8] = CRGB::Blue;
lysdioder [9] = CRGB::Purple;
FastLED.show();
Delay(60);
lysdioder [0] = CRGB::Aqua;
lysdioder [1] = CRGB::Blue;
lysdioder [2] = CRGB::Purple;
lysdioder [3] = CRGB::Magenta;
lysdioder [4] = CRGB::Red;
lysdioder [5] = CRGB::Orange;
lysdioder [6] = CRGB::Yellow;
lysdioder [7] = CRGB::Green;
lysdioder [8] = CRGB::Aqua;
lysdioder [9] = CRGB::Blue;
FastLED.show();
Delay(60);
lysdioder [0] = CRGB::Green;
lysdioder [1] = CRGB::Aqua;
lysdioder [2] = CRGB::Blue;
lysdioder [3] = CRGB::Purple;
lysdioder [4] = CRGB::Magenta;
lysdioder [5] = CRGB::Red;
lysdioder [6] = CRGB::Orange;
lysdioder [7] = CRGB::Yellow;
lysdioder [8] = CRGB::Green;
lysdioder [9] = CRGB::Aqua;
FastLED.show();
Delay(60);
lysdioder [0] = CRGB::Yellow;
lysdioder [1] = CRGB::Green;
lysdioder [2] = CRGB::Aqua;
lysdioder [3] = CRGB::Blue;
lysdioder [4] = CRGB::Purple;
lysdioder [5] = CRGB::Magenta;
lysdioder [6] = CRGB::Red;
lysdioder [7] = CRGB::Orange;
lysdioder [8] = CRGB::Yellow;
lysdioder [9] = CRGB::Green;
FastLED.show();
Delay(60);
lysdioder [0] = CRGB::Orange;
lysdioder [1] = CRGB::Yellow;
lysdioder [2] = CRGB::Green;
lysdioder [3] = CRGB::Aqua;
lysdioder [4] = CRGB::Blue;
lysdioder [5] = CRGB::Purple;
lysdioder [6] = CRGB::Magenta;
lysdioder [7] = CRGB::Red;
lysdioder [8] = CRGB::Orange;
lysdioder [9] = CRGB::Yellow;
FastLED.show();
Delay(60);
Delay(100); vänta en sekund
bryta;
fall 2:
{
osignerade långa currentMillis = millis();
om (currentMillis - previousMillis > intervalThree) {
spara den senaste gången du blinkade lysdioden
previousMillis = currentMillis;
om lysdioden är stänger den på och vice versa:
om (ledState == låg)
ledState = hög;
annat
ledState = låg;
Set LED med ledState av variabeln:
digitalWrite (programIndicator, ledState);
}
}
Serial.println(hueValue);
Serial.println(satValue);
lysdioder [0] = CHSV (((hueValue +8)/4), ((satValue+4)/4), 200);
lysdioder [1] = CHSV (((hueValue +4)/4), ((satValue+8)/4), 175);
lysdioder [2] = CHSV (((hueValue +8)/4), ((satValue+4)/4), 200);
lysdioder [3] = CHSV (((hueValue +4)/4), ((satValue+8)/4), 175);
lysdioder [4] = CHSV (((hueValue +8)/4), ((satValue+4)/4), 200);
lysdioder [5] = CHSV (((hueValue +4)/4), ((satValue+8)/4), 175);
lysdioder [6] = CHSV (((hueValue +8)/4), ((satValue+4)/4), 200);
lysdioder [7] = CHSV (((hueValue +4)/4), ((satValue+8)/4), 175);
lysdioder [8] = CHSV (((hueValue +8)/4), ((satValue+4)/4), 200);
lysdioder [9] = CHSV (((hueValue +4)/4), ((satValue+8)/4), 175);
FastLED.show();
Delay(100);
lysdioder [0] = CHSV ((hueValue + 4) / 4, (satValue + 8) / 4, 175);
lysdioder [1] = CHSV ((hueValue + 8) / 4, (satValue + 4) / 4, 200);
lysdioder [2] = CHSV ((hueValue + 4) / 4, (satValue + 8) / 4, 175);
lysdioder [3] = CHSV ((hueValue + 8) / 4, (satValue + 4) / 4, 200);
lysdioder [4] = CHSV ((hueValue + 4) / 4, (satValue + 8) / 4, 175);
lysdioder [5] = CHSV ((hueValue + 8) / 4, (satValue + 4) / 4, 200);
lysdioder [6] = CHSV ((hueValue + 4) / 4, (satValue + 8) / 4, 175);
lysdioder [7] = CHSV ((hueValue + 8) / 4, (satValue + 4) / 4, 200);
lysdioder [8] = CHSV ((hueValue + 4) / 4, (satValue + 8) / 4, 175);
lysdioder [9] = CHSV ((hueValue + 8) / 4, (satValue + 4) / 4, 200);
FastLED.show();
Delay(100);
bryta;
fall 3:
{
osignerade långa currentMillis = millis();
om (currentMillis - previousMillis > intervalFour) {
spara den senaste gången du blinkade lysdioden
previousMillis = currentMillis;
om lysdioden är stänger den på och vice versa:
om (ledState == låg)
ledState = hög;
annat
ledState = låg;
Set LED med ledState av variabeln:
digitalWrite (programIndicator, ledState);
}
}
lysdioder [0] = CRGB::Black;
lysdioder [1] = CRGB::Black;
lysdioder [2] = CRGB::Black;
lysdioder [3] = CRGB::Black;
lysdioder [4] = CRGB::Black;
lysdioder [5] = CRGB::Black;
lysdioder [6] = CRGB::Black;
lysdioder [7] = CRGB::Black;
lysdioder [8] = CRGB::Black;
lysdioder [9] = CRGB::Black;
FastLED.show();
Delay(60);
lysdioder [0] = CHSV (((hueValue +8)/4), ((satValue+4)/4), 200);
lysdioder [1] = CHSV (((hueValue +4)/4), ((satValue+8)/4), 175);
lysdioder [2] = CHSV (((hueValue +8)/4), ((satValue+4)/4), 200);
lysdioder [3] = CHSV (((hueValue +4)/4), ((satValue+8)/4), 175);
lysdioder [4] = CHSV (((hueValue +8)/4), ((satValue+4)/4), 200);
lysdioder [5] = CHSV (((hueValue +4)/4), ((satValue+8)/4), 175);
lysdioder [6] = CHSV (((hueValue +8)/4), ((satValue+4)/4), 200);
lysdioder [7] = CHSV (((hueValue +4)/4), ((satValue+8)/4), 175);
lysdioder [8] = CHSV (((hueValue +8)/4), ((satValue+4)/4), 200);
lysdioder [9] = CHSV (((hueValue +4)/4), ((satValue+8)/4), 175);
Delay(100); vänta en sekund
bryta;
fall 4:
{
osignerade långa currentMillis = millis();
om (currentMillis - previousMillis > intervalFive) {
spara den senaste gången du blinkade lysdioden
previousMillis = currentMillis;
om lysdioden är stänger den på och vice versa:
om (ledState == låg)
ledState = hög;
annat
ledState = låg;
Set LED med ledState av variabeln:
digitalWrite (programIndicator, ledState);
}
}
lysdioder [0] = CRGB::Black;
lysdioder [1] = CRGB::Black;
lysdioder [2] = CRGB::Black;
lysdioder [3] = CRGB::Black;
lysdioder [4] = CRGB::Black;
lysdioder [5] = CRGB::Black;
lysdioder [6] = CRGB::Black;
lysdioder [7] = CRGB::Black;
lysdioder [8] = CRGB::Black;
lysdioder [9] = CRGB::Black;
FastLED.show();
Delay(30);
lysdioder [0] = CRGB::Gold;
lysdioder [1] = CRGB::Gold;
lysdioder [2] = CRGB::Gold;
lysdioder [3] = CRGB::Gold;
lysdioder [4] = CRGB::Gold;
lysdioder [5] = CRGB::Gold;
lysdioder [6] = CRGB::Gold;
lysdioder [7] = CRGB::Gold;
lysdioder [8] = CRGB::Gold;
lysdioder [9] = CRGB::Gold;
Delay(30); vänta en sekund
Delay(100);
bryta;
fall 5:
{
osignerade långa currentMillis = millis();
om (currentMillis - previousMillis > intervalSix) {
spara den senaste gången du blinkade lysdioden
previousMillis = currentMillis;
om lysdioden är stänger den på och vice versa:
om (ledState == låg)
ledState = hög;
annat
ledState = låg;
Set LED med ledState av variabeln:
digitalWrite (programIndicator, ledState);
}
}
lysdioder [0] = CRGB::Black;
lysdioder [1] = CRGB::Black;
lysdioder [2] = CRGB::Black;
lysdioder [3] = CRGB::Black;
lysdioder [4] = CRGB::Black;
lysdioder [5] = CRGB::Black;
lysdioder [6] = CRGB::Black;
lysdioder [7] = CRGB::Black;
lysdioder [8] = CRGB::Black;
lysdioder [9] = CRGB::Black;
FastLED.show();
Delay(30);
lysdioder [0] = CRGB::Red;
lysdioder [1] = CRGB::Orange;
lysdioder [2] = CRGB::Yellow;
lysdioder [3] = CRGB::Green;
lysdioder [4] = CRGB::Cyan;
lysdioder [5] = CRGB::Blue;
lysdioder [6] = CRGB::Purple;
lysdioder [7] = CRGB::Violet;
lysdioder [8] = CRGB::Magenta;
lysdioder [9] = CRGB::Gold;
Delay(30);
Delay(100);
bryta;
}
}