Go Down

Topic: Nybörjarfråga analogaRead map mm.. (Read 2820 times) previous topic - next topic

ML4D3N44

/* 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);
}

ML4D3N44

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

Jockeponkenboy

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;

Go Up