Pages: [1]   Go Down
Author Topic: [RESOLU]Fade with Hardware Register  (Read 269 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Bon je galère un peu pour faire un truc simple...Je m'exerce à utiliser le registre arduino pour manipuler mes ports et là je coince pour faire un fade in et fade out sur des rangées de led pilotées par des transistors.
J'ai compris qu'il fallait génerer un signal pwm simple (je précise que j'ai besoin de 3 ports pwm, 3, 6 et 7).

J'ai testé plusieurs solutions sans le resultat escompté. Je voudrais allumer progressivement la première rangée, delay(), puis fade out. Passage à la seconde rangée idem etc...

J'arrive à faire le fade in et fade out (je comprends à moitié), cependant je n'arrive pas à basculer de rangée, le code semble bloquée sur un timer/comparateur...

Si quelqu'un pouvait me fournir un exemple simple ou mieux encore un lien vers une bonne et complète documentation ??? (Je m'exerce sur un 368, avec comme optique de programmer un 2313/2Kb)

Le datasheet est sympa mais faut vraiment que je l'imprime, le pdf c'est pas cool  smiley-cool

@+

Zoroastre.

EDIT1 :
Code:
/*
One led pin 11, another pin 3.
Switch between leds is just an exemple
*/

int variable=0;
static char mode=0;

void setup()
{
  DDRD = DDRD | B00001000;
  DDRB = DDRB | B00001000;
  // Timer2 fast PWM OC2B(pin 3) OC2A(pin11)
  // set pin high on overflow, clear on compare match with OCR2B
  TCCR2A = 0xA3; // WGM20, WGM21, COM2B1, COM2A1
  TCCR2B = 0x01; // CS20, WGM22 = 0 means to 255
}

void loop()
{
   if(mode==0)
     {
       variable++;
       if(variable==230)
         {
           DDRD = (1 << PD3);
           DDRB = (0 << PB3);
           mode=1;
         }
     }
   if(mode==1)
     {
       variable--;
       if(variable==0)
         {
           DDRD = (0 << PD3);
           DDRB = (1 << PB3);
           mode=0;
         }
     }
      OCR2A=variable;
      OCR2B=variable;
     delay(20);
 }
« Last Edit: February 25, 2012, 02:35:07 am by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

Pages: [1]   Go Up
Jump to: