LCD KeyPad Shield For Arduino

Re: LCD KeyPad Shield For Arduino

Messagede Daniel » 29 Déc 2011 15:12

j'ai enfin reçu cet écran.
3 semaines depuis la Chine, mais pas de frais...
Je n'ai pas encore essayé de le tester.
Dans l'immédiat, je vais commander pour 15$ de plus la plaque de protoptypage à bornier vissant.
Je comptais utiliser une plaque standart pour les essais. Mais mieux vaut construire le mème sandwich que Christian!
Daniel Nardin
sites: perso, microscopie , plongée Egypte et Réunion, orchidées du Doubs
matériel micro/macro/photo principal: microscopes Olympus BH, stéréomicroscope Nikon SMZ, reflex Nikon (D800 actuellement) +105macro, soufflet... , hybride Olympus EM5 mkII, compact OlympusTG-5 ...
Avatar de l’utilisateur
Daniel
membre
membre
 
Messages: 6108
Inscription: 27 Sep 2007 10:33
Localisation: Privas (Ardèche, France)
Prénom: Daniel

Re: LCD KeyPad Shield For Arduino

Messagede Christian » 04 Jan 2012 12:24

Re,
Une autre façon de parcourir les boutons pressés de ce LCD :
(for + tableau à la place de switch case)
Ce code ajoute aussi des caractères spéciaux et la valeur mesurée des résistances.

Code: Tout sélectionner
/*
    Test LCD 5 boutons DFRobot
Ch.Aubert janv.2012
*/

/************* Librairie(s) à inclure ****************/
#include <LiquidCrystal.h>

/****************   Définir des caractères spéciaux LCD (8 caractères max) ********************/

byte Char_UP[8] = { // Flèche haut (tableau de 8 octets)
  B00000, // définition de chaque octet au format binaire
  B00000, // 1 pour pixel affiché - 0 pour pixel éteint
  B00100, // les 3 bits de poids forts ne sont pas écrits car inutiles
  B01110,
  B11111,
  B00000,
  B00000,
  B00000
};
//
byte Char_DOWN[8] = { // Flèche bas
  B00000,
  B00000,
  B11111,
  B01110,
  B00100,
  B00000,
  B00000,
  B00000
};
//
byte Char_RIGHT[8] = { // Flèche droite
  B00000,
  B00000,
  B10000,
  B11000,
  B11100,
  B11000,
  B10000,
  B00000
};
//
byte Char_LEFT[8] = { // Flèche gauche
  B00000,
  B00000,
  B00001,
  B00011,
  B00111,
  B00011,
  B00001,
  B00000
};
//
byte Char_SELECT[8] = { // Select
  B00000,
  B00000,
  B01110,
  B01110,
  B01110,
  B01110,
  B00000,
  B00000
};
//
byte Char_NONE[8] = { // Char.vide
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000
};
/****************  Fin caractères spéciaux LCD ********************/

/************* Définition des broches (pins) du LCD 5 boutons DFRobot  ****************/
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
const int PinLCDBacklight = 10; // broche LCD Backlight
const int PinBouton = 0; // broche analogique (A0) utisé pour les 5 boutons


/************* Constantes programme ****************/
// boutons
const int btnNONE = 0;
const int btnRIGHT = 1;
const int btnLEFT = 2;
const int btnUP = 3;
const int btnDOWN = 4;
const int btnSELECT = 5;

//texte boutons
const char bt_txt[6][10] = {
  "Bt.nul",
  "Bt.droite",
  "Bt.gauche",
  "Bt.haut",
  "Bt.bas",
  "Bt.select" };

/************* Variables ****************/
int adc_key_in = 0;
int lcd_key = 0;
int old_lcd_key = 0;


void setup()
{
  lcd.begin(16, 2);        // initialiser la LCD library, 16 caractères, 2 lignes

  // création car. spéciaux LCD
  lcd.createChar(0, Char_NONE); // char vide pour bt.none
  lcd.createChar(1, Char_RIGHT);
  lcd.createChar(2, Char_LEFT);
  lcd.createChar(3, Char_UP);
  lcd.createChar(4, Char_DOWN);
  lcd.createChar(5, Char_SELECT);
}

void loop() {
  lcd_key = read_LCD_buttons();  // lire la valeur du bouton (->fonction)

  for (int i=0; i<=5; i++)
  {
    lcd.setCursor(0,0);      // placer le curseur à la première ligne, première position
    lcd.print(bt_txt[lcd_key]);  // txt. boutons
    lcd.write(lcd_key); // no. symboles spéciaux LCD
    lcd.print(" ");
    lcd.print(adc_key_in); // valeur A/D résistance bouton
    lcd.print("   ");
    if (lcd_key > 0) old_lcd_key = lcd_key;
  } //end for

  // Dernier bouton utilisé
  if (old_lcd_key > 0){
    lcd.setCursor(0,1);
    lcd.print("Dernier bt = ");
    lcd.write(old_lcd_key); // car. spéciaux lcd
    lcd.print("    ");
  }

}


/************* Fonctions ****************/

//  Lire la valeur A/D retournée selon le bouton choisi
int read_LCD_buttons()
{
  adc_key_in = analogRead(PinBouton);   
  delay(50);      // wait for debounce time
  if (adc_key_in > 1000) return btnNONE; // On commence par la valeur la plus probable : Aucun appui sur bouton !
  if (adc_key_in < 50)   return btnRIGHT;
  if (adc_key_in < 195)  return btnUP;
  if (adc_key_in < 380)  return btnDOWN;
  if (adc_key_in < 555)  return btnLEFT;
  if (adc_key_in < 790)  return btnSELECT;   
  return btnNONE;  // si aucun appui sur bouton, on retoune la constante btnNONE ...
}
Bien amicalement, Christian
Microscope : Leitz Ortholux I - Stéréomicroscope : Novex AP5 - Divers bancs macro
Photos: Nikon (D70) D90, Canon A75, MicCam Tucsen 3 mpx
Soft: Photoshop - MicroCartouche - Helicon focus -Stepduino (stacking automatisé)
Site perso (ancien) ici

Avatar de l’utilisateur
Christian
Coadmin
Coadmin
 
Messages: 4790
Inscription: 28 Aoû 2007 20:54
Localisation: Entre Alpes et Jura
Prénom: Christian

Re: LCD KeyPad Shield For Arduino

Messagede Fredlab » 07 Jan 2012 10:25

Hello

En ayant l'intention ce matin d'avancer dans le projet, je me suis attelé à l'assemblage de ma plaque de prototypage... mais j'ai du faire une erreur dans la commande :oops:
En fait, je n'ai qu'une "proto shield", exactement à la même dimension que l'Arduino donc il m'est impossible d'ajouter les quelques borniers que j'avais aussi commandés et donc je pense que je vais avoir quelques soucis de gestions d'entrées/sorties et d'empilage avec le LCD shield tout en laissant libre des ports...
bref...
Fredlab a écrit:Si on ne veut pas se casser la nenette, on achète celui-là ?
Enfin, je pense quand même utiliser les pièces qui sont déjà là.

... retour à la case départ... j'ai commandé un screw shield en Chine - un temps de latence en plus.
"time is on my side"
On motorisera plus tard :?

(je vais préparer une commande chez Conrad pour finir l'assemblage du stepduino -> branchements divers entre le boitier et les divers éléments extérieurs)
La planète peut pourvoir aux besoins de tous, mais non pas satisfaire la cupidité de certains (Gandhi)
Avatar de l’utilisateur
Fredlab
membre
membre
 
Messages: 9616
Inscription: 27 Juin 2010 13:42
Localisation: Auxonne (21)
Prénom: Frederic

Re: LCD KeyPad Shield For Arduino

Messagede Daniel » 11 Fév 2012 18:56

Bonsoir,
finalement, j'ai reçu la plaque intermédiaire il y a 2 semaines mais je n'ai pas eu le temps de tester plus tot. Je profite des vacances de février pour m'y remettre.
Après solidarisation de l'écran au dessus de la plaque, le programme test des boutons de l'écran tourne sans problème.

Pour la suite, je vais rebrancher, encore sur la plaque de test, mais en passant par les bornes à vis, la carte de puissance et l'optocoupleur pour faire une série d'images en déclenchant après un pas du moteur.

Est ce que Christian a associé les bouts de programmes dans un programme test bouclant sur: avance d'un pas, déclenchement à chaque appui sur le bouton right par exemple?
Daniel Nardin
sites: perso, microscopie , plongée Egypte et Réunion, orchidées du Doubs
matériel micro/macro/photo principal: microscopes Olympus BH, stéréomicroscope Nikon SMZ, reflex Nikon (D800 actuellement) +105macro, soufflet... , hybride Olympus EM5 mkII, compact OlympusTG-5 ...
Avatar de l’utilisateur
Daniel
membre
membre
 
Messages: 6108
Inscription: 27 Sep 2007 10:33
Localisation: Privas (Ardèche, France)
Prénom: Daniel

Re: LCD KeyPad Shield For Arduino

Messagede Christian » 11 Fév 2012 19:12

Salut Daniel,

Est ce que Christian a associé les bouts de programmes dans un programme test bouclant sur: avance d'un pas, déclenchement à chaque appui sur le bouton right par exemple?


Vite fait, voir le sujet Stepduino proto et le petit code ici > viewtopic.php?f=284&t=10454#p52816
C'est vraiment très basique comparé à la version sur laquelle je travail actuellement, mais ça permet de tester déjà passablement de choses.
Bien amicalement, Christian
Microscope : Leitz Ortholux I - Stéréomicroscope : Novex AP5 - Divers bancs macro
Photos: Nikon (D70) D90, Canon A75, MicCam Tucsen 3 mpx
Soft: Photoshop - MicroCartouche - Helicon focus -Stepduino (stacking automatisé)
Site perso (ancien) ici

Avatar de l’utilisateur
Christian
Coadmin
Coadmin
 
Messages: 4790
Inscription: 28 Aoû 2007 20:54
Localisation: Entre Alpes et Jura
Prénom: Christian

Re: LCD KeyPad Shield For Arduino

Messagede loeil64 » 17 Mar 2013 13:39

bonjour les arduinistes,je suis philippe et je suis nouveau sur ce forum.
je me suis fourni en matériel ARDUINO la semaine dernière dans le but de me fabriquer un stepduino et je voudrai aussi mais plus tard me monter un photoduino.j'ai du boulo!! :idea:
j'ai tout d'abord opté pour : une uno R3 , un shield lcd keypad de la marque dfrobot,d'un moteur pas à pas avec contrôleur 1650v au départ pour faire simple :lol: :lol:
partout il est dis "pas besoin d'être informaticien pour jouer à arduino" heuuu :grat: quand même!
il semblerai qu'il y ait quelques pointures ici, alors je pense que certain d'entre vous ont déjà réalisés ce genre de montage et qu'il existe des sketchs pour faire fonctionner mon matos.
A VOTRE BON CŒUR :D :D :D
loeil64
membre
membre
 
Messages: 6
Inscription: 21 Fév 2013 21:00
Prénom: philippe

Précédente

Retourner vers Afficheurs LCD et modules de saisie (boutons, joystick, ..)

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité