Menu retroeclairage

Bonjour.

Alors que je suis au niveau zéro de la programmation, je me lance dans un projet "pharaonique", utiliser un Arduino pour controler un moteur pas à pas et un boitier reflex (motorisation d'une platine micrométrique en vue de faire du stacking).
J'ai commencé à réfléchir aux différents menus qui permettraient de programmer le nombre d'images à prendre, la taille du pas entre les photos, le délai...

Ca pourrait ressembler à ça (mais cette nuit, je me suis aperçu que j'avais oublié une commande d'avance/retour, rapide/auto, de la platine)


(en taille "originale" - 6 Mo - ICI)

Mais des menus à l'action, il y a tout plein de commandes que je n'arrive pas à mettre en place.

J'ai récupéré les codes du "Photoduino"
Je profite aussi des lumières d'un ami qui a pas mal d'avance sur un projet similaire, mais pour juste un premier paramétrage - activer/désactiver le retroéclairage (LCD DFrobot), je n'arrive déjà pas à aller au bout.
:blush:

Voilà le bout de code que j'ai pour l'instant

/*******************************************************
*
* This program will test the LCD panel and the buttons
* Mark Bramwell, July 2010
* Modif Ch.Aubert, Dec. 2011 - Ajout valeur analogique->numérique (AN) boutons et divers remaniements (entre autre de variables)
* Modif Fred, Dec. 2011 - ajout d'un menu pour mettre ou enlever le retroeclairage (pin 10)
********************************************************/

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


////////// Définir les broches du LCD (pins)  /////////////////////////
LiquidCrystal lcd(8, 9, 4, 5, 6, 7, 10);

////////////////// Définition des E/S  ////////////////
int PinBouton = 0; // broche analogique (A0) utilisée pour les 5 boutons
int PinLedArduino = 13; // Led de controle sur circuit Arduino

////////////////// CONSTANTES  /////////////////////

// define some values used by the panel and buttons
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

// Default system config
#define DEFAULT_system_useBacklight  true

////////// VARIABLES ///////////////////////////
byte  lcd_key = 0;
int  adc_key_in = 0;

///////// SETUP ////////////////
void setup()
{
  lcd.begin(16, 2);        // initialiser la LCD library, 16 caractères, 2 lignes
  digitalWrite(10, HIGH);     // Init backlight
  pinMode(PinLedArduino, OUTPUT); //led de controle - pin 13
}

/////////// Boucle principale ///////////////////

void loop()
{
  lcd.setCursor(0,0);      // placer le curseur à la première ligne, première position
  lcd.print("RETROECLAIRAGE");// texte d'accueil du menu
  lcd.setCursor(0,1);            // placer le curseur au début de la seconde ligne
  lcd_key = read_LCD_buttons();  // lire la valeur du bouton (->fonction)

  switch (lcd_key)               // selon le bouton appuyé ...
  {
  case btnRIGHT:
    {
      lcd.print("<OUI>");
      lcd.print(adc_key_in); // Lire la valeur du "bouton" et l'afficher
    }
  case btnLEFT:
    {
      lcd.print("<NON>");
      lcd.print(adc_key_in);
    }
  case btnUP:
    {
            break;
    }
  case btnDOWN:
    {
      break;
    }
  case btnSELECT:
    {
      lcd.print("                "); //efface ce qui est à l'écran
      digitalWrite(PinLedArduino, HIGH);   // LED ligne 13 on
      lcd.print(adc_key_in);
      system_useBacklight(); // change le retroeclairage 
      delay(500);
      digitalWrite(PinLedArduino, LOW);    // LED ligne 13 off
    }
  case btnNONE:
    {
      lcd.print("<OUI>");
      break;
    }
  }

}
/************* Sous programmes ****************/

// change le retroeclairage
void system_useBacklight() {
  //enleve le retroeclairage
  digitalWrite(10, LOW);
}

///////////////// FONCTIONS ////////////////////

//  Lire la valeur A/D retournée selon le bouton choisi
int read_LCD_buttons()
{
  adc_key_in = analogRead(PinBouton);   
  // Mes boutons me donnent ces résultats :
  // Gauche = 500
  // Droite = 0
  // Haut = 140-141
  // Bas = 323-324
  // Select = 736-737
  // ** Code source : my buttons when read are centered at these valies: 0, 144, 329, 504, 741
  // ** we add approx 50 to those values and check to see if we are close
  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 retourne la constante btnNONE ...
}

Comme je suis parti d'autres morceaux... pour commencer, sur l'écran (qui s'affiche avec une intensité lumineuse moindre que d'habitude), j'ai encore de l'ancien texte qui s'affiche sur la première ligne (et pas "RETROECLAIRAGE".
Quand j'appuie sur le bouton "select", l'écran s'éteint tant que j'appuie
(pour la LED en ligne 13, ça fonctionne normalement)
Si j'appuie sur les quatre autres boutons, rien ne se passe.

Voilà.
Un grand merci à ceux ou celles qui pourraient m'aider.

PS : j'ai le livre de Tavernier, j'en ai lu une grande partie, mais le chapitre 2 est encore en algonquin
j'ai suivi un ou deux tutos simples pour faire clignoter des LED, j'ai à peu près compris :~

Bonjour

moi aussi je commence pour un projet qui aussi concerne la photo (un site très sympa Google Code Archive - Long-term storage for Google Code Project Hosting.)

Je suppose que tu as un afficheur avec 5 boutons (DFrobot LCD KEYPAD)
Quelle est ton alimentation de carte moi j'ai commencé avec une pile 9V et l'afficheur à faiblit très vite.
Pour mes essais j'utilise maintenant l'alimentation via le port usb de mon mac. Après je ferais de nouveau des tests avec une pile.

Bon courrage

Hello

Merci pour ta réponse.
Le retroéclairage qui a baissé, je pense que c'est l'effet du programme.
Mon Arduino est alimenté direct par l'USB (depuis un Mac)

-> je l'ai signalé, je pars aussi du "Photoduino" - je suppose que les différents fichiers proposés en téléchargement sont à compiler dans un seul et même sketch
-> la problématique de mon projet est un peu différente : il n'y aura que deux entrées à gérer (celles de microrupteurs) et deux sorties (enfin, je ne sais pas trop pour le moteur pas à pas)