Stap 3: Stap 3: ardino code en breadboard
Ik begon met de volgende code en een drukknop met de setup weergegeven voor het aandrijven van de led strip.
CODE:
Dit is een demonstratie over hoe een invoerapparaat gebruiken om te activeren van wijzigingen op uw neo pixels.
U moet een kortstondige drukknop via grond verbinding maken met een digitale IO-pin draad. Wanneer u
Druk op de knop die het naar een nieuwe pixel-animatie veranderen zal. Merk op dat u moet op de
toets om te beginnen met de eerste animatie!
#include
#define BUTTON_PIN 2 / / digitale IO-pin verbonden aan de knop. Dit zal
gereden met een pull-up weerstand zodat de schakelaar moet
Trek de pin aan de grond tijdelijk. Op een hoog -> laag
overgang de knop pers logica zal uitvoeren.
#define PIXEL_PIN 6 / / digitale IO-pin verbonden met de NeoPixels.
#define PIXEL_COUNT 30
Parameter 1 = aantal pixels in de strip, neopixel stick heeft 8
Parameter 2 = pin-nummer (de meeste zijn geldig)
Parameter 3 = pixel type vlaggen, wens samen toevoegen:
NEO_RGB Pixels zijn bedraad voor RGB bitstream
NEO_GRB Pixels zijn bedraad voor GRB bitstream, juiste voor neopixel stick
NEO_KHZ400 400 KHz bitstream (bijvoorbeeld FLORA pixels)
NEO_KHZ800 800 KHz bitstream (bijvoorbeeld de hoge dichtheid LED-strip), corrigeren voor neopixel stick
Adafruit_NeoPixel strip = Adafruit_NeoPixel (PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
BOOL oldState = hoog;
int showType = 0;
VOID Setup {}
pinMode (BUTTON_PIN, INPUT_PULLUP);
strip.begin();
strip.show(); Initialiseren van alle pixels op 'off'
}
void loop {}
Krijg de huidige status van de knop.
BOOL newState = digitalRead(BUTTON_PIN);
Controleer als de status gewijzigd van hoog naar laag (druk op de knop).
Als (newState == LOW & & oldState == HIGH) {}
Korte vertraging aan de debounce knop.
vertraging(20);
Controleer of de knop na ontdendering nog steeds laag is.
newState = digitalRead(BUTTON_PIN);
Als (newState == LOW) {}
showType ++;
Als (showType > 10)
showType = 0;
startShow(showType);
}
}
De laatste knopstatus instellen naar de oude staat.
oldState = newState;
}
VOID startShow(int i) {}
switch(i) {}
geval van 0: colorWipe (strip. Color(0, 0, 0), 50); Zwart/off
breken;
geval 1: colorWipe (strip. Color(255, 0, 0), 50); Rood
breken;
geval 2: colorWipe (strip. Color(255, 96, 0), 50); Oranje
breken;
Case 3: colorWipe (strip. Color(255, 255, 0), 50); gele behoeften help
breken;
geval 4: colorWipe (strip. Color(0, 255, 0), 50); groen
breken;
geval 5: colorWipe (strip. Color(0, 0, 255), 50); blauw
breken;
kast 6: colorWipe (strip. Color(38, 222, 220), 50); Groenblauw
breken;
geval 7: colorWipe (strip. Color(75, 0, 13), 50); Paars
breken;
geval 8: colorWipe (strip. Color(255, 0, 255), 50); Roze
breken;
zaak 9: colorWipe (strip. Color(252, 253, 253), 50); wit
breken;
}
}
De puntjes een na de andere te vullen met een kleur
VOID colorWipe (uint32_t c, uint8_t wachten) {}
voor (uint16_t i = 0; i
strip.setPixelColor (i, c);
strip.show();
delay(wait);
}
}
VOID regenboog (uint8_t wachten) {}
uint16_t i, j;
voor (j = 0; j < 256; j ++) {}
voor (ik = 0; i
strip.setPixelColor (i, Wheel((i+j) & 255));
}
strip.show();
delay(wait);
}
}
Invoergegevens naar een waarde van 0 tot 255 om een kleurwaarde.
De kleuren zijn een overgang r - g - b - terug naar r.
uint32_t wiel (byte WheelPos) {}
WheelPos = 255 - WheelPos;
if(WheelPos < 85) {}
strip retourneren Kleur (255 - WheelPos * 3, 0, WheelPos * 3);
} else if(WheelPos < 170) {}
WheelPos-= 85;
strip retourneren Kleur (0, WheelPos * 3, 255 - WheelPos * 3);
} else {}
WheelPos-= 170;
strip retourneren Kleur (WheelPos * 3, 255 - WheelPos * 3, 0);
}
}