Glödande bild (4 / 9 steg)
Steg 4: programmering
Du måste programmera din gemma så att den kan berätta dina lampor att göra beroende på hur mycket ljus ljus-sensorn upptäcker. Nedan har jag kopierat koden jag använde för mitt projekt gärna kopiera den eller använda den som en mall. Jag skulle föreslå att i varje slinga som du skapar en övertoning med färger så det ser mer naturligt, men det är helt upp till dig detta är där du kan få riktigt kreativ. Om jag skulle göra detta projekt skulle jag göra ljusen ändra för en mindre mängd ljus förändring. Jag säger detta eftersom när ljuset är avkänning de flesta mängden ljus att ändra färgerna på neopixels, det är så ljust att du inte kan ens se att bakgrunden av bilden har förändrats. Också skulle det vara häftigt att lägga till en slinga där om dess för ljust i rummet för att se bakgrunden den stängs av, detta sätt kan du ha den alltid inkopplad men det skulle bara vända om fick det dunkelt i rummet.
Kod som används i CodeBender (gärna kopiera)
länk: https://codebender.cc/sketch:100071
#include
#define stift 1 är / / det här data pin ansluten till pilen på första NeoPixel
Parametern 1 = antal pixlar i remsa / / Parameter 2 = pin-kod (de flesta är giltigt) / / Parameter 3 = pixel typ flaggor, Lägg ihop efter behov: / / NEO_KHZ800 800 KHz bitstream (de flesta NeoPixel produkter w/WS2812 lysdioder) / / NEO_KHZ400 400 KHz (classic "v1" (inte v2) FLORA pixlar, WS2811 drivrutiner) / / NEO_GRB pixlar är trådbundet för GRB bitstream (de flesta NeoPixel produkter) / / NEO_RGB pixlar är trådbundet för RGB bitstream (v1 FLORA pixlar inte v2) Adafruit_NeoPixel strip = Adafruit_NeoPixel (4, PIN, NEO_GRB + NEO_KHZ800).
CONST int numReadings = 5;
int avläsningar [numReadings]; avläsningar från analog ingång int index = 0; index för den aktuella behandlingen int totala = 0; genomsnittet i igång totala int = 0; Genomsnittligt
int inputPin = A1;
Rutinen installationsprogrammet körs en gång när du trycker på reset: void setup() {/ / initiera digital stiftet som en utgång. pinMode (inputPin, ingång); / / Serial.begin(9600); / / vi kommer output viss information över följetong endast på LILYPAD för (int thisReading = 0; thisReading < numReadings; thisReading ++) avläsningar [thisReading] = 0; strip.begin();}
Rutinen loop kör om och om igen för alltid: void loop() {//This avsnitt innan om uttalande slätar data genom att averge 5 värden / / subtrahera den sista behandlingen: totalt = totalt - avläsningar [index]; / / läsa från sensorn: avläsningar [index] = analogRead(inputPin); / / Lägg till läsningen av totala: totalt = totalt + avläsningar [index]; / / förväg till nästa position i matrisen : index = index + 1.
om vi är i slutet av kedjan... om (index > = numReadings) / /.. .wrap runt till början: index = 0;
beräkna genomsnittligt: genomsnittliga = totalt / numReadings; Skicka den till datorn som ASCII-siffror / / Serial.println(average); endast på LILYPAD delay(500); fördröjning mellan läsningar för stabilitet om (genomsnitt > 75 & & genomsnittlig < 200) //this är vår mitt urval värde {//if tech sätter lite varm luft över temp sensorn det kommer att öka till minst 170 strip.setPixelColor (0,50,120,0), //first neopixel i strip strip.setPixelColor (1,70,100,0), //second neopixel i strip strip.setPixelColor (2,90,80,0); //third neopixel i strip strip.setPixelColor (3,110,60,0); //fourth neopixel i strip 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 är som att slå skicka en text till neopixels men texten berättar lamporna vad ska göra} else om (genomsnittliga > = 200) {//this är vår högt värde strip.setPixelColor (0,150,0,30), //first neopixel i strip strip.setPixelColor (1,150,0,60), //second neopixel i strip strip.setPixelColor (2,150,0,120); //third neopixel i strip 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 strip strip.show (); //this är som att slå skicka på en text till neopixels men texten berättar lamporna vad ska göra} annat {//this är våra låga värde , något lägre än 160 strip.setPixelColor (0,0,0,150); första neopixel i strip strip.setPixelColor (1,0,50,150); andra neopixel i strip strip.setPixelColor (2,0,100,150); tredje neopixel i strip 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 i strip strip.show (); Detta är som att slå skicka en text till neopixels men texten berättar lamporna vad ska göra}}