// works till five led i.e. upto 32
// GLobal Variables
int num = 32;
// Defining structures
struct nRem
{
int n;
int rem;
};
// Defining functions
nRem bCalc(int);
int power(int, int);
void chkAndRun(int);
void setup()
{
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
nRem var1 = bCalc(num);
do
{
switch (var1.n)
{
case 0: digitalWrite(9, HIGH); break;
case 1: digitalWrite(10, HIGH); break;
case 2: digitalWrite(11, HIGH); break;
case 3: digitalWrite(12, HIGH); break;
case 4: digitalWrite(13, HIGH); break;
case 5: digitalWrite(13, HIGH); break;
case 6: digitalWrite(3, HIGH); break;
case 7: digitalWrite(4, HIGH); break;
case 8: digitalWrite(5, HIGH); break;
case 9: digitalWrite(6, HIGH); break;
case 10: digitalWrite(7, HIGH); break;
}
num = var1.rem;
var1 = bCalc(var1.rem);
} while (num >= 1);
}
void loop()
{
// nothing
}
nRem bCalc(int n)
{
nRem z;
int j = 1;
for (int i = 0; j <= n; i++, j *= 2)
{
z.n = i;
}
z.rem = n - power(2, (z.n));
return z;
}
int power(int m, int p)
{
int v=1;
for(int i = 1; i <= p; i++) v *= m;
return v;
}