Bonjour,
Pour un projet je dois faire un métronome en utilisant une fonction d'interruption sur timer. J'ai un potentiomètre qui me permet de choisir entre 0 et 200 BPM pour le métronome. On a jamais utilisé les timer et en recherchant j'ai compris que cela servait à faire des choses sans déranger dans les autres fonctions mais en pratique j'ai un peu de mal. Voici ce que j'ai essayé de faire.
int pot=A5;
int valeur;
int BPM;
int retour;
void setup() {
Serial.begin(9600);
cli(); //on désactive
//valeur pour l'interrupt
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 15624;
TCCR1B |= (1 << WGM12);
TCCR1B |= (1 << CS12) | (1 << CS10);
TIMSK1 |= (1 << OCIE1A);
sei(); // on reactive
pinMode(10,OUTPUT);//test sur le buzzer.
}
void loop() {
Serial.println(BPM);
}
ISR(TIMER1_COMPA_vect){
retour=analogRead(pot);
valeur=map(retour,0,1023,0,200);
OCR1A=15624*(60/valeur);
}