#include<Wire.h>
const int MPU=0x68;
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
int16_t AcX1,AcY1,AcZ1,GyX1,GyY1,GyZ1;
int inPin1 = 4; // choose the input pin (for a pushbutton)
int inPin2 = 2;
int inPin3 = 3;
int inPin4 = 12;
#include "FastLED.h"
#define NUM_LEDS 43
#define DATA_PIN 6
CRGB leds[NUM_LEDS];
int val = 0; // variable for reading the pin status
int flag = 0;
int toggle = 1;
int toggle1 = 0;
int toggle2 = 0;
int toggle3 = 0;
boolean one = false;
boolean two = false;
boolean three = false;
boolean four = false;
boolean five = false;
boolean six = false;
//boolean seven = false;
//boolean eight = false;
//boolean nine = false;
void setup(){
Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B);
Wire.write(0);
Wire.endTransmission(true);
pinMode(inPin1, INPUT); // declare pushbutton as input
pinMode(inPin2, INPUT);
pinMode(inPin3, INPUT);
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
for(int i = 0; i < NUM_LEDS ; i++) {
leds[i] = CRGB(0,200,0);
}
FastLED.show();
AcX=Wire.read()<<8|Wire.read();
AcY=Wire.read()<<8|Wire.read();
AcZ=Wire.read()<<8|Wire.read();
GyX=Wire.read()<<8|Wire.read();
GyY=Wire.read()<<8|Wire.read();
GyZ=Wire.read()<<8|Wire.read();
Serial.begin(9600);
}
void loop(){
//Serial.println("Hello");
Wire.beginTransmission(MPU);
Wire.write(0x3B);
Wire.endTransmission(false);
Wire.requestFrom(MPU,12,true);
AcX1=Wire.read()<<8|Wire.read();
AcY1=Wire.read()<<8|Wire.read();
AcZ1=Wire.read()<<8|Wire.read();
GyX1=Wire.read()<<8|Wire.read();
GyY1=Wire.read()<<8|Wire.read();
GyZ1=Wire.read()<<8|Wire.read();
//Serial.print("Accelerometer: ");
//Serial.print("X = ");
Serial.print(" ");
Serial.print(AcX1-AcX);
Serial.print(" ");
Serial.print(AcY1-AcY);
Serial.print(" ");
Serial.print(AcZ1-AcZ);
Serial.print(" ");
//Serial.print("Gyroscope: ");
//Serial.print("X = ");
Serial.print(GyX1 - GyX);
Serial.print(" ");
Serial.print(GyY1 - GyY);
Serial.print(" ");
Serial.print(GyZ1 - GyZ);
Serial.print(" ");
val = digitalRead(inPin1); // read input value
if (val == HIGH) {
if(toggle1==0){
Serial.print(1);
one = true;
}
else{
Serial.print(0);
//one = false;
}
toggle1=1;
} else {
if(toggle1==1){
Serial.print(2);
one = false;
}
else {
Serial.print(0);
//two = false;
}
toggle1 = 0;
}
Serial.print(" ");
val = digitalRead(inPin2); // read input value
if (val == HIGH) {
if(toggle2==0){
Serial.print(1);
two = true;
}
else{
Serial.print(0);
//three = false;
}
toggle2=1;
} else {
if(toggle2==1){
Serial.print(2);
two = false;
}
else {
Serial.print(0);
//four = false;
}
toggle2 = 0;
}
Serial.print(" ");
val = digitalRead(inPin3); // read input value
if (val == HIGH) {
if(toggle3==0){
Serial.print(1);
three = true;
}
else{
Serial.print(0);
//five = false;
}
toggle3=1;
} else {
if(toggle3==1){
Serial.print(2);
three = false;
}
else {
Serial.print(0);
//six = false;
}
toggle3 = 0;
}
Serial.print(" ");
val = digitalRead(inPin4); // read input value
if (val == HIGH) {
// check if the input is HIGH (button released)
//digitalWrite(ledPin, LOW); // turn LED OFF
if(toggle==1){
flag+=1;
flag = flag % 7;
toggle = 0;}
Serial.print(flag);
} else {
toggle = 1;
Serial.print(flag);
//digitalWrite(ledPin, HIGH); // turn LED ON
}
Serial.println(" ");
//Serial.print(" ");
if(flag == 0){
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB::Black;}
FastLED.show();
}
if(flag == 1){
//note mode
boolean change = true;
if(one && change){
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB(100,0,200);}
FastLED.show();
change = false;
}
// else if(!one && change){
// for(int i=0;i<NUM_LEDS;i++){
// leds[i]= CRGB(0,100,200);}
// FastLED.show();
// change = false;
// }
else if(two && change){
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB(50,50,200);}
FastLED.show();
change = false;
}
// else if(!two && change){
// for(int i=0;i<NUM_LEDS;i++){
// leds[i]= CRGB(100,100,200);}
// FastLED.show();
// change = false;
// }
else if(three && change){
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB(150,50,200);}
FastLED.show();
change = false;
}
// else if(!three && change){
// for(int i=0;i<NUM_LEDS;i++){
// leds[i]= CRGB(50,150,200);}
// FastLED.show();
// change = false;
// }
else{
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB(0,0,200);}
FastLED.show();
}
}
if(flag == 2){
//drum mode
boolean change = true;
if(one && change){
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB(100,200,0);}
FastLED.show();
change = false;
}
// else if(!one && change){
// for(int i=0;i<NUM_LEDS;i++){
// leds[i]= CRGB(0,200,100);}
// FastLED.show();
// change = false;
// }
else if(two && change){
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB(50,200,50);}
FastLED.show();
change = false;
}
// else if(!two && change){
// for(int i=0;i<NUM_LEDS;i++){
// leds[i]= CRGB(100,200,100);}
// FastLED.show();
// change = false;
// }
else if(three && change){
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB(150,200,50);}
FastLED.show();
change = false;
}
// else if(!three && change){
// for(int i=0;i<NUM_LEDS;i++){
// leds[i]= CRGB(50,200,150);}
// FastLED.show();
// change = false;
// }
else{
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB(200,0,200);}
FastLED.show();
}
}
if(flag==3){
//colour 1
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB(200,0,0);}
FastLED.show();
}
if(flag==4){
//colour 2
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB(0,100,100);}
FastLED.show();
}
if(flag == 5){
//colour 3
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB(100,100,0);}
FastLED.show();
}
if(flag == 6){
//colour 4
for(int i=0;i<NUM_LEDS;i++){
leds[i]= CRGB(100,0,100);}
FastLED.show();
}
AcX=AcX1;
AcY=AcY1;
AcZ=AcZ1;
GyX=GyX1;
GyY=GyY1;
GyZ=GyZ1;
// for(int i=0;i<NUM_LEDS;i++){
// leds[i]= CRGB(0,100,220);
// delay(10);
// }
// FastLED.show();
// for(int i=0;i<NUM_LEDS;i++){
// leds[i]= CRGB(0,200,50);
// delay(10);
// }
// FastLED.show();
}