whatever work I had before & left on this machine

This commit is contained in:
Vivian Lim 2018-02-13 11:53:10 -08:00
parent 19b37ba30a
commit c97424ade8
3 changed files with 156 additions and 54 deletions

View File

@ -4,7 +4,7 @@
// ----------------------------------------------------------------------------------------------
#define BUFSIZE 128 // Size of the read buffer for incoming data
#define VERBOSE_MODE true // If set to 'true' enables debug output
#define BLE_READPACKET_TIMEOUT 500 // Timeout in ms waiting to read a response
#define BLE_READPACKET_TIMEOUT 5 // Timeout in ms waiting to read a response
// SOFTWARE UART SETTINGS
@ -12,10 +12,10 @@
// The following macros declare the pins that will be used for 'SW' serial.
// You should use this option if you are connecting the UART Friend to an UNO
// ----------------------------------------------------------------------------------------------
#define BLUEFRUIT_SWUART_RXD_PIN 9 // Required for software serial!
#define BLUEFRUIT_SWUART_TXD_PIN 10 // Required for software serial!
#define BLUEFRUIT_UART_CTS_PIN -1//11 // Required for software serial!
#define BLUEFRUIT_UART_RTS_PIN -1 // Optional, set to -1 if unused
//#define BLUEFRUIT_SWUART_RXD_PIN 9 // Required for software serial!
//#define BLUEFRUIT_SWUART_TXD_PIN 10 // Required for software serial!
//#define BLUEFRUIT_UART_CTS_PIN -1//11 // Required for software serial!
//#define BLUEFRUIT_UART_RTS_PIN -1 // Optional, set to -1 if unused
// HARDWARE UART SETTINGS

View File

@ -1,3 +1,31 @@
#include <noise.h>
#include <bitswap.h>
#include <fastspi_types.h>
#include <pixelset.h>
#include <fastled_progmem.h>
#include <led_sysdefs.h>
#include <hsv2rgb.h>
#include <fastled_delay.h>
#include <colorpalettes.h>
#include <color.h>
#include <fastspi_ref.h>
#include <fastspi_bitbang.h>
#include <controller.h>
#include <fastled_config.h>
#include <colorutils.h>
#include <chipsets.h>
#include <pixeltypes.h>
#include <fastspi_dma.h>
#include <fastpin.h>
#include <fastspi_nop.h>
#include <platforms.h>
#include <lib8tion.h>
#include <cpp_compat.h>
#include <fastspi.h>
#include <FastLED.h>
#include <dmx.h>
#include <power_mgt.h>
/*********************************************************************
This is an example for our nRF51822 based Bluefruit LE modules
@ -15,7 +43,6 @@
#include <string.h>
#include <Arduino.h>
#include <SPI.h>
#include <Adafruit_NeoPixel.h>
#include "Adafruit_BLE.h"
#include "Adafruit_BluefruitLE_SPI.h"
#include "Adafruit_BluefruitLE_UART.h"
@ -55,36 +82,50 @@
-----------------------------------------------------------------------*/
#define FACTORYRESET_ENABLE 1
#define PIN 9
#define NUMPIXELS 10
/*-----------------------------------------------------------------------*/
#define STRING_PIN 9
#define ONBOARD_PIN 8
#define NUM_LED_STRING 9
#define NUM_LED_ONBOARD 1
#define NUM_LED NUM_LED_STRING + NUM_LED_ONBOARD
#define MIN_BRIGHTNESS 10
#define MAX_BRIGHTNESS 200
#define HUE_SPREAD 15
#define HUE_RATE_MODULO 10 //96 // increasing this value makes the hue change slower
#define BT_CHECK_CONN_MODULO 20
#define MIN_SATURATION 192
#define MAX_SATURATION 255
#define MIN_RATE 1
#define MAX_RATE 3
#define SPEED 20
CRGB leds[NUM_LED];
byte clock = 0;
byte globalHue = 0;
byte hues[NUM_LED + 1];
int brightnesses[NUM_LED + 1];
int saturations[NUM_LED + 1];
int rates[NUM_LED + 1];
bool isInDataMode = false;
bool fixedHue = false;
/*=========================================================================*/
Adafruit_NeoPixel pixel = Adafruit_NeoPixel(NUMPIXELS, PIN);
// Create the bluefruit object, either software serial...uncomment these lines
/*
SoftwareSerial bluefruitSS = SoftwareSerial(BLUEFRUIT_SWUART_TXD_PIN, BLUEFRUIT_SWUART_RXD_PIN);
Adafruit_BluefruitLE_UART ble(bluefruitSS, BLUEFRUIT_UART_MODE_PIN,
BLUEFRUIT_UART_CTS_PIN, BLUEFRUIT_UART_RTS_PIN);
*/
/* ...or hardware serial, which does not need the RTS/CTS pins. Uncomment this line */
// Create the bluefruit object
Adafruit_BluefruitLE_UART ble(BLUEFRUIT_HWSERIAL_NAME, BLUEFRUIT_UART_MODE_PIN);
/* ...hardware SPI, using SCK/MOSI/MISO hardware SPI pins and then user selected CS/IRQ/RST */
//Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
/* ...software SPI, using SCK/MOSI/MISO user-defined SPI pins and then user selected CS/IRQ/RST */
//Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_SCK, BLUEFRUIT_SPI_MISO,
// BLUEFRUIT_SPI_MOSI, BLUEFRUIT_SPI_CS,
// BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
// A small helper
void error(const __FlashStringHelper*err) {
Serial.println(err);
while (1);
while (1) {
// flash red led
digitalWrite(7, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait 1 second
digitalWrite(7, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait 1 second
}
}
// function prototypes over in packetparser.cpp
@ -107,13 +148,15 @@ void setup(void)
//while (!Serial); // required for Flora & Micro
delay(500);
// turn off neopixel
pixel.begin(); // This initializes the NeoPixel library.
for(uint8_t i=0; i<NUMPIXELS; i++) {
//pixel.setPixelColor(i, pixel.Color(0,0,0)); // off
pixel.setPixelColor(i, pixel.Color(8,8,8)); // default
}
pixel.show();
FastLED.addLeds<NEOPIXEL, STRING_PIN>(leds, NUM_LED_STRING);
FastLED.addLeds<NEOPIXEL, ONBOARD_PIN>(leds, NUM_LED_STRING, NUM_LED_ONBOARD);
for (int i=0; i<NUM_LED; i++)
{
hues[i] = globalHue + random(0,HUE_SPREAD);
saturations[i] = random(MIN_SATURATION,MAX_SATURATION);
rates[i] = random(MIN_RATE,MAX_RATE);
brightnesses[i] = random(MIN_BRIGHTNESS,MAX_BRIGHTNESS);
}
Serial.begin(115200);
Serial.println(F("Adafruit Bluefruit Neopixel Color Picker Example"));
@ -143,26 +186,11 @@ void setup(void)
Serial.println("Requesting Bluefruit info:");
/* Print Bluefruit information */
ble.info();
//ble.setMode(BLUEFRUIT_MODE_DATA);
Serial.println(F("Please use Adafruit Bluefruit LE app to connect in Controller mode"));
Serial.println(F("Then activate/use the sensors, color picker, game controller, etc!"));
Serial.println();
ble.verbose(false); // debug info is a little annoying after this point!
/* Wait for connection */
while (! ble.isConnected()) {
delay(500);
}
Serial.println(F("***********************"));
// Set Bluefruit to DATA mode
Serial.println( F("Switching to DATA mode!") );
ble.setMode(BLUEFRUIT_MODE_DATA);
Serial.println(F("***********************"));
}
/**************************************************************************/
@ -172,6 +200,56 @@ void setup(void)
/**************************************************************************/
void loop(void)
{
// Twinkle
for (int i=0; i<NUM_LED; i++)
{
brightnesses[i] += rates[i];
// Rate is positive but the new brightness is lower, so we overflowed.
if (brightnesses[i] >= MAX_BRIGHTNESS)
{
// Flip the sign of the rate & start decaying light.
rates[i] *= -1;
brightnesses[i] += rates[i];
}
// Rate is negative but the new brightness is bigger, so we underflowed.
else if (brightnesses[i] <= MIN_BRIGHTNESS)
{
// reset this pixel to a different color and start anew.
hues[i] = globalHue + random(0,HUE_SPREAD);
saturations[i] = random(MIN_SATURATION,MAX_SATURATION);
rates[i] = random(MIN_RATE,MAX_RATE);
brightnesses[i] = MIN_BRIGHTNESS;
}
else
{
brightnesses[i] += rates[i];
}
leds[i] = CHSV(hues[i], saturations[i], brightnesses[i]);
}
FastLED.show();
clock++;
if (clock % HUE_RATE_MODULO == 0 && !fixedHue)
{
globalHue++;
}
delay(SPEED);
if (!isInDataMode) {
if (clock % BT_CHECK_CONN_MODULO == 0 && ble.isConnected()) { // ble.isConnected() takes time, so don't do it every loop
isInDataMode = true;
Serial.println(F("***********************"));
// Set Bluefruit to DATA mode
Serial.println( F("Switching to DATA mode!") );
ble.setMode(BLUEFRUIT_MODE_DATA);
Serial.println(F("***********************"));
ble.verbose(false); // debug info is a little annoying after this point!
}
return;
}
/* Wait for new data to arrive */
uint8_t len = readPacket(&ble, BLE_READPACKET_TIMEOUT);
if (len == 0) return;
@ -192,10 +270,34 @@ void loop(void)
if (blue < 0x10) Serial.print("0");
Serial.println(blue, HEX);
if (red == 0 && blue == 0 && green == 0) {
// receiving #000000 is a special control color that enables the hue cycle.
fixedHue = false;
}
else {
CRGB color(red, green, blue);
CHSV hsv = rgb2hsv_approximate(color);
globalHue = hsv.hue;
fixedHue = true;
}
// reset them all
for (int i=0; i<NUM_LED; i++) {
hues[i] = globalHue + random(0,HUE_SPREAD);
saturations[i] = random(MIN_SATURATION,MAX_SATURATION);
rates[i] = random(MIN_RATE,MAX_RATE);
brightnesses[i] = MIN_BRIGHTNESS;
if (rates[i] < 0) {
rates[i] = rates[i] * -1;
}
}
/*
for(uint8_t i=0; i<NUMPIXELS; i++) {
pixel.setPixelColor(i, pixel.Color(red,green,blue));
}
pixel.show(); // This sends the updated pixel color to the hardware.
*/
}
}

View File

@ -47,7 +47,7 @@ int saturations[NUM_LED];
int rates[NUM_LED];
void setup() {
FastLED.addLeds<NEOPIXEL, 0>(leds, NUM_LED);
FastLED.addLeds<NEOPIXEL, PIN>(leds, NUM_LED);
for (int i=0; i<NUM_LED; i++)
{
hues[i] = globalHue + random(0,HUE_SPREAD);