u8g.drawStr( 0,40, variable); te permet de dessiner une suite de caractères(type string), alors que ta variable est de type int.
Si tu veux afficher une variable sur l'écran, il ne faut donc pas utilisé u8g.drawStr()mais u8g.print()
#include "U8glib.h"
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);
//la variable
int variable = 1
void draw(void) {
u8g.setFont(u8g_font_unifont);
//u8g.setFont(u8g_font_osb21);
u8g.drawStr( 0,20, " La variable :");
u8g.setPrintPos( 0,40);
u8g.print(variable);
}
void setup(void) {
// 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); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
pinMode(8, OUTPUT);
}
void loop(void) {
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// rebuild the picture after some delay
//delay(50);
}
Voilà, sans aucune certitude...
Edit: Au passage, je doute que se code compile correctement. Très loin d'être bon dans la programmation, mais il manque le point-virgule après la déclaration de ta variable.
2nd point qui m'intrigue, c'est le fait que tu utilisé des références as du RGB alors que (j'imagine) ton écran est monochrome...?