Go Down

Topic: Tachymètre et écran LCD (Read 440 times) previous topic - next topic

loomis12

Oct 23, 2018, 11:26 pm Last Edit: Oct 24, 2018, 09:32 am by loomis12
Bonjour je voudrais réaliser un tachimètre avec un écran LCD sur arduino.  Je débute donc je regarde des tutos sur youtube.

https://www.youtube.com/watch?v=gVl4B7NDnQY&t=13s&index=2&list=LLR1449DtaPaGc8HmXoHVezQ

Le schéma est en pièce jointe est le code est le suivant:

Code: [Select]

#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,6,5,4,3);
float value=0;
float rev=0;
int rpm;
int oldtime=0;
int time;

void isr() //interrupt service routine
{
rev++;
}

void setup()
{
lcd.begin(16,2);                //initialize LCD
attachInterrupt(0,isr,RISING);  //attaching the interrupt
}

void loop()
{
delay(1000);
detachInterrupt(0);           //detaches the interrupt
time=millis()-oldtime;        //finds the time
rpm=(rev/time)*60000;         //calculates rpm
oldtime=millis();             //saves the current time
rev=0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("___TACHOMETER___");
lcd.setCursor(0,1);
lcd.print(     rpm);
lcd.print(" RPM");
lcd.print("   ");
attachInterrupt(0,isr,RISING);

}


Selon le schéma mon tachymètre est branché en D2 mais ce dernier n'est pas définie dans mon programme. La compilation est cependant correcte.

J'attends de recevoir le matériel pour mettre en oeuvre ma maquette et j'aimerai avoir plus d'explication sur ce code est notamment sur D2.

al1fch

#1
Oct 24, 2018, 03:21 am Last Edit: Oct 24, 2018, 03:21 am by al1fch
Bonjour
Merci de rééditer le message ci dessus pour mettre le code entre balises 'code' (icône </>) comme demandé dans les messages épinglés et au passage indenter correctement le code.

D2 est référencé de manière indirecte dans la fonction attachInterript(0,.....)
Voir içi le lien entre numéro d'interruption et broche

jpbbricole

Bonjour loomis12

D2 est référencé de manière indirecte dans la fonction attachInterript(0,.....)
C'est pourquoi il est préférable d'utiliser la syntaxe

attachInterrupt(digitalPinToInterrupt(pin), fonctionAlancer, RISING)
detachInterrupt(digitalPinToInterrupt(pin))
Comme préconisé sur Arduino Reference.

Pour toi:
Code: [Select]
#define tachoPin 2                                   // Broche du TACHOMETRE

attachInterrupt(digitalPinToInterrupt(tachoPin), isr, RISING);
detachInterrupt(digitalPinToInterrupt(tachoPin));


Ca évite d'utiliser des ports sans le savoir.

Cordialement
jpbbricole


L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

loomis12

Super merci de l'info je vais reprendre mon code

Go Up