How can i inprove this code??
hello starter arduino wrote code works takes plenty of space , isnt nice code idea how can improve it?
code: [select]
int pinbutton = 2;
int led = 12;
int stateled = high;//low
int statebutton;
int previous = low;
string str;
long time = 0;
long debounce = 200;
int pinbutton2 = 3;
int led2 = 11;
int stateled2 = high;//low
int statebutton2;
int previous2 = low;
long time2 = 0;
int pinbutton3 = 4;
//int led2 = 11;
int stateled3 = high;//low
int statebutton3;
int previous3 = low;
long time3 = 0;
void setup() {
serial.begin(9600);
pinmode(pinbutton, input);
pinmode(led, output);
pinmode(pinbutton2, input);
pinmode(led2, output);
pinmode(pinbutton3, input);
}
void loop() {
statebutton = digitalread(pinbutton);
statebutton2 = digitalread(pinbutton2);
statebutton3 = digitalread(pinbutton3);
if(serial.available() > 0)
{
str = serial.readstringuntil('\n');
serial.println(str);
if(str.substring(0,2) == "01") {
if(str.substring(2,5) == "on") {
serial.println("stateled high");
stateled = low;//high
digitalwrite(12,low);//high
}
else if(str.substring(2,6) == "off"){
serial.println("stateled low");
stateled = high;//low
digitalwrite(12,high);//low
}
}
if(str.substring(0,2) == "02") {
if(str.substring(2,5) == "on") {
serial.println("stateled2 high");
stateled2 = low;//high
digitalwrite(11,low);//high
}
else if(str.substring(2,6) == "off"){
serial.println("stateled2 low");
stateled2 = high;//low
digitalwrite(11,high);//low
}
}
if(str.substring(0,2) == "03") {
if(str.substring(2,5) == "on") {
serial.println("stateled3 high");
stateled3 = low;//high
digitalwrite(led, low);//high
digitalwrite(led2, low);//high
stateled = low;//high
stateled2 = low;//high
}
else if(str.substring(2,6) == "off"){
serial.println("stateled3 low");
stateled3 = high;//low
digitalwrite(led, high);//low
digitalwrite(led2, high);//low
stateled = high;//low
stateled2 = high;//low
}
}
}
if(statebutton == high && previous == low && millis() - time > debounce) {
if(stateled == low)//high
{
serial.println("stateled low");
stateled = high;//low
} else {
serial.println("stateled high");
stateled = low; //high
}
time = millis();
}
digitalwrite(led, stateled);
previous == statebutton;
if(statebutton2 == high && previous2 == low && millis() - time2 > debounce) {
if(stateled2 == low)//high
{
serial.println("stateled2 low");
stateled2 = high;//low
} else {
serial.println("stateled2 high");
stateled2 = low;//high
}
time2 = millis();
}
digitalwrite(led2, stateled2);
previous2 == statebutton2;
if(statebutton3 == high && previous3 == low && millis() - time3 > debounce) {
if(stateled3 == low)//high
{
serial.println("stateled3 low");
stateled3 = high;//low
digitalwrite(led, high);//low
digitalwrite(led2, high);//low
stateled = high;//low
stateled2 = high;//low
} else {
serial.println("stateled3 high");
stateled3 = low;//high
digitalwrite(led, low);//high
digitalwrite(led2, low);//high
stateled = low;//high
stateled2 = low;//high
}
time3 = millis();
}
previous3 == statebutton3;
}
pin numbers not greater 255, don't need ints. make pin assignments const byte. saves byte of memory , puts assigned byte in program memory. states don't need ints either, can't const if change. use f macro store string literals in print statements in program memory (serial.print(f("text"));
make code more readable removing blank lines. use control t auto indent code, again readability.
make code more readable removing blank lines. use control t auto indent code, again readability.
Arduino Forum > Using Arduino > Programming Questions > How can i inprove this code??
arduino
Comments
Post a Comment