Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arduino lcd + angle sensor

Sujet résolu
    9 octobre 2019 à 13:30:11

    Bonjour, je voudrais avoir des pistes pour mon projet car j'ai beaucoup de mal à le réaliser. Mon but est de faire avec angle sensor dérouler un mot cependant j'arrive que à la faire dans le sens gauche à droite mais je ne peux pas inverser le truc ou plutôt je ne vois pas comment. exemple le mot hello s'affiche lettre par lettre sa veut dire h puis e puis l puis l puis o mais je vois comment faire l'inverse quand j'arrive à o je ne vois pas comment les enlever une par une en retour en arrière avec l'angle sensor.

    Voici mon code :

    #include <rgb_lcd.h>
    #include <Wire.h>
    #include "rgb_lcd.h"
    #define ROTARY_ANGLE_SENSOR A0
    #define ADC_REF 5
    #define GROVE_VCC 5
    #define FULL_ANGLE 300

     const int button = 6 ;
      int Buttonstate = 0 ;
      rgb_lcd lcd;


    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
     lcd.begin(16, 2);
     pinMode(ROTARY_ANGLE_SENSOR, INPUT);

    }

    void loop() {
     
      // put your main code here, to run repeatedly:
      
      
       float voltage;
        int sensor_value = analogRead(ROTARY_ANGLE_SENSOR);
        voltage = (float)sensor_value*ADC_REF/1023;
        float degrees = (voltage*FULL_ANGLE)/GROVE_VCC;
        Serial.println("The angle between the mark and the starting position:");
        Serial.println(degrees);

        int brightness;
        brightness = map(degrees, 0, FULL_ANGLE, 0, 255);
       
      
      Buttonstate = digitalRead(button);
      if( brightness ==255 ){
       lcd.clear();
      }
      if( brightness >180,brightness <=225 ){
        lcd.setRGB(255, 0,0);
        lcd.setCursor(0, 1);
     lcd.print("h");
     
     delay(500);
     
     
      }
      if(brightness >135 ,brightness <=179){
        lcd.setRGB(255, 0,0);
        lcd.setCursor(0, 1);
     lcd.print("he");
     delay(500);
     
      }
     if(brightness > 95 ,brightness <= 134){
        lcd.setRGB(255, 0,0);
        lcd.setCursor(0, 1);
     lcd.print("hel");
     delay(500);
     
     }
     if(brightness > 45 ,brightness <=94){
        lcd.setRGB(255, 0,0);
        lcd.setCursor(0, 1);
     lcd.print("hell");
     delay(500);
     
     }
      if(brightness > 1, brightness <=44){
        lcd.setRGB(255, 0,0);
        lcd.setCursor(0, 1);
     lcd.print("hello");
     delay(500);
     
     }
     
    }

    -
    Edité par ryanouasti1 9 octobre 2019 à 13:31:15

    • Partager sur Facebook
    • Partager sur Twitter
      11 octobre 2019 à 21:01:39

      Bonjour,

      Tu dois utiliser le bouton </> pour poster du code sur le forum de façon lisible.

      Pour effacer un caractère sur ces LCD, il faut soit effacer l'écran entièrement, soit écrire un caractère espace à la place, donc au lieu d'écrire:

      lcd.print("h");
      ...
      lcd.print("he");
      ...
      lcd.print("hel");
      ...
      lcd.print("hell");
      ...
      lcd.print("hello");

      Il faut compléter les chaînes avec des espaces, pour qu'elles aient toutes la même taille:

      lcd.print("h    ");
      ...
      lcd.print("he   ");
      ...
      lcd.print("hel  ");
      ...
      lcd.print("hell ");
      ...
      lcd.print("hello");

      De plus dans tes conditions, il ne faut pas utiliser une virgule "," pour indiquer que 2 conditions doivent être vraies en même temps, mais l'opérateur logique ET: "&&":

      if(brightness > 45 ,brightness <=94){

      devrait être:

       if(brightness > 45 && brightness <=94){





      • Partager sur Facebook
      • Partager sur Twitter

      Arduino lcd + angle sensor

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown