Bonjour,
Je voudrais pouvoir choisir une vitesse d'un moteur à l'aide d'un potentiomètre que j'affiche en plus sur un écran LCD.
Sauf que mon potentiomètre n'est pas super précis et que la plage de valeur assez grande...
Je voudrais ajuster la valeur plus finement avec deux boutons + et -.
Cela fonctionne presque. Lorsque j'appuie sur les boutons + ou - la valeur du potentiomètre change bien mais dès que je relâche le bouton, elle revient à sa valeur initiale. Je ne sais pas comment mémoriser cette nouvelle valeur.
Merci pour votre aide!
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
// Définition des constantes
const int btn_minus = 8;
const int btn_plus = 9;
const int potentiometre = 0; // Pin potentometre
// Declaration des variables
int etat_Bouton;
int memoire_plus = HIGH; //état relâché par défaut
int memoire_minus = HIGH;
void setup()
{
pinMode(btn_plus, INPUT);
pinMode(btn_minus, INPUT);
//reglage LCD
analogWrite(6, 120);
lcd.begin(16,2);
}
void loop()
{
int niveauPot=analogRead(potentiometre);
int motor_Speed = map(niveauPot, 0, 1023, 0, 3600);
etat_Bouton = digitalRead(btn_plus); //lecture de l'état du bouton d'incrémentation
//Si le bouton a un état différent que celui enregistré ET que cet état est "appuyé"
if((etat_Bouton != memoire_plus) && (etat_Bouton == LOW)) {
motor_Speed++;
}
memoire_plus = etat_Bouton; //on enregistre l'état du bouton pour le tour suivant
etat_Bouton = digitalRead(btn_minus); //lecture de son état
//Si le bouton a un état différent que celui enregistré ET que cet état est "appuyé"
if((etat_Bouton != memoire_minus) && (etat_Bouton == LOW)) {
motor_Speed--;
}
memoire_minus = etat_Bouton; //on enregistre l'état du bouton pour le tour suivant
lcd.setCursor(0,0);
lcd.print("v= ");
lcd.print(motor_Speed);
lcd.print (" mm/h");;
delay(500);
lcd.clear();
}