Can Functions Free up Memory Space?


     i wrote long , inefficient code takes 97% of storage stage on arduino nano , 34% of dynamic memory. code works, i'm trying make code more efficient save on memory space. there number of sections of code replace functions, after attempting replace of code functions, seemed didn't save space.

are functions make programming easier don't have retype same part on , over, or replacing sections of code function call save space? i'm not sure compiler perspective, if replacing code function call save memory. in advance!


for example, wrote 80 functions. 1 such function (below) blinks led's , moves servo motors music, function alone takes ~6% of memory space. write function turns lights on "darkturquoise" , call function 3 times instead of writing 3 loops.


code: [select]
void scene49()///////////////////////////////will rock you
{
  int loop1 = 0;

  initialize_variables();
  startsoundinbackground(48);

  delay(800);

  while (loop1 < 4)
  {

    (int = 0; < num_leds; ++i)              //on
    {
      leds[i] = crgb::darkturquoise;
    }
    fastled.show();
    delay(150);


    fastled.clear (); //turn led's off            //off
    fastled.show();
    delay(150);

    (int = 0; < num_leds; ++i)        //on
    {
      leds[i] = crgb::darkturquoise;
    }
    fastled.show();
    delay(150);

    fastled.clear (); //turn led's off        //off
    fastled.show();
    delay(100);

    (int = 0; < num_leds; ++i)         //on
    {
      leds[i] = crgb::darkturquoise;
    }
    fastled.show();
    delay(400);

    fastled.clear (); //turn led's off          /off
    fastled.show();
    delay(510);

    ////////////////////////////////////
    (int = 0; < num_leds; ++i)              //on
    {
      leds[i] = crgb::gold;
    }
    fastled.show();
    delay(150);


    fastled.clear (); //turn led's off            //off
    fastled.show();
    delay(150);

    (int = 0; < num_leds; ++i)        //on
    {
      leds[i] = crgb::gold;
    }
    fastled.show();
    delay(150);

    fastled.clear (); //turn led's off        //off
    fastled.show();
    delay(100);

    (int = 0; < num_leds; ++i)         //on
    {
      leds[i] = crgb::gold;
    }
    fastled.show();
    delay(400);

    fastled.clear (); //turn led's off          /off
    fastled.show();
    delay(510);
    ////////////////////////////////////
    ////////////////////////////////////
    (int = 0; < num_leds; ++i)              //on
    {
      leds[i] = crgb::lime;
    }
    fastled.show();
    delay(150);


    fastled.clear (); //turn led's off            //off
    fastled.show();
    delay(150);

    (int = 0; < num_leds; ++i)        //on
    {
      leds[i] = crgb::lime;
    }
    fastled.show();
    delay(150);

    fastled.clear (); //turn led's off        //off
    fastled.show();
    delay(100);

    (int = 0; < num_leds; ++i)         //on
    {
      leds[i] = crgb::lime;
    }
    fastled.show();
    delay(400);

    fastled.clear (); //turn led's off          /off
    fastled.show();
    delay(510);
    ///////////////////////////////////
    (int = 0; < num_leds; ++i)              //on
    {
      leds[i] = crgb::magenta;
    }
    fastled.show();
    delay(150);


    fastled.clear (); //turn led's off            //off
    fastled.show();
    delay(150);

    (int = 0; < num_leds; ++i)        //on
    {
      leds[i] = crgb::magenta;
    }
    fastled.show();
    delay(150);

    fastled.clear (); //turn led's off        //off
    fastled.show();
    delay(100);

    (int = 0; < num_leds; ++i)         //on
    {
      leds[i] = crgb::magenta;
    }
    fastled.show();
    delay(400);

    fastled.clear (); //turn led's off          /off
    fastled.show();
    delay(510);
    ///////////////////////////////////
    loop1++;
  }

  (int = 0; < num_leds; ++i)              //on
  {
    leds[i] = crgb::darkturquoise;
  }
  fastled.show();
  delay(150);


  fastled.clear (); //turn led's off            //off
  fastled.show();
  delay(150);

  (int = 0; < num_leds; ++i)        //on
  {
    leds[i] = crgb::darkturquoise;
  }
  fastled.show();
  delay(150);

  fastled.clear (); //turn led's off        //off
  fastled.show();
  delay(100);

  (int = 0; < num_leds; ++i)         //on
  {
    leds[i] = crgb::darkturquoise;
  }
  fastled.show();
  delay(400);

  fastled.clear (); //turn led's off          /off
  fastled.show();
  delay(510);

  ////////////////////////////////////
  (int = 0; < num_leds; ++i)              //on
  {
    leds[i] = crgb::gold;
  }
  fastled.show();
  delay(150);


  fastled.clear (); //turn led's off            //off
  fastled.show();
  delay(150);

  (int = 0; < num_leds; ++i)        //on
  {
    leds[i] = crgb::gold;
  }
  fastled.show();
  delay(150);

  fastled.clear (); //turn led's off        //off
  fastled.show();
  delay(100);

  (int = 0; < num_leds; ++i)         //on
  {
    leds[i] = crgb::gold;
  }
  fastled.show();
  delay(400);

  fastled.clear (); //turn led's off          /off
  fastled.show();
  delay(510);
  ////////////////////////////////////
  ////////////////////////////////////
  (int = 0; < num_leds; ++i)              //on
  {
    leds[i] = crgb::lime;
  }
  fastled.show();
  delay(150);


  fastled.clear (); //turn led's off            //off
  fastled.show();
  delay(150);

  (int = 0; < num_leds; ++i)        //on
  {
    leds[i] = crgb::lime;
  }
  fastled.show();
  delay(150);

  fastled.clear (); //turn led's off        //off
  fastled.show();
  delay(100);

  (int = 0; < num_leds; ++i)         //on
  {
    leds[i] = crgb::lime;
  }
  fastled.show();
  delay(400);

  fastled.clear (); //turn led's off          /off
  fastled.show();

  switch_fast();
  delay(5000);
  fastled.clear (); //turn led's off
  fastled.show();
}


quote
are functions make programming easier don't have retype same part on , over
no. functions replace copy/pasting copies of code.

quote
it seemed didn't save space.
enough hand-waving. post code have questions about.


Arduino Forum > Using Arduino > Project Guidance > Can Functions Free up Memory Space?


arduino

Comments

Popular posts from this blog

DHT11 Time out error using v0.4.1library

Sketch upload fails with Java error (___REMOVE___/bin/avrdude)!

Arduino Uno + KTY81/210 temperature sensor