Project showcase

Bluetooth Control Hat © CC BY-NC

The ultimate upgrade to your hat.

  • 2,244 views
  • 3 comments
  • 14 respects

Components and supplies

11114 01a
SparkFun Arduino Pro Mini 328 - 3.3V/8MHz
×1
Gus 1719
C.H.I.P. Approved 3.7 V LiPo Battery
×1
09873 01a
SparkFun FTDI Basic Breakout - 3.3V
×1
Bluetooth Module HC-05
×1
Addressable LED Strip ws2812b
I used 16 LEDs with 30 leds/m
×1
a HAT
×1

Necessary tools and machines

09507 01
Soldering iron (generic)

Apps and online services

About this project

I wanted to upgrade my hat with LEDs but not just something static or a solution that will require me to program the hat each time I want to change the colors.

Schematics

Schematics
Hat bb n1le4gg6vn

Code

Arduino CodeArduino
// Pro Mini 3.3V
// Blutooth pin 3 - RX, pin 4 - TX
// LED Strip 16 leds - pin 6 - DATA
// Lipo 3.7V

#include <Adafruit_NeoPixel.h>
#include <SoftwareSerial.h>

#define  SERIAL_PORT_SPEED  115200
#define  BT_PORT_SPEED  9600

#define PINLED 6
#define NumLED 16

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NumLED, PINLED, NEO_GRB + NEO_KHZ800);

int Mode = 0;
int ParameterR = 0;
int ParameterG = 0;
int ParameterB = 170;
int ParameterSpeed = 60;
int ParameterBrightness = 130;
String MsgBT = "";
String strTemp;
char c;
SoftwareSerial BT(3, 4);// RX | TX


void setup() {
  strip.begin();
  strip.setBrightness(ParameterBrightness);
  strip.show(); // Initialize all pixels to 'off'
  BT.begin(BT_PORT_SPEED);
  Serial.begin(SERIAL_PORT_SPEED);
  MsgBT.reserve(150);
}

void loop() {

  if (BT.available())
  {
    MsgBT = BT.readString();

    Serial.print("bytes read: ");
    Serial.println(MsgBT.length());
    Serial.println(MsgBT);

    if (MsgBT == "999") { // Turn Off
      TurnOff();
      Mode = 1;
    } else
    {
      strTemp = (MsgBT.substring(0, MsgBT.indexOf(",")));
      ParameterR = strTemp.toInt();
      MsgBT = MsgBT.substring(MsgBT.indexOf(",") + 1);

      strTemp = (MsgBT.substring(0, MsgBT.indexOf(",")));
      ParameterG = strTemp.toInt();
      MsgBT = MsgBT.substring(MsgBT.indexOf(",") + 1);

      strTemp = (MsgBT.substring(0, MsgBT.indexOf(",")));
      ParameterB = strTemp.toInt();
      MsgBT = MsgBT.substring(MsgBT.indexOf(",") + 1);

      strTemp = (MsgBT.substring(0, MsgBT.indexOf(",")));
      ParameterSpeed = strTemp.toInt();
      MsgBT = MsgBT.substring(MsgBT.indexOf(",") + 1);

      strTemp = (MsgBT.substring(0, MsgBT.indexOf("#")));
      ParameterBrightness = strTemp.toInt();

      Serial.print(ParameterR);
      Serial.print(",");
      Serial.print(ParameterG);
      Serial.print(",");
      Serial.print(ParameterB);
      Serial.print(",");
      Serial.print(ParameterSpeed);
      Serial.print(",");
      Serial.print(ParameterBrightness);
      Serial.println();

      Mode = 0;
      MsgBT = "";
    }
  }

  switch (Mode) {
    case 0:
      strip.setBrightness(ParameterBrightness);
      strip.show();
      if (ParameterSpeed == 400) {
        for (uint16_t i = 0; i < strip.numPixels(); i++)
          strip.setPixelColor(i, strip.Color(ParameterR, ParameterG, ParameterB));
        strip.show();
        Mode = 1;
      }
      else {
        colorWipe(strip.Color(ParameterR, ParameterG, ParameterB), ParameterSpeed);
        if (BT.available()) break;
        colorWipe(strip.Color(0, 0, 0), ParameterSpeed);

      }
      break;
    case 1:
      Serial.println("Mode 1");
      break;
  }
}


// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for (uint16_t i = 0; i < strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
    if (BT.available()) return;
    delay(wait);
  }
}

void TurnOff() {
  for (uint16_t i = 0; i < strip.numPixels(); i++)
    strip.setPixelColor(i, strip.Color(0, 0, 0));
  strip.show();
}
Android AppJava
The Android App was built using MIT app inventor.
No preview (download only).

Comments

Similar projects you might like

IR Home Automation on DFRobot's Relay Shield

Project tutorial by Techduino

  • 171 views
  • 0 comments
  • 4 respects

Workspace Environment Monitor - enVMon

Project showcase by Team comcrazy

  • 394 views
  • 2 comments
  • 8 respects

Sesame

Project showcase by gibatronic

  • 4,604 views
  • 7 comments
  • 12 respects

Aurdino Radar With Processing

Project in progress by Akshay6766

  • 1,057 views
  • 0 comments
  • 7 respects

Laundry IFTTT Alert

Project tutorial by danvanf

  • 603 views
  • 0 comments
  • 4 respects

Butterfly Alarm Clock

Project tutorial by Patrick Prescott

  • 872 views
  • 0 comments
  • 5 respects
Add projectSign up / Login