IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Bibliothèque u8g2 oled


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2020
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2020
    Messages : 56
    Par défaut Bibliothèque u8g2 oled
    Bonjour à toute la communauté.

    Je suis en train de remplacer l'afficheur lcd d'une minuterie par un écran OLED 1,3 pouce. J'utilise pour ça la bibliothèque u8g2 qui fonctionne sur un autre montage, sauf que je ne trouve pas l'équivalent de lcd.blink (ligne 61) avec la bibliothèque u8g2. u8x8.blink ne fonctionne pas dans ce contexte.
    Avez-vous une idée?
    Merci pour vos retours

    PS: La touche * initialise le début de saisie des minutes suivi des secondes et la touche # valide et le décompte commence.

    La broche mosfet déclarée permet de couper l'autoalimentation de l'ensemble lorsque que le compteur affiche 0

    Code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27, 16, 2);
    #include <Keypad.h>
     
    #include <Arduino.h>
    #include <U8g2lib.h>
    #include <U8x8lib.h>
     
    #define I2C_ADDRESS 0x3C
    U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
    U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
     
    #include <Keypad.h>
    const byte ROWS = 4;
    const byte COLS = 3;
    char keys[ROWS][COLS] = {
      {'1', '2', '3'},
      {'4', '5', '6'},
      {'7', '8', '9'},
      {'*', '0', '#'}
    };
    byte rowPins[ROWS] = {2, 3, 4, 5};
    byte colPins[COLS] = {8, 9, 10};
     
     
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
     
    String action;
    long timein[6], countdown_time = 0, initialsecond = 0;
    int i = 0;
    const byte mosfet = 15;
    const byte led = 13;
     
     
    void setup() {
      pinMode  (mosfet, OUTPUT);
      pinMode  (led, OUTPUT);
      digitalWrite(mosfet, LOW);
      digitalWrite(led, LOW);
     
      u8x8.begin();
      u8x8.clear();
      u8x8.setFont(u8x8_font_8x13B_1x2_r);
      u8x8.setCursor (2, 0);
      u8x8.print("Saisie mn/sec");
     
     u8x8.setFont(u8x8_font_profont29_2x3_n );
      u8x8.setCursor (3, 3);//colonne/rangée
      u8x8.print("00:00");
     
    }
     
    void loop() {
      char key = keypad.getKey();
      if (key) {
        switch (key) {
     
          case '*'  :
            action = "set_time";
           Serial.println(key);
            /*lcd.blink();
              lcd.setCursor(6, 1);*/
            i = 2;
            break;
     
          case '#'  :
            action  = "start_countdown";
            break;
          default :
            if (action == "set_time") {
              i++;
              int c = i - 1;
              timein[c] = key - 48;
              initialsecond = 0;
              long hour = (timein[0] * 10) + timein[1];
              long minute = (timein[2] * 10) + timein[3];
              long second = (timein[4] * 10) + timein[5]; //second
              countdown_time = (hour * 3600) + (minute * 60) + second;
              Serial.println(key);
              //lcd.print(key);
              if (i % 2 == 0 && i < 6) {
                //lcd.print(":");
                u8x8.print(":");
              }
              break;
            }
        }
      }
      if (action  == "start_countdown") {
        if (initialsecond == 0) {
          initialsecond = millis() / 1000;
        }
        long countdowntime_seconds = countdown_time - (millis() / 1000) + initialsecond;
        if (countdowntime_seconds >= 0) {
          long countdown_hour = countdowntime_seconds / 3600;
          long countdown_minute = ((countdowntime_seconds / 60) % 60);
          long counddown_sec = countdowntime_seconds % 60;
     
          u8x8.setFont(u8x8_font_8x13B_1x2_r);
          u8x8.setCursor (0, 0);
          u8x8.print(" Il reste encore");
          u8x8.setCursor (0, 2);//colonne/rangée
     
          /*lcd.setCursor(0, 1);
            lcd.setCursor(0, 2);
          */
     
          /*lcd.print("Il reste encore");
            lcd.setCursor(4, 1);*/
     
          if (countdown_hour < 10) {
            lcd.print("0");
          }
          lcd.print(countdown_hour);
          lcd.print(":");
          if (countdown_minute < 10) {
            lcd.print("0");
          }
          lcd.print(countdown_minute);
          lcd.print(":");
          if (counddown_sec < 10) {
            lcd.print("0");
          }
          lcd.print(counddown_sec);
          //secondes_totales = (countdown_minute * 60)+ counddown_sec;
          //if ( secondes_totales == 0){
          if ( counddown_sec < 1 && countdown_minute == 0 && countdown_hour == 0) {
            digitalWrite (mosfet , HIGH);
            digitalWrite (led , HIGH);
          }
        }
      }
    }

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 922
    Par défaut
    dans la bibliothèque LiquidCrystal_I2C la méthode blink() fait clignoter un curseur - c'est traité en matériel dans votre afficheur LCD

    il n'y a pas d'équivalent de ce curseur matériel pour votre écran OLED, vous devez coder vous même quelque chose qui indiquera où se trouve le curseur.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2020
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2020
    Messages : 56
    Par défaut
    Bonjour Jay M
    Merci pour cette réponse claire et précise
    Je vais m'y atteler

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Installer la bibliothèque OLED
    Par rdtech dans le forum Raspberry Pi
    Réponses: 3
    Dernier message: 10/03/2022, 16h32
  2. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2006, 15h28
  3. [VB6][DoVerb]Lancer automatiquement un objet OLE
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/11/2002, 13h29
  4. Accès à une application ouverte (OLE Automation ?)
    Par PascalB dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/06/2002, 14h39
  5. Bibliothèques et documentation
    Par Anonymous dans le forum OpenGL
    Réponses: 4
    Dernier message: 01/04/2002, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo