Pages: 1 2 [3] 4 5   Go Down
Author Topic: Programme capteur d'humidité  (Read 3648 times)
0 Members and 1 Guest are viewing this topic.
France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

L'affichage ce fait sur le port série pour le moment, tu utilises bien le moniteur série (à 9600 bauds) ?
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: May 06, 2013, 02:36:03 pm by Xaras » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 129
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged


France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Rajoute ça juste avant le while(!selectOk) :
Code:
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).
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ...
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Plus de réponses ?
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink

Sinon il affiche les chiffres quand tu gardes le bouton appuyé ou quand tu fait rien ?
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui il affiche les boutons.
Code:

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

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;
}

Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: 1 2 [3] 4 5   Go Up
Jump to: