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.
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.
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
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
Post a Comment