LED Cloud
The led cloud is a some cotton that is shaped to look like a cloud. Within the cotton is a a 48 wires shaped to look kinda like a tree. On the end of each branch of the tree, there is an LED, this is what makes the cloud light up.
Engineer
Miko
Area of Interest
School
Berkeley Carroll
Grade
Incoming Freshman
First Milestone
// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// released under the GPLv3 license to match the rest of the AdaFruit NeoPixel library
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
// Which pin on the Arduino is connected to the NeoPixels?
// On a Trinket or Gemma we suggest changing this to 1
#define PIN 6
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 3
// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
// Note that for older NeoPixel strips you might need to change the third parameter–see the strandtest
// example for more information on possible values.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 500; // delay for half a second
const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;
void setup()
{
#if defined (__AVR_ATtiny85__)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
// End of trinket special code
pixels.begin();
pixels.show(); // Initialize all pixels to ‘off’
Serial.begin(9600);
}
void loop()
{
unsigned long startMillis = millis(); // Start of sample window
unsigned int peakToPeak = 0; // peak-to-peak level
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
// collect data for 50 mS
while (millis() – startMillis < sampleWindow)
{
sample = analogRead(0);
delay(4);
if (sample < 600)
{
pixels.setPixelColor(0,pixels.Color(0,0,0));
pixels.setPixelColor(1,pixels.Color(0,0,0));
pixels.setPixelColor(2,pixels.Color(0,0,0));
pixels.show();
}
if (sample > 600)
{
pixels.setPixelColor(0,pixels.Color(0,255,0));
pixels.setPixelColor(1,pixels.Color(0,255,0));
pixels.setPixelColor(2,pixels.Color(0,255,0));
pixels.show();
Serial.println(sample);
delay (100);
}
if (sample < 1024) // toss out spurious readings
{
if (sample > signalMax)
{
signalMax = sample; // save just the max levels
}
else if (sample < signalMin)
{
signalMin = sample; // save just the min levels
}
}
}
peakToPeak = signalMax – signalMin; // max – min = peak-peak amplitude
double volts = (peakToPeak * 5.0) / 1024; // convert to volts
Serial.println(volts);
}