Changeset - b174f95a3b8d
[Not reviewed]
default
0 2 0
drewp@bigasterisk.com - 10 years ago 2015-06-13 04:33:52
drewp@bigasterisk.com
use proper pwm pins
Ignore-this: 97267b7dc54b2c5187603a00829ea7eb
2 files changed with 25 insertions and 22 deletions:
0 comments (0 inline, 0 general)
rgbled/makefile
Show inline comments
 
BOARD_TAG    = nano328
 
ARDUINO_LIBS = Adafruit_NeoPixel
 
USER_LIB_PATH := $(realpath .)
 
MONITOR_PORT = /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A7027JI6-if00-port0
 
MONITOR_PORT = /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A7027NYX-if00-port0
 

	
 
include /usr/share/arduino/Arduino.mk
rgbled/nanostrip.cc
Show inline comments
 
#include <Arduino.h>
 
#include <Adafruit_NeoPixel.h>
 

	
 
/*
 
  PWM is available on 3,5,6,9,10,11
 
  
 
Pin D3: blacklight pwm
 
Pin D5: neo strip 1
 
Pin D6: neo strip 2
 
Pin D7: R
 
Pin D8: G
 
Pin D9: B
 
Pin D10: blacklight 2
 
Pin D4: neo strip 1
 
Pin D6: R
 
Pin D8: neo strip 2
 
Pin D9: G
 
Pin D10: B
 
Pin D11: blacklight 2
 
 */
 

	
 

	
 
// 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)
 
Adafruit_NeoPixel strip0 = Adafruit_NeoPixel(50, 5, NEO_RGB + NEO_KHZ800);
 
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(50, 6, NEO_RGB + NEO_KHZ800);
 
Adafruit_NeoPixel strip0 = Adafruit_NeoPixel(50, 4, NEO_RGB + NEO_KHZ800);
 
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(50, 8, NEO_RGB + NEO_KHZ800);
 

	
 
#define debugLed 13
 

	
 
void intro() {
 
  uint32_t red = strip0.Color(255,0,0), black = strip0.Color(0,0,0);
 
  for (Adafruit_NeoPixel* strip = &strip0; strip != &strip1; strip = &strip1) {
 
    strip->setPixelColor(0,   red); strip->show(); delay(100);
 
    strip->setPixelColor(0, black); strip->show(); delay(100);
 
    strip->setPixelColor(0,   red); strip->show(); delay(100);
 
    strip->setPixelColor(0, black); strip->show(); delay(100);
 
  }
 
}
 

	
 
void setStrip(Adafruit_NeoPixel& strip) {
 
void setStrip(Adafruit_NeoPixel* strip) {
 
  digitalWrite(debugLed, 1);
 
  for (uint8_t i=0; i < strip.numPixels(); i++) {
 
  for (uint8_t i=0; i < strip->numPixels(); i++) {
 
    while (Serial.available() < 3) {
 
    }
 
    byte r = Serial.read();
 
    byte g = Serial.read();
 
    byte b = Serial.read();
 
    strip.setPixelColor(i, strip.Color(g, r, b));
 
    strip->setPixelColor(i, strip->Color(g, r, b));
 
  }
 
  strip.show();
 
  strip->show();
 

	
 
  digitalWrite(debugLed, 0);
 
}
 

	
 
int main(void) {
 
  init();
 
  pinMode(debugLed, OUTPUT);
 

	
 
  pinMode(3, OUTPUT);
 
  pinMode(7, OUTPUT);
 
  pinMode(8, OUTPUT);
 
  pinMode(6, OUTPUT);
 
  pinMode(9, OUTPUT);
 
  pinMode(10, OUTPUT);
 
  pinMode(11, OUTPUT);
 

	
 
  strip0.begin();
 
  strip1.begin();
 
  intro(); 
 
  Serial.begin(115200);
 
 
 
@@ -70,28 +73,28 @@ int main(void) {
 
    i = Serial.read();
 
    if (i != 0x60) {
 
      continue;
 
    }
 
    i = Serial.read(); // command
 
    if (i == 0) { // set strip: 0x60 0x00 <numPixels * 3 bytes>
 
      setStrip(strip0);
 
      setStrip(&strip0);
 
    } else if (i == 1) { // strip 1
 
      setStrip(strip1);
 
    } else if (i == 2) { // set pwm on D3: 0x60 0x02 <level>
 
      setStrip(&strip1);
 
    } else if (i == 2) { // set pwm on uv1: 0x60 0x02 <level>
 
      while (Serial.available() < 1) {
 
      }
 
      analogWrite(3, Serial.read());
 
    } else if (i == 3) { // set pwm on D10: 0x60 0x03 <level>
 
    } else if (i == 3) { // set pwm on uv2: 0x60 0x03 <level>
 
      while (Serial.available() < 1) {
 
      }
 
      analogWrite(10, Serial.read());
 
      analogWrite(11, Serial.read());
 
    } else if (i == 4) { // set r/g/b: 0x60 0x04 <r> <g> <b>
 
       while (Serial.available() < 3) {
 
       }
 
       analogWrite(7, Serial.read());
 
       analogWrite(8, Serial.read());
 
       analogWrite(6, Serial.read());
 
       analogWrite(9, Serial.read());
 
       analogWrite(10, Serial.read());
 
    } else {
 
        // unknown command
 
    }
 
  }
 
}
0 comments (0 inline, 0 general)