#include <FastLED.h>
#define NUM_LEDS 16
#define DATA_PIN 6
#define MAX_POWER_MILLIAMPS 500
CRGB leds[NUM_LEDS];
int i = 1;
int j = 1;
uint32_t a = 0x00ff00;
uint32_t b = 0x005f00;
uint32_t c = 0x001100;
uint32_t d = 0x000000;
uint32_t k = 0xff0000;
uint32_t l = 0x5f0000;
uint32_t m = 0x110000;
char z;
int dataWrite[8];
char x_pos;
char y_pos;
int x_center = 512;
int y_center = 512;
const int pot1Pin = A0, // define POT1 Potentiometer
pot2Pin = A1, // define POT2 Potentiometer
joystickXPin = A2, // define pin for direction X of joystick
joystickYPin = A3, // define pin for direction Y of joystick
joystickZPin = 7, // define pin for direction Z of joystick
s1Pin = 4, // define pin for S1
s2Pin = 3, // define pin for S2
s3Pin = 2, // define pin for S3
led1Pin = 6, // define pin for LED1 which is close to POT1 and used to indicate the state of POT1
led2Pin = 5, // define pin for LED2 which is close to POT2 and used to indicate the state of POT2
led3Pin = 8; // define pin for LED3 which is close to NRF24L01 and used to indicate the state of NRF24L01
void setup() {
Serial.begin(9600);
FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS); // GRB ordering is typical
FastLED.setBrightness(0);
pinMode(joystickZPin, INPUT); // set led1Pin to input mode
pinMode(s1Pin, INPUT); // set s1Pin to input mode
pinMode(s2Pin, INPUT); // set s2Pin to input mode
pinMode(s3Pin, INPUT); // set s3Pin to input mode
pinMode(led1Pin, OUTPUT); // set led1Pin to output mode
pinMode(led2Pin, OUTPUT); // set led2Pin to output mode
pinMode(led3Pin, OUTPUT);
}
void line1(uint32_t a, uint32_t b, uint32_t c, uint32_t d) {
leds[0] = a; leds[1] = b; leds[2] = c; leds[3] = d;
}
void line2(uint32_t a, uint32_t b, uint32_t c, uint32_t d) {
leds[4] = a; leds[5] = b; leds[6] = c; leds[7] = d;
}
void line3(uint32_t a, uint32_t b, uint32_t c, uint32_t d) {
leds[8] = a; leds[9] = b; leds[10] = c; leds[11] = d;
}
void line4(uint32_t a, uint32_t b, uint32_t c, uint32_t d) {
leds[12] = a; leds[13] = b; leds[14] = c; leds[15] = d;
}
void bg_motif_C() {
if ( i == 1 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 2 ) {
line1(c, c, c, c);
line2(c, d, d, c);
line3(c, d, d, c);
line4(c, c, c, c);
}
if ( i == 3 ) {
line1(b, b, b, b);
line2(b, c, c, b);
line3(b, c, c, b);
line4(b, b, b, b);
}
if ( i == 4 ) {
line1(a, a, a, a);
line2(a, b, b, a);
line3(a, b, b, a);
line4(a, a, a, a);
}
if ( i == 5 ) {
line1(b, b, b, b);
line2(b, a, a, b);
line3(b, a, a, b);
line4(b, b, b, b);
}
if ( i == 6 ) {
line1(c, c, c, c);
line2(c, a, a, c);
line3(c, a, a, c);
line4(c, c, c, c);
}
if ( i == 7 ) {
line1(d, d, d, d);
line2(d, a, a, d);
line3(d, a, a, d);
line4(d, d, d, d);
}
if ( i == 8 ) {
line1(d, d, d, d);
line2(d, b, b, d);
line3(d, b, b, d);
line4(d, d, d, d);
}
if ( i == 9 ) {
line1(d, d, d, d);
line2(d, c, c, d);
line3(d, c, c, d);
line4(d, d, d, d);
}
if ( i == 10 ) {
line1(d, d, d, d);
line2(d, c, c, d);
line3(d, c, c, d);
line4(d, d, d, d);
}
i++;
if (i == 10) {
i = 1;
}
}
void bg_motif_ZZzZ() {
if ( i == 1 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 2 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 3 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 4 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 5 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 6 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 7 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 8 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 9 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
i++;
if (i == 9) {
i = 1;
}
}
void bg_motif_N() {
if ( i == 1 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(a, a, a, a);
}
if ( i == 2 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(a, a, a, a);
line4(b, b, b, b);
}
if ( i == 3 ) {
line1(d, d, d, d);
line2(a, a, a, a);
line3(b, b, b, b);
line4(c, c, c, c);
}
if ( i == 4 ) {
line1(a, a, a, a);
line2(b, b, b, b);
line3(c, c, c, c);
line4(d, d, d, d);
}
if ( i == 5 ) {
line1(b, b, b, b);
line2(c, c, c, c);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 6 ) {
line1(c, c, c, c);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 7 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 8 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 9 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
i++;
if (i == 9) {
i = 1;
}
}
void bg_motif_NE() {
if ( i == 1 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(a, d, d, d);
}
if ( i == 2 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(a, d, d, d);
line4(b, a, d, d);
}
if ( i == 3 ) {
line1(d, d, d, d);
line2(a, d, d, d);
line3(b, a, d, d);
line4(c, b, a, d);
}
if ( i == 4 ) {
line1(a, d, d, d);
line2(b, a, d, d);
line3(c, b, a, d);
line4(d, c, b, a);
}
if ( i == 5 ) {
line1(b, a, d, d);
line2(c, b, a, d);
line3(d, c, b, a);
line4(d, d, c, b);
}
if ( i == 6 ) {
line1(c, b, a, d);
line2(d, c, b, a);
line3(d, d, c, b);
line4(d, d, d, c);
}
if ( i == 7 ) {
line1(d, c, b, a);
line2(d, d, c, b);
line3(d, d, d, c);
line4(d, d, d, d);
}
if ( i == 8 ) {
line1(d, d, c, b);
line2(d, d, d, c);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 9 ) {
line1(d, d, d, c);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
i++;
if (i == 9) {
i = 1;
}
}
void bg_motif_E() {
if ( i == 1 ) {
line1(a, d, d, d);
line2(a, d, d, d);
line3(a, d, d, d);
line4(a, d, d, d);
}
if ( i == 2 ) {
line1(b, a, d, d);
line2(b, a, d, d);
line3(b, a, d, d);
line4(b, a, d, d);
}
if ( i == 3 ) {
line1(c, b, a, d);
line2(c, b, a, d);
line3(c, b, a, d);
line4(c, b, a, d);
}
if ( i == 4 ) {
line1(d, c, d, a);
line2(d, c, b, a);
line3(d, c, b, a);
line4(d, c, b, a);
}
if ( i == 5 ) {
line1(d, d, c, b);
line2(d, d, c, b);
line3(d, d, c, b);
line4(d, d, c, b);
}
if ( i == 6 ) {
line1(d, d, d, c);
line2(d, d, d, c);
line3(d, d, d, c);
line4(d, d, d, c);
}
if ( i == 7 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 8 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 9 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
i++;
if (i == 9) {
i = 1;
}
}
void bg_motif_SE() {
if ( i == 1 ) {
line1(a, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 2 ) {
line1(b, a, d, d);
line2(a, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 3 ) {
line1(c, b, a, d);
line2(b, a, d, d);
line3(a, d, d, d);
line4(d, d, d, d);
}
if ( i == 4 ) {
line1(d, c, b, a);
line2(c, b, a, d);
line3(b, a, d, d);
line4(a, d, d, d);
}
if ( i == 5 ) {
line1(d, d, c, b);
line2(d, c, b, a);
line3(c, b, a, d);
line4(b, a, d, d);
}
if ( i == 6 ) {
line1(d, d, d, c);
line2(d, d, c, b);
line3(d, c, b, a);
line4(c, b, a, d);
}
if ( i == 7 ) {
line1(d, d, d, d);
line2(d, d, d, c);
line3(d, d, c, b);
line4(d, c, b, a);
}
if ( i == 8 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, c);
line4(d, d, c, b);
}
if ( i == 9 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, c);
}
i++;
if (i == 9) {
i = 1;
}
}
void bg_motif_S() {
if ( i == 1 ) {
line1(a, a, a, a);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 2 ) {
line1(b, b, b, b);
line2(a, a, a, a);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 3 ) {
line1(c, c, c, c);
line2(b, b, b, b);
line3(a, a, a, a);
line4(d, d, d, d);
}
if ( i == 4 ) {
line1(d, d, d, d);
line2(c, c, c, c);
line3(b, b, b, b);
line4(a, a, a, a);
}
if ( i == 5 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(c, c, c, c);
line4(b, b, b, b);
}
if ( i == 6 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(c, c, c, c);
}
if ( i == 7 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 8 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 9 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
i++;
if (i == 9) {
i = 1;
}
}
void bg_motif_SW() {
if ( i == 1 ) {
line1(d, d, d, a);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 2 ) {
line1(b, d, a, b);
line2(d, d, d, a);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 3 ) {
line1(d, a, b, c);
line2(d, d, a, b);
line3(d, d, d, a);
line4(d, d, d, d);
}
if ( i == 4 ) {
line1(a, b, c, d);
line2(d, a, b, c);
line3(d, d, a, b);
line4(d, d, d, a);
}
if ( i == 5 ) {
line1(b, c, d, d);
line2(a, b, c, d);
line3(d, a, b, c);
line4(d, d, a, b);
}
if ( i == 6 ) {
line1(c, d, d, d);
line2(b, c, d, d);
line3(a, b, c, d);
line4(d, a, b, c);
}
if ( i == 7 ) {
line1(d, d, d, d);
line2(c, d, d, d);
line3(b, c, d, d);
line4(a, b, c, d);
}
if ( i == 8 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(c, d, d, d);
line4(b, c, d, d);
}
if ( i == 9 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(c, d, d, d);
}
i++;
if (i == 9) {
i = 1;
}
}
void bg_motif_W() {
if ( i == 1 ) {
line1(d, d, d, a);
line2(d, d, d, a);
line3(d, d, d, a);
line4(d, d, d, a);
}
if ( i == 2 ) {
line1(d, d, a, b);
line2(d, d, a, b);
line3(d, d, a, b);
line4(d, d, a, b);
}
if ( i == 3 ) {
line1(d, a, b, c);
line2(d, a, b, c);
line3(d, a, b, c);
line4(d, a, b, c);
}
if ( i == 4 ) {
line1(a, b, c, d);
line2(a, b, c, d);
line3(a, b, c, d);
line4(a, b, c, d);
}
if ( i == 5 ) {
line1(b, c, d, d);
line2(b, c, d, d);
line3(b, c, d, d);
line4(b, c, d, d);
}
if ( i == 6 ) {
line1(c, d, d, d);
line2(c, d, d, d);
line3(c, d, d, d);
line4(c, d, d, d);
}
if ( i == 7 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 8 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 9 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
i++;
if (i == 9) {
i = 1;
}
}
void bg_motif_NW() {
if ( i == 1 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, a);
}
if ( i == 2 ) {
line1(d, d, d, d);
line2(d, d, d, d);
line3(d, d, d, a);
line4(d, d, a, b);
}
if ( i == 3 ) {
line1(d, d, d, d);
line2(d, d, d, a);
line3(d, d, a, b);
line4(d, a, b, c);
}
if ( i == 4 ) {
line1(d, d, d, a);
line2(d, d, a, b);
line3(d, a, b, c);
line4(a, b, c, d);
}
if ( i == 5 ) {
line1(d, d, a, b);
line2(d, a, b, c);
line3(a, b, c, d);
line4(b, c, d, d);
}
if ( i == 6 ) {
line1(d, a, b, c);
line2(a, b, c, d);
line3(b, c, d, d);
line4(c, d, d, d);
}
if ( i == 7 ) {
line1(a, b, c, d);
line2(b, c, d, d);
line3(c, d, d, d);
line4(d, d, d, d);
}
if ( i == 8 ) {
line1(b, c, d, d);
line2(c, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
if ( i == 9 ) {
line1(c, d, d, d);
line2(d, d, d, d);
line3(d, d, d, d);
line4(d, d, d, d);
}
i++;
if (i == 9) {
i = 1;
}
}
void fg_line1(uint32_t a, uint32_t b, uint32_t c, uint32_t d) {
if ( a != z) leds[0] = a;
if ( b != z) leds[1] = b;
if ( c != z) leds[2] = c;
if ( d != z) leds[3] = d;
}
void fg_line2(uint32_t a, uint32_t b, uint32_t c, uint32_t d) {
if ( a != z) leds[4] = a;
if ( b != z) leds[5] = b;
if ( c != z) leds[6] = c;
if ( d != z) leds[7] = d;
}
void fg_line3(uint32_t a, uint32_t b, uint32_t c, uint32_t d) {
if ( a != z) leds[8] = a;
if ( b != z) leds[9] = b;
if ( c != z) leds[10] = c;
if ( d != z) leds[11] = d;
}
void fg_line4(uint32_t a, uint32_t b, uint32_t c, uint32_t d) {
if ( a != z) leds[12] = a;
if ( b != z) leds[13] = b;
if ( c != z) leds[14] = c;
if ( d != z) leds[15] = d;
}
void fg_motif_alert_SE() {
if ( j == 1 ) {
fg_line1(z, z, z, z);
fg_line2(z, z, z, z);
fg_line3(z, z, z, z);
fg_line4(z, z, z, m);
}
if ( j == 2 ) {
fg_line1(z, z, z, z);
fg_line2(z, z, z, z);
fg_line3(z, z, z, z);
fg_line4(z, z, z, l);
}
if ( j == 3 ) {
fg_line1(z, z, z, z);
fg_line2(z, z, z, z);
fg_line3(z, z, z, z);
fg_line4(z, z, z, k);
}
if ( j == 4 ) {
fg_line1(z, z, z, z);
fg_line2(z, z, z, z);
fg_line3(z, z, z, z);
fg_line4(z, z, z, l);
}
if ( j == 5 ) {
fg_line1(z, z, z, z);
fg_line2(z, z, z, z);
fg_line3(z, z, z, z);
fg_line4(z, z, z, m);
}
if ( j == 6 ) {
fg_line1(z, z, z, z);
fg_line2(z, z, z, z);
fg_line3(z, z, z, z);
fg_line4(z, z, z, z);
}
j++;
if (j == 6) {
j = 1;
}
}
void loop() {
dataWrite[0] = analogRead(pot1Pin); // save data of Potentiometer 1
dataWrite[1] = analogRead(pot2Pin); // save data of Potentiometer 2
dataWrite[2] = analogRead(joystickXPin); // save data of direction X of joystick
dataWrite[3] = analogRead(joystickYPin); // save data of direction Y of joystick
dataWrite[4] = digitalRead(joystickZPin); // save data of direction Z of joystick
dataWrite[5] = digitalRead(s1Pin); // save data of switch 1
dataWrite[6] = digitalRead(s2Pin); // save data of switch 2
dataWrite[7] = digitalRead(s3Pin); // save data of switch 3
Serial.print("P1/P2/X/Y/Z/S1/S2/S3 : ");
for (int i = 0; i < sizeof(dataWrite) / 2; i++) {
Serial.print(dataWrite[i]);
Serial.print('\t');
}
Serial.println(' ');
int bright_val = map(dataWrite[0], 0, 1023, 3 ,254);
FastLED.setBrightness(bright_val);
if (dataWrite[2] >= 0 && dataWrite[2] < x_center - 10) {
x_pos = 'l';
}
else if (dataWrite[2] >= x_center - 10 && dataWrite[2] < x_center + 10) {
x_pos = 'c';
}
else if (dataWrite[2] >= x_center + 10 && dataWrite[2] <= 1023) {
x_pos = 'r';
}
else if (dataWrite[3] >= y_center - 10 && dataWrite[3] < y_center + 10) {
y_pos = 'c';
}
else if (dataWrite[3] >= y_center + 10 && dataWrite[3] <= 1023) {
y_pos = 'd';
}
if ( y_pos == 'u' && x_pos == 'l' ) {
bg_motif_NW();
//Serial.println("bg_motif_Nw");
} else if ( y_pos == 'u' && x_pos == 'c' ) {
bg_motif_N();
//Serial.println("bg_motif_N");
} else if ( y_pos == 'u' && x_pos == 'r' ) {
bg_motif_NE();
//Serial.println("bg_motif_NE");
} else if ( y_pos == 'c' && x_pos == 'l' ) {
bg_motif_W();
//Serial.println("bg_motif_W");
} else if ( y_pos == 'c' && x_pos == 'c' ) {
bg_motif_C();
//Serial.println("bg_motif_C");
} else if ( y_pos == 'c' && x_pos == 'r' ) {
bg_motif_E();
//Serial.println("bg_motif_E");
} else if ( y_pos == 'd' && x_pos == 'l' ) {
bg_motif_SW();
// Serial.println("bg_motif_SW");
} else if ( y_pos == 'd' && x_pos == 'c' ) {
bg_motif_S();
//Serial.println("bg_motif_S");
} else if ( y_pos == 'd' && x_pos == 'r' ) {
bg_motif_SE();
Serial.println("bg_motif_SE");
} else
bg_motif_C();
//Serial.println("bg_motif_C (else)");
//Serial.print(y_pos);
//Serial.println(x_pos);
if (dataWrite[5] == 1 ) {
fg_motif_alert_SE();
}
FastLED.show();
int delay_val = map(dataWrite[1], 0, 1023, 5 ,500);
delay(delay_val);
}