Bonjour,
Je vous contacte dans le cadre d'un projet de terminale STI2D, celui-ci visant à coordonner un Écran LCD avec un bouton poussoir sur une breadboard arduino, je m'explique ...
Je dois faire s'afficher le nombre de fois que j'appuye sur le bouton poussoir sur l'écran LCD par une période de temps ... (par exemple si je prends le délai 10sec et que j’appuie 9 fois durant cette période de temps l'écran m'affichera 9).
Je me suis procuré le programme pour faire fonctionner le bouton et le LCD (mais séparent ==> Je n'arrive pas à les relier sur le programme).
Voici le programme arduino pour le faire fonctionner (il y a 5 boutons poussoirs SUR l'ecran LCD dont je ne dois pas me servir):
#include <LiquidCrystal.h>
#include <LCDKeypad.h>
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
char msgs[5][16] = {"Droite ",
"Haut ",
"Bas ",
"Gauche ",
"Select" };
int adc_key_val[5] ={50, 200, 400, 600, 800 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;
void setup()
{
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" helle! ");
lcd.print(" welcome!");
lcd.setCursor(0,1);
lcd.print(" LinkSprite");
lcd.print(" LCD Shield");
delay(1000);
lcd.setCursor(0,0);
for (char k=0;k<26;k++)
{
lcd.scrollDisplayLeft();
delay(400);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Vous appuyez sur");
}
void loop()
{
adc_key_in = analogRead(0);
key = get_key(adc_key_in);
if (key != oldkey)
{
delay(50);
adc_key_in = analogRead(0);
key = get_key(adc_key_in);
if (key != oldkey)
{
lcd.setCursor(0, 1);
oldkey = key;
if (key >=0)
{
lcd.print(msgs[key]);
}
}
}
delay(100);
}
int get_key(unsigned int input)
{
int k;
for (k = 0; k < NUM_KEYS; k++)
{
if (input < adc_key_val[k])
{
return k;
}
}
if (k >= NUM_KEYS)k = -1;
return k;
}
En espérant des réponses dans les plus bref délais ...
Cordialement Alex