找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3836|回复: 1
打印 上一主题 下一主题
收起左侧

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. }
复制代码



评分

参与人数 1黑币 +80 收起 理由
admin + 80

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:284472 发表于 2018-3-10 22:21 | 只看该作者
网址失效
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表