标题: u8g驱动0.96OLED屏显示虚拟圆盘钟 [打印本页]

作者: QIUYUQINGH    时间: 2018-1-5 12:21
标题: u8g驱动0.96OLED屏显示虚拟圆盘钟
本帖最后由 QIUYUQINGH 于 2018-1-6 13:00 编辑

    原代码来自www点geek-workshop点com/thread-14419-1-1.htm
    自己整合了一下。可以用
    我的屏幕是6针的0.96OLED


arduino源码如下:
  1. #include "U8glib.h"
  2. U8GLIB_SH1106_128X64 u8g(10, 9, 12, 11,13);        //针脚接线

  3. int center_w=u8g.getWidth()/2-1,
  4.     center_h=u8g.getHeight()/2-1;  //定下手表的中心点

  5.    


  6. void watch_ui()
  7. {
  8.   u8g.drawDisc(center_w,center_h,2);//画一个实心圆
  9.   u8g.drawCircle(center_w,center_h,center_h);//一个以屏幕高度为直径的整圆
  10.   u8g.setFont(u8g_font_ncenB08);//调用库中一种宽度为8的字体
  11.   u8g.setFontPosTop();
  12.   u8g.drawStr(73,5,"1");
  13.   u8g.drawStr(82,13,"2");   
  14.   u8g.drawStr(88,26,"3");
  15.   u8g.drawStr(82,40,"4");
  16.   u8g.drawStr(73,48,"5");
  17.   u8g.drawStr(61,53,"6");
  18.   u8g.drawStr(48,48,"7");
  19.   u8g.drawStr(38,38,"8");
  20.   u8g.drawStr(33,27,"9");
  21.   u8g.drawStr(36,15,"10");
  22.   u8g.drawStr(46,6,"11");
  23.   u8g.drawStr(58,0,"12");
  24. }

  25. void clock(int hour,int minute,int sencond)
  26. {
  27.   int hour_x,hour_y,minute_x,minute_y,sencond_x,sencond_y;
  28.   hour_x=cos(hour*3.1412/30-3.1412/2)*8 + center_w;
  29.   hour_y=sin(hour*3.1412/30-3.1412/2)*8 + center_h;        //时针长度5
  30.   minute_x=cos(minute*3.1412/30-3.1412/2)*12+center_w ;
  31.   minute_y=sin(minute*3.1412/30-3.1412/2)*12+center_h;        //分针长度10
  32.   sencond_x=cos(sencond*3.1412/30-3.1412/2)*17+center_w;
  33.   sencond_y=sin(sencond*3.1412/30-3.1412/2)*17+center_h;         //秒针长度17
  34.   u8g.drawLine(center_w,center_h,hour_x,hour_y);// 时针
  35.   u8g.drawLine(center_w,center_h,minute_x,minute_y);// 分针
  36.   u8g.drawLine(center_w,center_h,sencond_x,sencond_y);//秒针
  37. }


  38. void watch(int h,int m,int s)
  39. {
  40.   u8g.firstPage();
  41.   do {
  42.       watch_ui();
  43.       clock(h,m,s);
  44.       //u8g.setColorIndex(1);
  45.   } while( u8g.nextPage() );
  46. }

  47. void setup() {
  48.   // put your setup code here, to run once:
  49.   Serial.begin(9600);
  50. }

  51. void loop() {
  52.         for(int h=0;h<12;h++)
  53.           for(int m=0;m<60;m++)
  54.             for(int s=0;s<60;s++)
  55.             {
  56.               Serial.println(h);
  57.               Serial.println(m);
  58.               Serial.println(s);
  59.               watch(h,m,s);
  60.               delay(1000);
  61.             }
  62.             
  63. }
复制代码




作者: WANG1995    时间: 2018-3-10 22:21
网址失效





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1