Code Optimiztion


hi guys  have project automated high power led lighting system has 4 channels controlled using pwm , rtc clock.

my issue first time using arduino such major thing , rtc. have basic code layout need optimize since using 95% of memory wondering if me improve it.

code: [select]
#include <wire.h>
#include "sodaq_ds3231.h"
//declare times , corresponding led brightness
const char* ledtime[] = {"00:00", "00:15", "00:30", "00:45", "01:00", "01:15", "01:30", "01:45", "02:00", "02:15", "02:30", "02:45", "03:00", "03:15", "03:30", "03:45", "04:00", "04:15", "04:30", "04:45", "05:00", "05:15", "05:30", "05:45", "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45", "08:00", "08:15", "08:30", "08:45", "09:00", "09:15", "09:30", "09:45", "10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30", "11:45", "12:00", "12:15", "12:30", "12:45", "13:00", "13:15", "13:30", "13:45", "14:00", "14:15", "14:30", "14:45", "15:00", "15:15", "15:30", "15:45", "16:00", "16:15", "16:30", "16:45", "17:00", "17:15", "17:30", "17:45", "18:00", "18:15", "18:30", "18:45", "19:00", "19:15", "19:30", "19:45", "20:00", "20:15", "20:30", "20:45", "21:00", "21:15", "21:30", "21:45", "22:00", "22:15", "22:30", "22:45", "23:00", "23:15", "23:30", "23:45"};
int ch1[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,12,24,36,48,60,72,84,96,108,120,132,144,156,168,180,192,204,216,228,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,5,0,0,0,0,0,0,0,0,0,0};
int ch2[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,18,36,54,72,90,108,126,144,162,180,198,216,234,252,237,222,207,192,177,162,147,132,117,102,87,72,57,42,27,12,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int ch3[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,9,18,27,36,45,54,63,72,81,90,99,108,117,126,135,144,153,162,153,144,135,126,117,108,99,90,81,72,63,54,45,36,27,18,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int ch4[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,18,36,54,72,90,108,126,144,150,139,128,117,106,95,84,73,62,51,40,29,18,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int fan[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,75,100,125,150,175,200,255,255,200,175,150,125,100,75,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

void setup()   /*----( setup: runs once )----*/
{
  pinmode(5, output);
  pinmode(6, output);
  pinmode(9, output);
  pinmode(10, output);
  pinmode(3, output);

  // start rtc stuff
  wire.begin();
  rtc.begin();

}/*--(end setup )---*/


void loop()   /*----( loop: runs )----*/
{

  datetime = rtc.now(); //get current date-time
 
  int hr = now.hour();
  int min = now.minute();
  string timenow= string(hr)+":"+string(min);
 
  (int x=0; x<sizeof(ledtime); x=x+1){
    if (string(ledtime[x]) == timenow){
       analogwrite(5, ch4[x]);
       analogwrite(6, ch3[x]);
       analogwrite(9, ch2[x]);
       analogwrite(10, ch1[x]);
       analogwrite(3, fan[x]);
       x = sizeof(ledtime);
    }
  }

}/* --(end main loop )-- */


i'm guessing memory usage cause of arrays, there better way set up.

also in loop go through check if current timematches in array using loop, arduino ide have python can index value.

where values come originally? there formula computed them?

and ledtime[] isn't incredibly wasteful way of saying want every 15 minutes? or seconds?

-jim lee


Arduino Forum > Using Arduino > Project Guidance > Code Optimiztion


arduino

Comments

Popular posts from this blog

sd card Could not find FAT16/FAT32 partition [solved]

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

DHT11 Time out error using v0.4.1library