Nybörjarfråga analogaRead map mm..

/* Hej ! Jag har en MAX7219 led matrix kopplad till en arduino uno .
I min kod så har jag skapat några frames som i följd skapar en animation där hastigheten är baserad på : unsigned long delayTime=67; . Jag skulle vilja ändra delayTime med ett analogt värde ( en potentiometer )

Någon som kan ge mig ett praktiskt exempel på detta ?

*/

#include "LedControl.h"
LedControl lc=LedControl(12,11,10,1);
unsigned long delayTime=67;

byte frame1[] =
{
B00000000,
B10000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000
};
byte frame2[] =
{
B00000000,
B00000000,
B00000000,
B00000000,
B00000100,
B00000000,
B00000000,
B00000000
};
byte frame3[] =
{
B00000000,
B00000000,
B00000000,
B00000000,
B00010000,
B00000000,
B00000000,
B00000000
};
byte frame4[] =
{
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B01000000
};
byte frame5[] =
{
B00000000,
B00000000,
B00000000,
B01000000,
B00000000,
B00000000,
B00000000,
B00000000
};
byte frame6[] =
{
B00000001,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000
};
byte frame7[] =
{
B00000000,
B00000100,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000
};
byte frame8[] =
{
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000100,
B00000000,
B00000000
};
byte frame9[] =
{
B00000000,
B00000000,
B00010000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000
};
byte frame10[] =
{
B00000000,
B00000000,
B00000000,
B01000000,
B00000000,
B00000000,
B00000000,
B00000000
};
byte frame11[] =
{
B00000000,
B00000000,
B00000000,
B00000000,
B00000001,
B00000000,
B00000000,
B00000000
};
byte frame12[] =
{
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000100,
B00000000
};
byte frame13[] =
{
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000100
};
byte frame14[] =
{
B00000100,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000
};
byte frame15[] =
{
B00000000,
B00000000,
B00100000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000
};
byte frame16[] =
{
B00010000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000
};

void setup()
{
lc.shutdown(0,false);
lc.setIntensity(0,3);
lc.clearDisplay(0);
}

void sframe1()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame1*);*
}
}
void sframe2()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame2*);*
}
}
void sframe3()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame3*);*
}
}
void sframe4()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame4*);*
}
}
void sframe5()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame5*);*
}
}
void sframe6()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame6*);*
}
}
void sframe7()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame7*);*
}
}
void sframe8()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame8*);*
}
}
void sframe9()
{
*for (int i = 0; i < 8; i++) *
{
lc.setRow(0,i,frame9*);*
}
}
void sframe10()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame10*);*
}
}
void sframe11()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame11*);*
}
}
void sframe12()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame12*);*
}
}
void sframe13()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame13*);*
}
}
void sframe14()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame14*);*
}
}
void sframe15()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame15*);*
}
}
void sframe16()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,frame16*);*
}
}
void loop()
{
sframe1();
delay(delayTime);
sframe2();
delay(delayTime);
sframe3();
delay(delayTime);
sframe4();
delay(delayTime);
sframe5();
delay(delayTime);
sframe6();
delay(delayTime);
sframe7();
delay(delayTime);
sframe8();
delay(delayTime);
sframe9();
delay(delayTime);
sframe10();
delay(delayTime);
sframe11();
delay(delayTime);
sframe12();
delay(delayTime);
sframe13();
delay(delayTime);
sframe14();
delay(delayTime);
sframe15();
delay(delayTime);
sframe16();
delay(delayTime);
}

Ni kan ignorera faktumet att koden är onödigt lång....

Läs av analogingången och skala den till värden du vill ha! Skriv sedan resultatet till DelayTime!

Typ...

Maxtid = 1000;
DelayTime = analogRead(0)/1024xMaxtid;

I förslaget läser du analogingång 0. 1024 motsvarar högsta värdet på analogingången! Och maxtid är tiden du ska ha när potentiometern är i maxläget.

Vill du sätta ett intervall så lär du göra på annat sätt.

Tex
DelayTime = (analogRead(0)/1024x(Maxtid-Mintid))+Mintid;