Stap 4: programmeren
U dient aan uw gemma zodat het uw lichten wat vertellen kan te doen afhankelijk van hoeveel licht de licht-sensor detecteert. Hieronder ik heb gekopieerd van de code die ik voor mijn project gebruikte voel je vrij te kopiëren of te gebruiken als een sjabloon. Ik stel voor dat in elke lus u maakt een verloop van kleuren zodat het lijkt meer natuurlijke, maar het is volledig aan jou dit is waar je echt creatief kunt krijgen. Als ik moest dit project doen wil ik de lichten wijzigen voor een kleinere hoeveelheid licht wijzigen. Ik zeg dit omdat wanneer het licht is de meest bedrag van licht te wijzigen van de kleuren van de neopixels sensing, het is zo helder dat u zelfs niet zien dat de achtergrond van de afbeelding veranderd. Ook zou het cool om het toevoegen van een lus waar als zijn te licht in de kamer om te zien op de achtergrond het uitzet, op deze manier kon u het altijd aangesloten maar het zou alleen inschakelen als het dim kreeg in de kamer.
Code die wordt gebruikt in CodeBender (voel je vrij om te kopiëren)
link: https://codebender.cc/sketch:100071
#include
#define PIN 1 is / / dit de data pin verbonden met pijl op eerste NeoPixel
Parameter 1 = aantal pixels in de strip / / Parameter 2 = pin-nummer (de meeste zijn geldig) / / Parameter 3 = pixel type vlaggen, wens samen voegen: / / NEO_KHZ800 800 KHz bitstream (de meeste NeoPixel producten w/WS2812 LEDs) / / NEO_KHZ400 400 KHz (klassieke 'v1' (niet v2) FLORA pixels, WS2811 drivers) / / NEO_GRB Pixels zijn Kabelgebonden voor GRB bitstream (de meeste NeoPixel produkten) / / NEO_RGB Pixels zijn Kabelgebonden voor RGB bitstream (v1 FLORA pixels niet v2) Adafruit_NeoPixel strip = Adafruit_NeoPixel (4, PIN, NEO_GRB + NEO_KHZ800);
Const int numReadings = 5;
int lezingen [numReadings]; de lezingen uit de analoge input int index = 0; de index van de huidige lezing int totaal = 0; het lopend totaal int gemiddelde = 0; het gemiddelde
int inputPin = a1 worden verkregen;
de setup-routine wordt uitgevoerd zodra wanneer u drukt op reset: void setup {/ / initialiseren van de digitale pin als een output. pinMode (inputPin, INPUT); / / Serial.begin(9600); / / Wij zullen sommige informatie over seriële alleen op LILYPAD voor output (int thisReading = 0; thisReading < numReadings; thisReading ++) lezingen [thisReading] = 0; strip.begin();}
de routine van de lus loopt over en weer forever: void loop {//This sectie voor de als verklaring glad de gegevens door middel van de averge van 5 waarden / / aftrekken van de laatste lezing: totaal = totaal - lezingen [index]; / / lezen van de sensor: lezingen [index] = analogRead(inputPin); / / de lezing aan het totaal toevoegen: totaal = totaal + lezingen [index]; / / advance naar de volgende positie in de matrix : index = index + 1;
Als we aan het einde van de array... als (index > = numReadings) / /.. .wrap rond naar het begin: index = 0;
het gemiddelde berekenen: gemiddelde = totaal / numReadings; het verzenden van de computer als ASCII-cijfers / / Serial.println(average); alleen op LILYPAD delay(500); vertraging tussen leest voor stabiliteit als (gemiddelde van > 75 & & gemiddelde < 200) //this is onze middelste bereik-waarde {//if de tech zet een beetje warme lucht over de temp sensor het tot ten minste 170 strip.setPixelColor (0,50,120,0 verhogen zal) //first neopixel in strook strip.setPixelColor (1,70,100,0) //second neopixel in strook strip.setPixelColor (2,90,80,0); //third neopixel in strook strip.setPixelColor (3,110,60,0); //fourth neopixel in strook strip.setPixelColor (4,110,60,0), strip.setPixelColor (5,90,80,0); strip.setPixelColor (6,70,100,0); strip.setPixelColor (7,50,120,0); strip.show (); //this is net als slaan verzenden op een neopixels tekst maar de tekst vertelt de lichten wat te doen} anders als (gemiddelde > = 200) {//this is onze hoogwaardige strip.setPixelColor (0,150,0,30) //first neopixel in strook strip.setPixelColor (1,150,0,60) //second neopixel in strook strip.setPixelColor (2,150,0,120); //third neopixel in strook strip.setPixelColor (3,150,0,180); strip.setPixelColor (4,150,0,180); strip.setPixelColor (5,150,0,120), strip.setPixelColor (6,150,0,60); strip.setPixelColor (7,150,0,30); //fourth neopixel in strook strip.show (); //this is net als de lichten raken verzenden op een tekst neopixels maar de tekst wat vertelt te doen} else {//this is onze lage waarde , iets minder dan 160 strip.setPixelColor (0,0,0,150); eerste neopixel in strook strip.setPixelColor (1,0,50,150); tweede neopixel in strook strip.setPixelColor (2,0,100,150); derde neopixel in strook strip.setPixelColor (3,0,150,150); strip.setPixelColor (4,0,150,150); strip.setPixelColor (5,0,100,150); strip.setPixelColor (6,0,50,150); strip.setPixelColor (7,0,0,150), //fourth neopixel in strook strip.show (); Dit is hetzelfde als het verzenden op een tekst neopixels raken, maar de tekst vertelt de lichten wat te doen}}