代碼幫你改了下 現(xiàn)在正常可以使用
- #include "U8glib.h"
- //U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
- U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI SDA A4 SCL A5
- //static unsigned char u8g_logo_bits[] = {
- int flash = 0;
- const uint8_t rook_bitmap5[] U8G_PROGMEM = {
- 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFE, 0x00, 0x00
- };//電池滿
- const uint8_t rook_bitmap4[] U8G_PROGMEM = {
- 0x00, 0x00, 0xFE, 0xFD, 0xFD, 0xFE, 0x00, 0x00
- };
- const uint8_t rook_bitmap3[] U8G_PROGMEM = {
- 0x00, 0x00, 0xFE, 0xF9, 0xF9, 0xFE, 0x00, 0x00
- };
- const uint8_t rook_bitmap2[] U8G_PROGMEM = {
- 0x00, 0x00, 0xFE, 0xE1, 0xE1, 0xFE, 0x00, 0x00
- };
- const uint8_t rook_bitmap1[] U8G_PROGMEM = {
- 0x00, 0x00, 0xFE, 0x81, 0x81, 0xFE, 0x00, 0x00
- };
- const uint8_t rook_bitmap0[] U8G_PROGMEM = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- }; //電池空
- //讀取vcc電壓
- long readVcc() {
- long result;
- // Read 1.1V reference against AVcc
- ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
- delay(2); // Wait for Vref to settle
- ADCSRA |= _BV(ADSC); // Convert
- while (bit_is_set(ADCSRA, ADSC));
- result = ADCL;
- result |= ADCH << 8;
- result = 1126400L / result; // Back-calculate AVcc in mV
- return result;
- }
- void loop(void) {
- float vcc_vol = readVcc() / 1000; //將讀取的vcc電壓mv轉(zhuǎn)換為v
- //旋轉(zhuǎn)90°
- //u8g.setRot90(); //or setRot180(); setRot270();
- u8g.firstPage();
- do {
- u8g.setFont(u8g_font_gdr14r);//坐標函數(shù) 字體osb18
- if (vcc_vol >= 4.5 ) {
- u8g.drawBitmapP(0, 0, 1, 8, rook_bitmap5);
- }
- if (vcc_vol < 4.5 && vcc_vol >= 4 ) {
- u8g.drawBitmapP(0, 0, 1, 8, rook_bitmap4);
- }
- if (vcc_vol < 4 && vcc_vol >= 3.5 ) {
- u8g.drawBitmapP(0, 0, 1, 8, rook_bitmap3);
- }
- if (vcc_vol < 3.5 && vcc_vol >= 3 ) {
- u8g.drawBitmapP(0, 0, 1, 8, rook_bitmap2);
- }
- if (vcc_vol < 3 ) { //當VCC電壓小于3v時圖標閃爍,電池電量不足警告
- switch (flash) {
- case 0:
- u8g.drawBitmapP(0, 0, 1, 8, rook_bitmap1);
- flash = 1;
- break;
- case 1:
- u8g.drawBitmapP(0, 0, 1, 8, rook_bitmap0);
- flash = 0;
- break;
- }
- }
- } while ( u8g.nextPage() );
- }
- void setup(void) {
- // flip screen, if required
- // u8g.setRot180();
- }
復制代碼 |