main.c 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #include "u8g2.h"
  2. #include <stdio.h>
  3. #include <string.h>
  4. char str1[100];
  5. char str2[100];
  6. u8g2_t u8g2;
  7. void drawBigNum(u8g2_t *u, uint16_t x, uint16_t y, const char *heading, uint16_t n, uint16_t fraction, uint16_t is_temp)
  8. {
  9. uint16_t e;
  10. uint16_t xx;
  11. u8g2_SetFont(u, u8g2_font_spleen8x16_mr);
  12. u8g2_DrawUTF8(u, x+4, y-46, heading);
  13. u8g2_SetFont(u, u8g2_font_spleen32x64_mn);
  14. e = n / 10;
  15. if ( e > 0 )
  16. {
  17. u8g2_DrawGlyph(u, x, y, e+'0');
  18. }
  19. x += 30;
  20. e = n - e*10;
  21. u8g2_DrawGlyph(u, x, y, e+'0');
  22. u8g2_SetFont(u, u8g2_font_spleen12x24_mf);
  23. x += 30;
  24. xx = x;
  25. x += u8g2_DrawGlyph(u, x, y, '.');
  26. x += u8g2_DrawGlyph(u, x, y, fraction+'0');
  27. if ( is_temp )
  28. {
  29. x += u8g2_DrawUTF8(u, xx, y-25, "°C");
  30. }
  31. else
  32. {
  33. u8g2_SetFont(u, u8g2_font_spleen16x32_mr);
  34. x += u8g2_DrawUTF8(u, xx+8, y-20, "%");
  35. }
  36. }
  37. void draw(u8g2_t *u)
  38. {
  39. u8g2_SetFontMode(u, 1);
  40. u8g2_DrawLine(u, 0, 63, 255, 63);
  41. u8g2_DrawLine(u, 127, 0, 127, 127);
  42. u8g2_DrawLine(u, 127+64, 64, 127+64, 127);
  43. drawBigNum(u, 20, 59, "Temp", 83, 4, 1);
  44. drawBigNum(u, 10+128+10, 59, "Humidity", 99, 9, 0);
  45. drawBigNum(u, 20, 59+64, "Set", 85, 0, 1);
  46. u8g2_SetFont(u, u8g2_font_streamline_coding_apps_websites_t);
  47. u8g2_DrawGlyph(u, 150, 105, 58);
  48. u8g2_SetFont(u, u8g2_font_streamline_interface_essential_login_t);
  49. u8g2_DrawGlyph(u, 214, 105, 48);
  50. }
  51. int main(void)
  52. {
  53. int x, y;
  54. int k;
  55. int offset = 100;
  56. u8g2_SetupBuffer_SDL_256x128(&u8g2, &u8g2_cb_r0);
  57. u8x8_InitDisplay(u8g2_GetU8x8(&u8g2));
  58. u8x8_SetPowerSave(u8g2_GetU8x8(&u8g2), 0);
  59. u8g2_SetFont(&u8g2, u8g2_font_wqy16_t_gb2312);
  60. x = 4; // use as height for the box
  61. y = 0;
  62. for(;;)
  63. {
  64. printf("offset=%d\n", offset);
  65. u8g2_FirstPage(&u8g2);
  66. do
  67. {
  68. //u8g2_DrawUTF8(&u8g2, offset,30,"123456789QWERTYUIOPASDFGHJKLZXCVBNM123456789QWERTYUIOPASDFGHJKLZXCVBNM");
  69. //u8g2_DrawUTF8X2(&u8g2, offset,60,"123456789QWERTYUIOPASDFGHJKLZXCVBNM123456789QWERTYUIOPASDFGHJKLZXCVBNM");
  70. //u8g2_DrawHLine(&u8g2, 0, 64, 64);
  71. draw(&u8g2);
  72. } while( u8g2_NextPage(&u8g2) );
  73. do
  74. {
  75. k = u8g_sdl_get_key();
  76. } while( k < 0 );
  77. if ( k == 273 ) y -= 1;
  78. if ( k == 274 ) y += 1;
  79. if ( k == 276 ) x -= 1;
  80. if ( k == 275 ) x += 1;
  81. if ( k == 'e' ) y -= 1;
  82. if ( k == 'x' ) y += 1;
  83. if ( k == 's' ) x -= 1;
  84. if ( k == 'd' ) x += 1;
  85. if ( k == 'q' ) break;
  86. if ( k == 32 )
  87. offset -= 1;
  88. if ( x < 0 )
  89. x = 0;
  90. }
  91. return 0;
  92. }