Bonjour,

Je cherche à afficher un int avec 2 chiffres avant la virgule sur un écran OLED sur Arduino. Pour l'écran, j'utilise la bibliothèque u8glib ( https://github.com/olikraus/u8glib/w...eference#print ) et l'écran est interfacé en I2C.
Le but est d'afficher simplement l'heure sur l'écran OLED.
Voici le 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
 #include <stdio.h>
 #include "U8glib.h"
 U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
 
int heures;
int minutes;
int secondes;
long int millisecondes;
 
void gestion_heure( int *heures, int *minutes, int *secondes,  long int *millisecondes)
{
  *millisecondes=millis();
  *secondes = *millisecondes / 1000;
  if (*secondes>59){
    *secondes=0;
    *minutes++=1;
  }
  if (*minutes>59){
    *minutes=0;
    *heures++=1;
  }
  if (*heures>24){
    *heures=0;
  }
 
  Serial.print(*heures);
  Serial.print(" : ");
  Serial.print(*minutes);
  Serial.print(" : ");
  Serial.print(*secondes);
  Serial.print(" : ");
  Serial.println(*millisecondes);
}
 
void draw(void) {
  // graphic commands to redraw the complete screen should be placed here  
  //u8g.setFont(u8g_font_unifont);
  //u8g.setFont(u8g_font_fur35n); //choix de la police cf github
  //u8g_DrawStr(u8g, 40, 50, "A");
  //u8g.drawStr( 1, 36, "E"); //numéro de ligne du pixel supérieur, numero de ligne du pixel inférieur, variable
 
 
  u8g.setFont(u8g_font_unifont);
  //u8g.setFont(u8g_font_fur35n);
  u8g.setPrintPos(0, 36); 
  // call procedure from base class, http://arduino.cc/en/Serial/Print
  u8g.print(heures);
  u8g.print(":");
  u8g.print(secondes);
}
 
void setup(void) {
Serial.begin(9600);
 
  // flip screen, if required
  // u8g.setRot180();
 
  // set SPI backup if required
  //u8g.setHardwareBackup(u8g_backup_avr_spi);
 
  // assign default color value
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // Ecriture en blanc sur fond noir (1) ou noir sur fond blanc (0)
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255,255,255);
  }
 
  pinMode(8, OUTPUT);
}
 
void loop(void) {
  // picture loop
  u8g.firstPage();  
  do {
    draw();
    gestion_heure( &heures, &minutes, &secondes, &millisecondes);
 
  } while( u8g.nextPage() );
  // rebuild the picture after some delay
  delay(200);
}
Merci de vos réponses