#define weisb PA0 #define weisa PA1 #define grun4 PA2 #define rot4 PA3 #define blau4 PA4 #define sensor PA5 #define grun5 PA6 #define rot5 PA7 #define rot2 PA8 #define grun2 PA9 #define blau5 PB0 #define rot6 PB1 #define blau3 PB5 #define txt PB6 #define rxt PB7 #define rot3 PB8 #define grun3 PB9 #define blau6 PB10 #define grun6 PB11 #define grun1 PB12 #define blau1 PB13 #define rot1 PB14 #define blau2 PB15 #define incommingm 30; String incomming = ""; boolean incommingok = false; boolean weiter = false; int incomminga[30]; int duty[21]; int RGB[7]; int light[7]; int lights[7]; int darkness[7]; int duty1 =0; int duty2 =0; int duty3 =0; int woo=0; long allfcount = micros(); int fcount1 =0; void setup() { pinMode(weisa, OUTPUT); pinMode(weisb, OUTPUT); pinMode(rot1, OUTPUT); pinMode(blau1, OUTPUT); pinMode(grun1, OUTPUT); pinMode(rot2, OUTPUT); pinMode(blau2, OUTPUT); pinMode(grun2, OUTPUT); pinMode(rot3, OUTPUT); pinMode(blau3, OUTPUT); pinMode(grun3, OUTPUT); pinMode(rot4, OUTPUT); pinMode(blau4, OUTPUT); pinMode(grun4, OUTPUT); pinMode(rot5, OUTPUT); pinMode(blau5, OUTPUT); pinMode(grun5, OUTPUT); pinMode(rot6, OUTPUT); pinMode(blau6, OUTPUT); pinMode(grun6, OUTPUT); Serial.begin(9600); } void loop() { while (Serial.available() > 0) { incomminga[woo] = Serial.parseInt(); woo++; ledset(); if (Serial.read() == '\n') { duty[0] = incomminga[0]; duty[1] = incomminga[1]; RGB[1] = incomminga[2]; light[1] = incomminga[3]; RGB[2] = incomminga[4]; light[2] = incomminga[5]; RGB[3] = incomminga[6]; light[3] = incomminga[7]; RGB[4] = incomminga[8]; light[4] = incomminga[9]; RGB[5] = incomminga[10]; light[5] = incomminga[11]; RGB[6] = incomminga[12]; light[6] = incomminga[12]; rgbcalc(); woo=0; } ledset(); }} void ledset(){ while ((micros()-allfcount) >= 10) { fcount1++; if (fcount1 == (151-duty[0])) { digitalWrite(weisa, HIGH );} if (fcount1 == (151-duty[1])) { digitalWrite(weisb, HIGH );} if (fcount1 == (151-duty[2])) { digitalWrite(rot1, HIGH );} if (fcount1 == (151-duty[3])) { digitalWrite(grun1, HIGH );} if (fcount1 == (151-duty[4])) { digitalWrite(blau1, HIGH );} if (fcount1 == (151-duty[5])) { digitalWrite(rot2, HIGH );} if (fcount1 == (151-duty[6])) { digitalWrite(grun2, HIGH );} if (fcount1 == (151-duty[7])) { digitalWrite(blau2, HIGH );} if (fcount1 == (151-duty[8])) { digitalWrite(rot3, HIGH );} if (fcount1 == (151-duty[9])) { digitalWrite(grun3, HIGH );} if (fcount1 == (151-duty[0])) { digitalWrite(blau3, HIGH );} if (fcount1 == (151-duty[11])) { digitalWrite(rot4, HIGH );} if (fcount1 == (151-duty[12])) { digitalWrite(grun4, HIGH );} if (fcount1 == (151-duty[13])) { digitalWrite(blau4, HIGH );} if (fcount1 == (151-duty[14])) { digitalWrite(rot5, HIGH );} if (fcount1 == (151-duty[15])) { digitalWrite(grun5, HIGH );} if (fcount1 == (151-duty[16])) { digitalWrite(blau5, HIGH );} if (fcount1 == (151-duty[17])) { digitalWrite(rot6, HIGH );} if (fcount1 == (151-duty[18])) { digitalWrite(grun6, HIGH );} if (fcount1 == (151-duty[19])) { digitalWrite(blau6, HIGH );} if (fcount1 >= 153) { digitalWrite(weisa, LOW ); digitalWrite(weisb, LOW ); digitalWrite(rot1, LOW ); digitalWrite(blau1, LOW ); digitalWrite(grun1, LOW ); digitalWrite(rot2, LOW ); digitalWrite(blau2, LOW ); digitalWrite(grun2, LOW ); digitalWrite(rot3, LOW ); digitalWrite(blau3, LOW ); digitalWrite(grun3, LOW ); digitalWrite(rot4, LOW ); digitalWrite(blau4, LOW ); digitalWrite(grun4, LOW ); digitalWrite(rot5, LOW ); digitalWrite(blau5, LOW ); digitalWrite(grun5, LOW ); digitalWrite(rot6, LOW ); digitalWrite(blau6, LOW ); digitalWrite(grun6, LOW ); fcount1 = 0;} allfcount = micros(); }} void rgbcalc(void) { for ( uint8_t m = 0; m < 6; m++) { if (light[m] > 150) {darkness[m] =0; lights[m] = light[m] -150;} if (light[m] < 150) {darkness[m] =light[m]; lights[m] =0;} if(RGB[m] >=0 && RGB[m] <=150) {duty1 =150 -darkness[m]; duty2 =RGB[m] + lights[m]; duty3 =0 + lights[m];} //rot ->gelb (rotmax grün+ blau0) if(RGB[m] >=151 && RGB[m] <=301) {duty1 =150 -(RGB[m] -151) +lights[m]; duty2 =150 -darkness[m]; duty3 =0 +lights[m];} //gelb ->grün (rot- grünmax blau0) if(RGB[m] >=302 && RGB[m] <=452) {duty1 =0+lights[m]; duty2 =150 -darkness[m]; duty3 =(RGB[m] - 302) + lights[m];} //grün ->cyan (rot0 grünmax blau+) if(RGB[m] >=453 && RGB[m] <=603) {duty1 =0+lights[m]; duty2 =150 -(RGB[m] - 453) +lights[m]; duty3 =150 -darkness[m];} //cyan ->blau (rot0 grün- blaumax) if(RGB[m] >=604 && RGB[m] <=754) {duty1 =(RGB[m]-604) +lights[m]; duty2 =0 +lights[m]; duty3 =150 -darkness[m];} //blau ->lila (rot+ grün0 blaumax) if(RGB[m] >=755 && RGB[m] <=905) {duty1 =150 -darkness[m]; duty2 =0+lights[m]; duty3 =150- (RGB[m] -756) +lights[m];} //lila ->rot (rotmax grün0 blau-) if(RGB[m] >= 906) {RGB[m] =0;} if(m == 1) {duty[2] = duty1; duty[3] = duty2; duty[4] = duty3;} if(m == 2) {duty[5] = duty1; duty[6] = duty2; duty[7] = duty3;} if(m == 3) {duty[8] = duty1; duty[9] = duty2; duty[10] = duty3;} if(m == 4) {duty[11] = duty1; duty[12] = duty2; duty[13] = duty3;} if(m == 5) {duty[14] = duty1; duty[15] = duty2; duty[16] = duty3;} if(m == 6) {duty[17] = duty1; duty[18] = duty2; duty[19] = duty3;} }}