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.


Arduino Forum > Using Arduino > Programming Questions > How can i inprove this code??


arduino

Comments

Popular posts from this blog

Connecting Raspberry Pi 2 to P10(1R)-V706 LED Dot Matrix - Raspberry Pi Forums

TypeError: <unknown> is not a numpy array - Raspberry Pi Forums

datso and removing imagetitle - Joomla! Forum - community, help and support