Mercurial > code > home > repos > light9
comparison rgbled/nanostrip.cc @ 1251:b174f95a3b8d
use proper pwm pins
Ignore-this: 97267b7dc54b2c5187603a00829ea7eb
author | drewp@bigasterisk.com |
---|---|
date | Sat, 13 Jun 2015 04:33:52 +0000 |
parents | e588ede64e0e |
children | b7fb7b2649fd |
comparison
equal
deleted
inserted
replaced
1250:b5b841cee380 | 1251:b174f95a3b8d |
---|---|
1 #include <Arduino.h> | 1 #include <Arduino.h> |
2 #include <Adafruit_NeoPixel.h> | 2 #include <Adafruit_NeoPixel.h> |
3 | 3 |
4 /* | 4 /* |
5 PWM is available on 3,5,6,9,10,11 | |
6 | |
5 Pin D3: blacklight pwm | 7 Pin D3: blacklight pwm |
6 Pin D5: neo strip 1 | 8 Pin D4: neo strip 1 |
7 Pin D6: neo strip 2 | 9 Pin D6: R |
8 Pin D7: R | 10 Pin D8: neo strip 2 |
9 Pin D8: G | 11 Pin D9: G |
10 Pin D9: B | 12 Pin D10: B |
11 Pin D10: blacklight 2 | 13 Pin D11: blacklight 2 |
12 */ | 14 */ |
13 | 15 |
14 | 16 |
15 // Parameter 1 = number of pixels in strip | 17 // Parameter 1 = number of pixels in strip |
16 // Parameter 2 = pin number (most are valid) | 18 // Parameter 2 = pin number (most are valid) |
17 // Parameter 3 = pixel type flags, add together as needed: | 19 // Parameter 3 = pixel type flags, add together as needed: |
18 // NEO_RGB Pixels are wired for RGB bitstream | 20 // NEO_RGB Pixels are wired for RGB bitstream |
19 // NEO_GRB Pixels are wired for GRB bitstream | 21 // NEO_GRB Pixels are wired for GRB bitstream |
20 // NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixels) | 22 // NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixels) |
21 // NEO_KHZ800 800 KHz bitstream (e.g. High Density LED strip) | 23 // NEO_KHZ800 800 KHz bitstream (e.g. High Density LED strip) |
22 Adafruit_NeoPixel strip0 = Adafruit_NeoPixel(50, 5, NEO_RGB + NEO_KHZ800); | 24 Adafruit_NeoPixel strip0 = Adafruit_NeoPixel(50, 4, NEO_RGB + NEO_KHZ800); |
23 Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(50, 6, NEO_RGB + NEO_KHZ800); | 25 Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(50, 8, NEO_RGB + NEO_KHZ800); |
24 | 26 |
25 #define debugLed 13 | 27 #define debugLed 13 |
28 | |
26 void intro() { | 29 void intro() { |
27 uint32_t red = strip0.Color(255,0,0), black = strip0.Color(0,0,0); | 30 uint32_t red = strip0.Color(255,0,0), black = strip0.Color(0,0,0); |
28 for (Adafruit_NeoPixel* strip = &strip0; strip != &strip1; strip = &strip1) { | 31 for (Adafruit_NeoPixel* strip = &strip0; strip != &strip1; strip = &strip1) { |
29 strip->setPixelColor(0, red); strip->show(); delay(100); | 32 strip->setPixelColor(0, red); strip->show(); delay(100); |
30 strip->setPixelColor(0, black); strip->show(); delay(100); | 33 strip->setPixelColor(0, black); strip->show(); delay(100); |
31 strip->setPixelColor(0, red); strip->show(); delay(100); | 34 strip->setPixelColor(0, red); strip->show(); delay(100); |
32 strip->setPixelColor(0, black); strip->show(); delay(100); | 35 strip->setPixelColor(0, black); strip->show(); delay(100); |
33 } | 36 } |
34 } | 37 } |
35 | 38 |
36 void setStrip(Adafruit_NeoPixel& strip) { | 39 void setStrip(Adafruit_NeoPixel* strip) { |
37 digitalWrite(debugLed, 1); | 40 digitalWrite(debugLed, 1); |
38 for (uint8_t i=0; i < strip.numPixels(); i++) { | 41 for (uint8_t i=0; i < strip->numPixels(); i++) { |
39 while (Serial.available() < 3) { | 42 while (Serial.available() < 3) { |
40 } | 43 } |
41 byte r = Serial.read(); | 44 byte r = Serial.read(); |
42 byte g = Serial.read(); | 45 byte g = Serial.read(); |
43 byte b = Serial.read(); | 46 byte b = Serial.read(); |
44 strip.setPixelColor(i, strip.Color(g, r, b)); | 47 strip->setPixelColor(i, strip->Color(g, r, b)); |
45 } | 48 } |
46 strip.show(); | 49 strip->show(); |
47 | 50 |
48 digitalWrite(debugLed, 0); | 51 digitalWrite(debugLed, 0); |
49 } | 52 } |
50 | 53 |
51 int main(void) { | 54 int main(void) { |
52 init(); | 55 init(); |
53 pinMode(debugLed, OUTPUT); | 56 pinMode(debugLed, OUTPUT); |
54 | 57 |
55 pinMode(3, OUTPUT); | 58 pinMode(3, OUTPUT); |
56 pinMode(7, OUTPUT); | 59 pinMode(6, OUTPUT); |
57 pinMode(8, OUTPUT); | |
58 pinMode(9, OUTPUT); | 60 pinMode(9, OUTPUT); |
59 pinMode(10, OUTPUT); | 61 pinMode(10, OUTPUT); |
60 | 62 pinMode(11, OUTPUT); |
63 | |
61 strip0.begin(); | 64 strip0.begin(); |
62 strip1.begin(); | 65 strip1.begin(); |
63 intro(); | 66 intro(); |
64 Serial.begin(115200); | 67 Serial.begin(115200); |
65 | 68 |
71 if (i != 0x60) { | 74 if (i != 0x60) { |
72 continue; | 75 continue; |
73 } | 76 } |
74 i = Serial.read(); // command | 77 i = Serial.read(); // command |
75 if (i == 0) { // set strip: 0x60 0x00 <numPixels * 3 bytes> | 78 if (i == 0) { // set strip: 0x60 0x00 <numPixels * 3 bytes> |
76 setStrip(strip0); | 79 setStrip(&strip0); |
77 } else if (i == 1) { // strip 1 | 80 } else if (i == 1) { // strip 1 |
78 setStrip(strip1); | 81 setStrip(&strip1); |
79 } else if (i == 2) { // set pwm on D3: 0x60 0x02 <level> | 82 } else if (i == 2) { // set pwm on uv1: 0x60 0x02 <level> |
80 while (Serial.available() < 1) { | 83 while (Serial.available() < 1) { |
81 } | 84 } |
82 analogWrite(3, Serial.read()); | 85 analogWrite(3, Serial.read()); |
83 } else if (i == 3) { // set pwm on D10: 0x60 0x03 <level> | 86 } else if (i == 3) { // set pwm on uv2: 0x60 0x03 <level> |
84 while (Serial.available() < 1) { | 87 while (Serial.available() < 1) { |
85 } | 88 } |
86 analogWrite(10, Serial.read()); | 89 analogWrite(11, Serial.read()); |
87 } else if (i == 4) { // set r/g/b: 0x60 0x04 <r> <g> <b> | 90 } else if (i == 4) { // set r/g/b: 0x60 0x04 <r> <g> <b> |
88 while (Serial.available() < 3) { | 91 while (Serial.available() < 3) { |
89 } | 92 } |
90 analogWrite(7, Serial.read()); | 93 analogWrite(6, Serial.read()); |
91 analogWrite(8, Serial.read()); | |
92 analogWrite(9, Serial.read()); | 94 analogWrite(9, Serial.read()); |
95 analogWrite(10, Serial.read()); | |
93 } else { | 96 } else { |
94 // unknown command | 97 // unknown command |
95 } | 98 } |
96 } | 99 } |
97 } | 100 } |