Hello everyone I'm currently working on my project water level indicator and I'm using OLED display to display the output. I'm trying to draw a box using drawBox() and map() function to fill the container from bottom to top but the output of my code draws box from top to bottom. How can i fix this?
Here's my code:
// ---> Libraries
#include <Wire.h>
#include <U8g2lib.h>
//[page buffer, size = 128 bytes]
U8G2_SH1106_128X64_NONAME_1_HW_I2C OLED(U8G2_R0);
// 'water level (1)', 128x64px
const unsigned char epd_bitmap_water_level__1_ [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x50, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xa8, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x54, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x55, 0x55, 0x55, 0x31, 0xef, 0x45, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00,
0x00, 0x80, 0xaa, 0xaa, 0xaa, 0x22, 0x29, 0x25, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00,
0x00, 0x00, 0x55, 0x55, 0x55, 0x21, 0x29, 0x11, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00,
0x00, 0x80, 0x2a, 0x00, 0xa8, 0x22, 0x29, 0x59, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00,
0x00, 0x00, 0x05, 0x55, 0x41, 0x71, 0xef, 0x4d, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00,
0x00, 0x80, 0xa0, 0xaa, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00,
0x00, 0x00, 0x54, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00,
0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00,
0x00, 0x00, 0x55, 0x55, 0x55, 0xf1, 0x5e, 0x04, 0x00, 0x00, 0x00, 0x80, 0x01, 0x60, 0x00, 0x00,
0x00, 0x80, 0xaa, 0xaa, 0xaa, 0x92, 0x52, 0x02, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x55, 0x55, 0x55, 0xf1, 0x12, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0xaa, 0xaa, 0xaa, 0x92, 0x92, 0x05, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x00, 0x15, 0x00, 0x50, 0xf1, 0xde, 0x04, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0x82, 0xaa, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x00, 0x50, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x00, 0x55, 0x55, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xaa, 0xaa, 0xaa, 0xf2, 0x5e, 0x04, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x00, 0x55, 0x55, 0x55, 0x31, 0x52, 0x02, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xaa, 0xaa, 0xaa, 0xf2, 0x12, 0x01, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x00, 0x55, 0x55, 0x55, 0xb1, 0x92, 0x05, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0x0a, 0x00, 0xa0, 0xf2, 0xde, 0x04, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x00, 0xc1, 0xff, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0xc3, 0x5e, 0x04, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0xa3, 0x52, 0x02, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0xb3, 0x12, 0x01, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0xf3, 0x92, 0x05, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0x83, 0xde, 0x04, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0x07, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0xf3, 0x5e, 0x04, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0xc3, 0x52, 0x02, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0x33, 0x12, 0x01, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0x33, 0x92, 0x05, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0xf3, 0xde, 0x04, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0x33, 0x2f, 0x02, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0x23, 0x29, 0x01, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0x23, 0x89, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xbf, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0x23, 0xc9, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0x73, 0x6f, 0x02, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
int progress = 0;
void setup() {
// put your setup code here, to run once:
OLED.begin();
OLED.setFont(u8g2_font_t0_12b_mf);
OLED.setColorIndex(1); //White color
}
void loop() {
// put your main code here, to run repeatedly:
OLED.firstPage();
do {
OLED.setColorIndex(1); //White color
OLED.drawXBMP(0, 0, 128, 64, epd_bitmap_water_level__1_); //Image
OLED.setColorIndex(0); //Black color
OLED.drawBox(95, 22, 16, 36); //Empty container
OLED.setColorIndex(1); //White color
OLED.drawBox(96, 23, 14, map(progress, 0, 100, 0, 34)); //Filling the container from bottom to top
} while ( OLED.nextPage() );
if (progress < 100) {
progress++;
} else {
progress = 0;
}
}
Output: