Glinsterende Chameleon (smart) rok ~ (1 / 7 stap)

Stap 1: De code

 #include <Wire.h> #include <Adafruit_TCS34725.h> #include <Adafruit_LSM303.h> #include <Adafruit_NeoPixel.h> // Parameter 1 = number of pixels in strip // Parameter 2 = pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_RGB Pixels are wired for RGB bitstream // NEO_GRB Pixels are wired for GRB bitstream // NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixels) // NEO_KHZ800 800 KHz bitstream (e.g. High Density LED strip) #define NUM_PIXELS 4 Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_PIXELS, 6, NEO_GRB + NEO_KHZ800); Adafruit_TCS34725 color_sensor = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X); Adafruit_LSM303 accel; #define STILL_LIGHT // define if light is to be on when no movement. // Otherwise dark // our RGB -> eye-recognized gamma color byte gammatable[256]; int g_red, g_green, g_blue; // global colors read by color sensor int j; // mess with this number to adjust TWINklitude :) // lower number = more sensitive #define MOVE_THRESHOLD 45 #define FADE_RATE 5 int led = 7; double newVector; void flash(int times) { for (int i = 0; i < times; i++) { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(150); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(150); } } float r, g, b; double storedVector; void setup() { pinMode(led, OUTPUT); // Try to initialise and warn if we couldn't detect the chip if (!accel.begin()) { Serial.println("Oops ... unable to initialize the LSM303. Check your wiring!"); while (1) { flash(4); delay(1000); }; } strip.begin(); strip.show(); // Initialize all pixels to 'off' if (!color_sensor.begin()) { Serial.println("No TCS34725 found ... check your connections"); while (1) { flash(3); delay(1000); }; } // thanks PhilB for this gamma table! // it helps convert RGB colors to what humans see for (int i = 0; i < 256; i++) { float x = i; x /= 255; x = pow(x, 2.5); x *= 255; gammatable[i] = x; } //this sequence flashes the first pixel three times // as a countdown to the color reading. for (int i = 0; i < 3; i++) { //white, but dimmer-- 255 for all three values makes it blinding! strip.setPixelColor(0, strip.Color(188, 188, 188)); strip.show(); delay(1000); strip.setPixelColor(0, strip.Color(0, 0, 0)); strip.show(); delay(500); } uint16_t clear, red, green, blue; color_sensor.setInterrupt(false); // turn on LED delay(60); // takes 50ms to read color_sensor.getRawData(&red, &green, &blue, &clear); color_sensor.setInterrupt(true); // turn off LED // Figure out some basic hex code for visualization uint32_t sum = red; sum += green; sum += blue; sum = clear; r = red; r /= sum; g = green; g /= sum; b = blue; b /= sum; r *= 256; g *= 256; b *= 256; g_red = gammatable[(int)r]; g_green = gammatable[(int)g]; g_blue = gammatable[(int)b]; // Get the magnitude (length) of the 3 axis vector // http://en.wikipedia.org/wiki/Euclidean_vector#Length accel.read(); storedVector = accel.accelData.x*accel.accelData.x; storedVector += accel.accelData.y*accel.accelData.y; storedVector += accel.accelData.z*accel.accelData.z; storedVector = sqrt(storedVector); } void loop() { // get new data accel.read(); double newVector = accel.accelData.x*accel.accelData.x; newVector += accel.accelData.y*accel.accelData.y; newVector += accel.accelData.z*accel.accelData.z; newVector = sqrt(newVector); // are we moving if (abs(newVector - storedVector) > MOVE_THRESHOLD) { colorWipe(strip.Color(0, 0, 0), 0); flashRandom(10, 25); // first number is 'wait' delay, // shorter num == shorter twinkle // second number is how many neopixels to // simultaneously light up } #ifdef STILL_LIGHT else { colorWipe(strip.Color(gammatable[(int)r], gammatable[(int)g], gammatable[(int)b]), 0); storedVector = newVector; } #endif } void flashRandom(int wait, uint8_t howmany) { for (uint16_t i = 0; i < howmany; i++) { for (int simul_pixels = 0; simul_pixels < 8; simul_pixels++) { // get a random pixel from the list j = random(strip.numPixels()); strip.setPixelColor(j, strip.Color(g_red, g_green, g_blue)); } strip.show(); delay(wait); colorWipe(strip.Color(0, 0, 0), 0); // now we will 'fade' it in FADE_RATE steps for (int x = 0; x < FADE_RATE; x++) { int r = g_red * (x + 1); r /= FADE_RATE; int g = g_green * (x + 1); g /= FADE_RATE; int b = g_blue * (x + 1); b /= FADE_RATE; strip.setPixelColor(j, strip.Color(r, g, b)); strip.show(); delay(wait); } // & fade out for (int x = FADE_RATE; x >= 0; x--) { int r = g_red * x; r /= FADE_RATE; int g = g_green * x; g /= FADE_RATE; int b = g_blue * x; b /= FADE_RATE; strip.setPixelColor(j, strip.Color(r, g, b)); strip.show(); delay(wait); } } #ifdef STILL_LIGHT colorWipe(strip.Color(gammatable[(int)r], gammatable[(int)g], gammatable[(int)b]), 0); #endif } // Fill the dots one after the other with a color void colorWipe(uint32_t c, uint8_t wait) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait); } } 

Gerelateerde Artikelen

[Rokit Smart] Sumo Robot

[Rokit Smart] Sumo Robot

Wat is de Sumo Robot en wat is het doel?De Sumo-Robot is een autonome robot waarmee u kunt duwen je tegenstander (vermoedelijk een ander sumo robot) uit de battle-ring.Wat is er zo speciaal aan deze robot?Deze robot maakt gebruik van twee DC-motoren
Een Get Smart stijl Cone Of Silence

Een Get Smart stijl Cone Of Silence

Maxwell smart altijd aangedrongen op het gebruik van de Cone of Silence, naar de eeuwige rouw van Chief.Dit is een andere in mijn reeks Get Smart rekwisieten, waartoe ook twee verschillende echte werkende schoen telefoons (instructable 1 en instructa
Low Lights rok

Low Lights rok

Deze tutorial gaat over hoe maak je eigen vak geplooide rok patroon met LED's voor kleuraanpassing binnen de plooien. Er wordt verondersteld dat de lezer al weet hoe de bouw van een rok met plooien.Het is de technologische en elegant! Het is techlega
Glinsterende sterren in uw buurt

Glinsterende sterren in uw buurt

Over het project:San Francisco is een stad bij oorlog met zich, en geen gebied illustreert dit beter dan de centrale markt. Lokale kunstenaars klagen over de tech-gemeenschap duwen ze uit, en het gebied draagt nu een verlaten blik. De toeristische st
Op maat gemaakte rok

Op maat gemaakte rok

Dit is mijn instructable op naaien van een op maat gemaakte rok.Stap 1: BenodigdhedenHier is wat u wilt afstemmen op uw eigen rok-twee verschillende stoffen-naaien garen-een naald of een naaimachine-een knopStap 2: Knip het weefsel Eerst knip de rok
Tekenreeks en hula hoop rok

Tekenreeks en hula hoop rok

dit is mijn inzending voor de instructables string competitie. Het is een hula hoop en string rok, geïnspireerd door deze mooie warme Welsh lente.Het is ook de eerste set van foto's met mijn fantastische nieuwe model Sam.U moet:Verschillende goedkope
Infinity sjaal van kladjes rok

Infinity sjaal van kladjes rok

Ik onlangs bijgewerkt met een oude achterhaalde zuinigheid winkel jurk in een geweldige tuniek shirt. Van alle de stek ik had enkele extra kladjes van de rok en ik wilde iets meer uit het maken. Ik hield van het patroon op de stof en wilde het net go
Wax weerstaan gedrukte rok

Wax weerstaan gedrukte rok

Ik heb gewerkt met wax als een middel voor het decoreren van weefsel sinds kunstacademie, ongeveer 30 jaar geleden nu! Mijn interesse heeft genomen me te bestuderen in Indonesië en te delen is magie met vele studenten in workshops hier in het Verenig
AutoCAD cirkel rok

AutoCAD cirkel rok

cirkel rokken zijn genaaid uit een uiterst eenvoudig patroon, zijn vrij eenvoudig te maken en zijn geweldig om te gaan dansen. Het patroon is nog eenvoudiger te maken of heb je toegang tot AutoCAD (of andere ontwerpsoftware) en een groot-formaat prin
DIY zomer CHIFFON-rok IN 30 minuten

DIY zomer CHIFFON-rok IN 30 minuten

Hallo mooie mensen, hoop dat je had een geweldig weekend en hebben een goed begin van uw week. Ik had een vrij ontspannen weekend en was zo blij om te zien de zon vanmorgen. Ik weet niet over u, maar er zijn sommige dagen waar ik just want to be "vri
De vierkante rok

De vierkante rok

U hoeft niet te naaien.Stap 1: De vierkante rok - gemakkelijk DIY - modeStap 2: Vierkante rokMaterialen:130 x 130 cm vierkante stof LycraStap 3:Stap 4: Stap 5:Stap 6: Stap 7:Stap 8: Stap 9:
SLIMME auto en SMART PARKING SYSTEM

SLIMME auto en SMART PARKING SYSTEM

Dit instructable is de schriftelijke versie van mijn "Arduino: hoe te bouwen A SMART CAR en SMART PARKING SYSTEM"Robotica is een onderdeel van de mededeling van vandaag. In de huidigeRobotica is een snel groeiende en interessante gebied. Het is
DIY Smart Garage deuropener

DIY Smart Garage deuropener

Ik weet dat je hebt gekregen van 5 minuten op de weg en gevraagd zelf, "deed ik de garagedeur sluiten?".Nu, in plaats van draaien of verlaten van uw garage en huis kwetsbaar voor dieven, kunt u controleren en sluit het met uw telefoon met uw keu
Slimme vuilnisbak - voor een Smart City

Slimme vuilnisbak - voor een Smart City

Overvolle vuilnisbakken zijn een andere bron van zorg voor bewoners in ontwikkelingslanden. Met de toename van de bevolking, is het scenario hygiëne in acht nemen met betrekking tot afval beheer enorm vernederend. Met de al heersende ziekten, de open