#include <Adafruit_NeoPixel.h>#define PIN 2 //pin 2 on teensy shield#define LEDS 15 //number of leds total// Based on Adafruit Neopixel example https://github.com/adafruit/Adafruit_NeoPixel// Parameter 12 = number of pixels in strip// Parameter 2 = 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(15, PIN, NEO_RGB + NEO_KHZ800); //NEO_GRB as below colors showvoidsetup(){
strip.begin();
strip.show(); // Initialize all pixels to 'off'
}
int fademax = 10;
int fadeouts[10] = { 0, 0, 0, 0, 0, 1, 4, 16, 64, 255 }; // of number of fasoutsint fadelevels[LEDS] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; // of number ledsint scancount = 29;
int scanpos[29] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 }; // of number of scan positionsvoidloop(){
// Some example procedures showing how to display to the pixels:for(int i=0; i<scancount; i++) {
fadelevels[scanpos[i]] = fademax + 1;
fadeout();
delay(150); //speed of travel
}
}
voidfadeout(){
for (int i=0; i<LEDS; i++) {
if (fadelevels[i] > 0) fadelevels[i]--;
int level = fadeouts[fadelevels[i]];
// uint32_t c = strip.Color(level, 0, level / 2); // GRB Pink OR RGB baby blue// uint32_t c = strip.Color(level, level, level); // GRB White OR RGB white// uint32_t c = strip.Color(level, 2, level / 4); // GRB green + pink OR RGB blue + red// uint32_t c = strip.Color(level, 0, level / 1); // GRB light purple OR RGB med blue// uint32_t c = strip.Color(level, 3, level / 255); // GRB green + red OR RGB Red + greenuint32_t c = strip.Color(level, 0, level / 60); // GRB red OR RGB green// uint32_t c = strip.Color(100, 10, level / 3); // RGB all green + Blue fade// uint32_t c = strip.Color(1, 10, level / 3); // RGB all RED + blue fade
strip.setPixelColor(i, c);
}
strip.show();
}
// Input a value 0 to 255 to get a color value.// The colours are a transition r - g - b - back to r.uint32_tWheel(byte WheelPos){
if(WheelPos < 85) {
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
} elseif(WheelPos < 170){
WheelPos -= 85;
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else {
WheelPos -= 170;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}
/*
FrSky S-Port Telemetry library example
(c) Pawelsky 20141120
Not for commercial use
Note that you need Teensy 3.x or 328P based (e.g. Pro Mini, Nano, Uno) board and FrSkySportTelemetry library for this example to work
*/
#include "FrSkySportSensor.h"
#include "FrSkySportSensorFcs.h"
#include "FrSkySportSensorFlvss.h"
#include "FrSkySportSensorGps.h"
#include "FrSkySportSensorRpm.h"
#include "FrSkySportSensorVario.h"
#include "FrSkySportSingleWireSerial.h"
#include "FrSkySportTelemetry.h"
#if !defined(__MK20DX128__) && !defined(__MK20DX256__)
#include "SoftwareSerial.h"
#endif
FrSkySportSensorFcs fcs; // Create FCS sensor withdefault ID
FrSkySportSensorFlvss flvss1; // Create FLVSS sensor withdefault ID
FrSkySportSensorFlvss flvss2(FrSkySportSensor::ID15); // Create FLVSS sensor with given ID
FrSkySportSensorGps gps; // Create GPS sensor withdefault ID
FrSkySportSensorRpm rpm; // Create RPM sensor withdefault ID
FrSkySportSensorVario vario; // Create Variometer sensor withdefault ID
FrSkySportTelemetry telemetry; // Create Variometer telemetry object
void setup()
{
// Configure the telemetry serial port and sensors (remember touse & to specify a pointer to sensor)
#if defined(__MK20DX128__) || defined(__MK20DX256__)
telemetry.begin(FrSkySportSingleWireSerial::SERIAL_3, &fcs, &flvss1, &flvss2, &gps, &rpm, &vario);
#else
telemetry.begin(FrSkySportSingleWireSerial::SOFT_SERIAL_PIN_12, &fcs, &flvss1, &flvss2, &gps, &rpm, &vario);
#endif
}
void loop()
{
// Setcurrent/voltage sensor (FCS) data
// (set Voltage source to FAS in menu touse this datafor battery voltage,
// setCurrent source to FAS in menu touse this dataforcurrent readins)
fcs.setData(25.3, // Current consumption in amps
12.6); // Battery voltage in volts
// Set LiPo voltage sensor (FLVSS) data (we use two sensors to simulate 8S battery
// (set Voltage source to Cells in menu touse this datafor battery voltage)
flvss1.setData(4.07, 4.08, 4.09, 4.10, 4.11, 4.12); // Cell voltages in volts (cells 1-6)
flvss2.setData(4.13, 4.14); // Cell voltages in volts (cells 7-8)
// Set GPS data
gps.setData(48.858289, 2.294502, // Latitude and longitude indegreesdecimal (positive for N/E, negative for S/W)
245.5, // Altitude in m (can be nevative)
100.0, // Speed in m/s
90.23, // Course over ground indegrees14, 9, 14, // Date (year - 2000, month, day)
12, 00, 00); // Time (hour, minute, second) - will be affected by timezone setings in your radio
// Set RPM/temperature sensor data
// (setnumberof blades to2in telemetry menu toget correct rpm value)
rpm.setData(200, // Rotations per minute25.6, // Temperature #1indegrees Celsuis (can be negative)
-7.8); // Temperature #1 in degrees Celsuis (can be negative)
// Set variometer data
// (set Variometer source to VSpd in menu touse the vertical speed datafrom this sensor for variometer).
vario.setData(250.5, // Altitude in Meters (can be negative)
-1.5); // Vertical speed in m/s (positive - up, negative - down)
// Send the telemetry data, note that the data will only be sent for sensors
// that are being polled at given moment
telemetry.send();
}
Very nice. Where are those RGB LED boards from?