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 }