Ma question est simple, si je veux telle ou telle fréquence, je dois mettre quoi dans quoi.
Autre question, si je modifie la fréquence, Est-ce que c'est fait définitivement dans mon MEGA?
Merci d'avance pour le partage d'expérience
Cordialement
Philippe
CS2 | CS1 | CS0 | Effet |
0 | 0 | 0 | Aucune horloge, le timer ne compte pas |
0 | 0 | 1 | division par 1 |
0 | 1 | 0 | division par 8 |
0 | 1 | 1 | division par 64 |
1 | 0 | 0 | division par 256 |
1 | 0 | 1 | division par 1024 |
1 | 1 | 0 | Horloge venant de la broche T1, sensible au front descendant |
1 | 1 | 1 | Horloge venant de la broche T1, sensible au front montant |
TCCR1B &= 0xF8; /* CS2 = CS1 = CS0 = 0, coupe l'horloge */
sbi(TCCR1B,CS10); /* CS0 = 1 */
sbi(TCCR1B,001);
sbi(TCCR1B,CS10);
sbi(TCCR1B,CS12);
TCCR1B |= B00000101;
TCCR1B &= 0xF8;
TCCR1B &= B11111000;
On est bien d'accord que le Timer1 est celui qui "pilote" les broches PWM 5 et 6 ?
Il vaut mieux changer de broches je pense pour être sur le Timer 1D'accord. C'est un peu pour cela que j'insistais sur le numéro du Timer.
Fréquence 32Hz. Attention ! Va lire http://modelleisenbahn.triskell.org/spip.php?article44 et l'article suivant.Je viens de lire... ;) ;) ;) Cela m'a ramené en Terminal F3. Ouh là, ça ne rajeunit pas. ;)
Le moteur va chauffer
Bon, donc il y a trois Timers (UNO ou MEGA) :
Le Timer 0 correspond aux broches 5 et 6
Le Timer 1 correspond aux broches 9 et 10
Le Timer 2 correspond aux broches 3 et 11.
Afin de modifier la fréquence rajouter en fonction de du moteur:Oui, mais comme l'a dit Jean-Luc, avant d'écrire cela dans le setup, il faut écrire cette commande :
- TCCR1B |= B00000001;
ou
- TCCR1B |= B00000010;
ou
- TCCR1B |= B00000011;
ou
- TCCR1B |= B00000100;
ou
- TCCR1B |= B00000101;
/* Allowed pins to change the PWM */
const byte PINS_9_10 = 0;
const byte PINS_3_11 = 1;
/* Allowed frequencies */
const byte PWM_32k = B00000001;
const byte PWM_4k = B00000010;
const byte PWM_500 = B00000011;
const byte PWM_100 = B00000100;
const byte PWM_30 = B00000101;
void setPWMFrequency(byte pins, byte frequency)
{
if (frequency >= 1 && frequency <= 5) {
if (pins == PINS_9_10) {
TCCR1B &= B11111000; /* aucune horloge */
TCCR1B |= frequency;
}
else if (pins == PINS_3_11) {
TCCR2B &= B11111000; /* aucune horloge */
TCCR2B |= frequency;
}
}
}
void setup() {
// Configuration des PWM des broches 9 et 10 à 32kHz
setPWMFrequency(PINS_9_10, PWM_32k);
}
void loop() {
// put your main code here, to run repeatedly:
}
/* Allowed pins to change the PWM */
const byte PINS_9_10 = 0;
const byte PINS_3_11 = 1;
/* Allowed frequencies */
const byte PWM_32k = 0; /* All pins */
const byte PWM_4k = 1; /* All pins */
const byte PWM_1k = 2; /* Pins 3 and 11 only */
const byte PWM_500 = 3; /* All pins */
const byte PWM_250 = 4; /* Pins 3 and 11 only */
const byte PWM_100 = 5; /* All pins */
const byte PWM_30 = 6; /* All pins */
/* CS codes for timer 1 */
const byte codeForTimer1[] PROGMEM = {
B00000001,
B00000010,
B00000000, /* no clock if config not allowed */
B00000011,
B00000000, /* no clock if config not allowed */
B00000100,
B00000101,
};
/* CS codes for timer 2 */
const byte codeForTimer2[] PROGMEM = {
B00000001,
B00000010,
B00000011,
B00000100,
B00000101,
B00000110,
B00000111,
};
void setPWMFrequency(byte pins, byte frequency)
{
if (frequency < 7) {
if (pins == PINS_9_10) {
byte csCode = pgm_read_byte_near(codeForTimer1 + frequency);
TCCR1B &= B11111000; /* aucune horloge */
TCCR1B |= csCode;
}
else if (pins == PINS_3_11) {
byte csCode = pgm_read_byte_near(codeForTimer2 + frequency);
TCCR2B &= B11111000; /* aucune horloge */
TCCR2B |= csCode;
}
}
}
void setup() {
// put your setup code here, to run once:
setPWMFrequency(PINS_9_10, PWM_32k);
setPWMFrequency(PINS_3_11, PWM_32k);
analogWrite(9,128);
analogWrite(3,128);
}
void loop() {
// put your main code here, to run repeatedly:
}
En revanche je viens de mettre une ampoule à filament genre de celles que l'on utilise dans le décor (intérieur de maison par exemple), c'est très bien, l'intensité lumineuse monte et descend dans un bel effet.
Je pensais à ceux qui veulent passer du jour vers la nuit et l'inverse.