Bluetooth Control Hat

Hii
PCBWAYER Today I will Show How to Make Smart Hat 


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.



// 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();
}




SCHEMATICS

Schematics

DOWNLOAD




THANKS FOR WATCHING FRIENDS




THNAKU pcbway 🤠🤠🤠


Apply for sponsorship >>
1600+ Projects Sponsored
Nov 12,2019
640 viewsReport item
  • Comments(0)
  • Likes(1)
You can only upload 1 files in total. Each file cannot exceed 2MB. Supports JPG, JPEG, GIF, PNG, BMP
0 / 10000