Hi, i need to reduce the next code as much as possible. I'm a bit noob and i think i can redice a lot the code, but i don't know how:
#include <Manchester.h>
int SDI = 1; //el amarillo
int CKI = 2; //Green wire
long strip_colors[1];
String yosoy = 100;
int todos = 254;
int led = 0;
//int colorrecibido = 0;
String color = 1;
long color1 = 0xFF0000;
long color2 = 0xFF0000;
int estado = 0;
void setup()
{
man.setupReceive(4, MAN_1200);
man.beginReceive();
pinMode(SDI, OUTPUT);
pinMode(CKI, OUTPUT);
strip_colors[0] = 0;
}
void loop() {
strip_colors[0] = color1;
delay(100);
for (int x = 0; x <= 30000; x++){
if (man.receiveComplete()) {
int m = man.getMessage();
man.beginReceive();
if (m > 99 || m == todos){
led = m;
}
if (m > 9 && m < 100){
//colorrecibido = m;
if (estado == 1){
estado = 0;
switch (m){
case 10:
color1 = 0x000000;
color2 = 0x000000;
break;
case 11:
color1 = 0xFFFFFF;
color2 = 0xFFFFFF;
break;
case 12:
color1 = 0x0000FF;
color2 = 0x0000FF;
break;
case 13:
color1 = 0x00FF00;
color2 = 0x00FF00;
break;
case 14:
color1 = 0xFF0000;
color2 = 0xFF0000;
break;
case 15:
color1 = 0xFF00FF;
color2 = 0xFF00FF;
break;
case 16:
color1 = 0xFF0000;
color2 = 0x000000;
break;
case 17:
color1 = 0x0000FF;
color2 = 0x00FF00;
break;
case 18:
color1 = 0x0000FF;
color2 = 0xFF0000;
break;
case 19:
color1 = 0x0000FF;
color2 = 0xFF00FF;
break;
case 20:
color1 = 0x00FF00;
color2 = 0xFF0000;
break;
case 21:
color1 = 0x00FF00;
color2 = 0xFF00FF;
break;
case 22:
color1 = 0xFF0000;
color2 = 0xFF00FF;
break;
case 23:
color1 = 0xFFFF00;
color2 = 0xFFFF00;
break;
case 24:
color1 = 0xFFFF00;
color2 = 0x000000;
break;
case 25:
color1 = 0xFFFF00;
color2 = 0x0000FF;
break;
case 26:
color1 = 0xFFFF00;
color2 = 0x00FF00;
break;
case 27:
color1 = 0xFFFF00;
color2 = 0xFF0000;
break;
}
led = 0;
}
}
if (estado == 0){
if (yosoy == led || todos == led){
estado = 1;
}
}
}
} //aqui acaba el for
if (color == 1){
strip_colors[0] = color1;
for(byte color_bit = 23 ; color_bit != 24 ; color_bit--) {
digitalWrite(CKI, LOW); //Only change data when clock is low
long mask = 1L << color_bit;
if(strip_colors[0] & mask)
digitalWrite(SDI, HIGH);
else
digitalWrite(SDI, LOW);
digitalWrite(CKI, HIGH);
}
color = 2;
}
else{
strip_colors[0] = color2;
for(byte color_bit = 23 ; color_bit != 24 ; color_bit--) {
digitalWrite(CKI, LOW);
long mask = 1L << color_bit;
if(strip_colors[0] & mask)
digitalWrite(SDI, HIGH);
else
digitalWrite(SDI, LOW);
digitalWrite(CKI, HIGH);
}
color = 1;
}
}
it's an attiny (expected to be the attiny25) receiving rf and controlling an only ws2801 led. I've got the code from examples and tutorials. Please help!