Go Down

Topic: Programme capteur d'humidité (Read 4730 times) previous topic - next topic

skywodd

L'affichage ce fait sur le port série pour le moment, tu utilises bien le moniteur série (à 9600 bauds) ?
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Xaras

Je n'ai pas trop compris en fait ...

skywodd

Le code que je t'ai donner affiche son texte sur le port série.
Si tu veut qu'il l'affiche sur ton écran tu doit remplacer les Serial.print ... par ton spf.blablabla.

Maintenant si tu veut tester le code avec le port série tu doit ouvrir le serial monitor, le régler sur 9600 bauds et voir ce qui s'affiche.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Xaras

#33
May 06, 2013, 09:33 pm Last Edit: May 06, 2013, 09:36 pm by Xaras Reason: 1
J'avais complètement zappé, je les ai remplacé par contre, je ne vois pas d'où vient l'erreur. Il m'affiche au début 4Valeur (deuxième ligne)? puis en appuyant sur up1234567 ... En enlevant le time millis il ne m'affiche plus le 4.

Viproz

Il n'y a pas une histoire de délai qu'il faut mettre dans la boucle pour que ça ait le temps d'afficher ?
http://stilldrinking.org/programming-sucks

skywodd

Rajoute ça juste avant le while(!selectOk) :
Code: [Select]
while(getKey() != BP_NONE);
Ça bloquera le programme tant que tu n'auras pas relâcher les boutons (c'est plus pratique qu'un simple délai).
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Xaras

En fait, le problème c'est que quand j'appuie sur les boutons les valeurs  s'affiche une après l'autre. Enfin la saisie est bizarre, j'ai testé des choses mais qui ne marchent pas ...


skywodd

Tu as ajouté la ligne avant le while comme je te l'ai dit ?

Inspire toi de mon code (ligne 184) : https://github.com/skywodd/digital_light_wand/blob/master/digital_light_wand.ino
Il marche j'en suis sûr et certain.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Xaras

Oui, j'ai en effet rajouté la ligne. Cependant, il m'affiche toujours les chiffres un après l'autre.

skywodd


Oui, j'ai en effet rajouté la ligne. Cependant, il m'affiche toujours les chiffres un après l'autre.

Fait voir ton code complet ;)

Sinon il affiche les chiffres quand tu gardes le bouton appuyé ou quand tu fait rien ?
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Xaras

Oui il affiche les boutons.
Code: [Select]


/*********************

Example code for the Adafruit RGB Character LCD Shield and Library

This code displays text on the shield, and also reads the buttons on the keypad.
When a button is pressed, the backlight changes color.

**********************/

// include the library code:
#include <Wire.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>

// The shield uses the I2C SCL and SDA pins. On classic Arduinos
// this is Analog 4 and 5 so you can't use those for analogRead() anymore
// However, you can connect other I2C sensors to the I2C bus and share
// the I2C bus.
Adafruit_RGBLCDShield spf = Adafruit_RGBLCDShield();

// These #defines make it easy to set the backlight color
#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7

void setup() {
  // Debugging output
  Serial.begin(9600);
  // set up the LCD's number of columns and rows:
  spf.begin(16, 2);

  // Print a message to the LCD. We track how long it takes since
  // this library has been optimized a bit and we're proud of it :)
  int time = millis();
  spf.print("Vous voici dans");
  delay(500);
  spf.clear();
  spf.print("le programme");
  delay(500);
  spf.clear();
  spf.print("Wetkeeper");
  delay(500);
  spf.clear();
  spf.print("Veuillez");
  delay(500);
  spf.clear();
  spf.print("saisir la");
  delay(500);
  spf.clear();
  spf.print("valeur du");
  delay(500);
  spf.clear();
  spf.print("capteur");
  delay(500);
  spf.clear();
  spf.print("humidite");
  delay(500);
  spf.clear();
  time = millis() - time;
  Serial.print("Took "); Serial.print(time); Serial.println(" ms");
  spf.setBacklight(WHITE);
}

uint8_t i=0;
void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  spf.setCursor(1, 0);


Serial.println(choixEntier());
}

const int VALUE_MIN = 10;
const int VALUE_MAX = 60;

enum {
  BP_NONE,
  BP_PLUS,
  BP_MINUS,
  BP_SELECT
};

byte getKey() {
  byte buttons = spf.readButtons();

  if (buttons) {
    if (buttons & BUTTON_UP); {
      return BP_PLUS;
    }
    if (buttons & BUTTON_DOWN); {
      return BP_MINUS;
    }
    if (buttons & BUTTON_SELECT); {
      return BP_SELECT;
    }
  }
 
  return BP_NONE;
}

byte choixEntier() {

   /*
    * c = bouton appuyé
    * value = valeur choisie
    * selectOk = booléen True quand l'utilisateur click OK
    */
  byte c, value = 0, selectOk = false;


  /* Affiche un message */
  spf.print(F("Valeur ?"));

  /* Boucle de traitement */
  do {

    /* Lit le bouton actuellement pressé */
    byte c = getKey();
 

    /* Vérifie qu'un est bien pressé */
    if(c == BP_NONE)
      continue; /* Si non, repars dans la boucle */

    /* Si oui, gère le bouton en question */
    switch(c) {
    case BP_PLUS: /* Incrémente la valeur avec un test du maximum à ne pas dépasser */
      selectOk = false;
      if(++value == VALUE_MAX)
        --value;
      break;

    case BP_MINUS: /* Décrémente la valeur, avec un minimum à ne pas dépasser */
      selectOk = false;
      if(value > VALUE_MIN)
        --value;
      break;

    case BP_SELECT: /* Bouton OK */
      selectOk = true;
      break;
    }

    /* Affiche la valeur actuelle */
    spf.print(value);
while(getKey() != BP_NONE);
  } while(!selectOk); /* Boucle tant que l'utilisateur n'as pas clické OK */

  /* Retourne la valeur choisie */
  return value;
}


skywodd

Je comprend pas ça devrait pourtant marcher ...
Fait un petit code de test dans ton loop pour tester le retour de getKey() en fonction de ce que tu appuis ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Xaras

J'ai testé, ça ne marche toujours pas ...

infobarquee

bonjour,
tu as testé ce code? https://github.com/adafruit/Adafruit-RGB-LCD-Shield-Library/blob/master/examples/HelloWorld/HelloWorld.pde

Go Up