diff --git a/Textile_Potentiometer_Hoodie/README.md b/Textile_Potentiometer_Hoodie/README.md new file mode 100644 index 000000000..dc1d6a74d --- /dev/null +++ b/Textile_Potentiometer_Hoodie/README.md @@ -0,0 +1,4 @@ +# Textile_Potentiometer_Hoodie + +Code to accompany this tutorial: +https://learn.adafruit.com/textile-potentiometer-hoodie diff --git a/Textile_Potentiometer_Hoodie/Textile_Potentiometer_Hoodie.fzz b/Textile_Potentiometer_Hoodie/Textile_Potentiometer_Hoodie.fzz new file mode 100644 index 000000000..b1223f17d Binary files /dev/null and b/Textile_Potentiometer_Hoodie/Textile_Potentiometer_Hoodie.fzz differ diff --git a/Textile_Potentiometer_Hoodie/Textile_Potentiometer_Hoodie.ino b/Textile_Potentiometer_Hoodie/Textile_Potentiometer_Hoodie.ino new file mode 100644 index 000000000..4891630ac --- /dev/null +++ b/Textile_Potentiometer_Hoodie/Textile_Potentiometer_Hoodie.ino @@ -0,0 +1,47 @@ +#include + +#define PIN 1 +// Parameter 1 = number of pixels in strip +// Parameter 2 = Arduino pin number (most are valid) +// Parameter 3 = pixel type flags, add together as needed: +// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) +// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) +// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) +// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) +Adafruit_NeoPixel strip = Adafruit_NeoPixel(8, PIN, NEO_GRB + NEO_KHZ800); + +int sensorPin = 1; // select the input pin for the potentiometer (analog 1 is digital 2) +int sensorValue = 0; // variable to store the value coming from the sensor +int colorValue = 0; + +void setup() { + // Set internal pullup resistor for sensor pin (analog 1 is digital 2) + pinMode(2, INPUT_PULLUP); + strip.begin(); + strip.setBrightness(40); //adjust brightness here + strip.show(); // Initialize all pixels to 'off' +} + +void loop() { + // read the value from the sensor: + sensorValue = analogRead(sensorPin); + colorValue = map(sensorValue, 0, 1024, 0, 255); //map sensor values from 0-124 to 0-255 + for (int i = 0; i 255): + return (0, 0, 0) + if (pos < 85): + return (int(pos * 3), int(255 - (pos*3)), 0) + elif (pos < 170): + pos -= 85 + return (int(255 - pos*3), 0, int(pos*3)) + else: + pos -= 170 + return (0, int(pos*3), int(255 - pos*3)) + +def remapRange(value, leftMin, leftMax, rightMin, rightMax): + # this remaps a value from original (left) range to new (right) range + # Figure out how 'wide' each range is + leftSpan = leftMax - leftMin + rightSpan = rightMax - rightMin + + # Convert the left range into a 0-1 range (int) + valueScaled = int(value - leftMin) / int(leftSpan) + + # Convert the 0-1 range into a value in the right range. + return int(rightMin + (valueScaled * rightSpan)) + +# Loop forever... +while True: + + # remap the potentiometer analog sensor values from 0-65535 to RGB 0-255 + colorvalue = remapRange(sensor.value, 0, 65535, 0, 255) + + for i in range( 0, len(strip) ): + strip[i] = wheel(colorvalue) + strip.write()