本帖最后由 QIUYUQINGH 于 2018-1-6 13:00 編輯
原代碼來自www點geek-workshop點com/thread-14419-1-1.htm
自己整合了一下。可以用
我的屏幕是6針的0.96OLED
IMG_20180105_114435_副本.jpg (81.51 KB, 下載次數: 63)
下載附件
2018-1-5 12:19 上傳
arduino源碼如下:
- #include "U8glib.h"
- U8GLIB_SH1106_128X64 u8g(10, 9, 12, 11,13); //針腳接線
- int center_w=u8g.getWidth()/2-1,
- center_h=u8g.getHeight()/2-1; //定下手表的中心點
-
- void watch_ui()
- {
- u8g.drawDisc(center_w,center_h,2);//畫一個實心圓
- u8g.drawCircle(center_w,center_h,center_h);//一個以屏幕高度為直徑的整圓
- u8g.setFont(u8g_font_ncenB08);//調用庫中一種寬度為8的字體
- u8g.setFontPosTop();
- u8g.drawStr(73,5,"1");
- u8g.drawStr(82,13,"2");
- u8g.drawStr(88,26,"3");
- u8g.drawStr(82,40,"4");
- u8g.drawStr(73,48,"5");
- u8g.drawStr(61,53,"6");
- u8g.drawStr(48,48,"7");
- u8g.drawStr(38,38,"8");
- u8g.drawStr(33,27,"9");
- u8g.drawStr(36,15,"10");
- u8g.drawStr(46,6,"11");
- u8g.drawStr(58,0,"12");
- }
- void clock(int hour,int minute,int sencond)
- {
- int hour_x,hour_y,minute_x,minute_y,sencond_x,sencond_y;
- hour_x=cos(hour*3.1412/30-3.1412/2)*8 + center_w;
- hour_y=sin(hour*3.1412/30-3.1412/2)*8 + center_h; //時針長度5
- minute_x=cos(minute*3.1412/30-3.1412/2)*12+center_w ;
- minute_y=sin(minute*3.1412/30-3.1412/2)*12+center_h; //分針長度10
- sencond_x=cos(sencond*3.1412/30-3.1412/2)*17+center_w;
- sencond_y=sin(sencond*3.1412/30-3.1412/2)*17+center_h; //秒針長度17
- u8g.drawLine(center_w,center_h,hour_x,hour_y);// 時針
- u8g.drawLine(center_w,center_h,minute_x,minute_y);// 分針
- u8g.drawLine(center_w,center_h,sencond_x,sencond_y);//秒針
- }
- void watch(int h,int m,int s)
- {
- u8g.firstPage();
- do {
- watch_ui();
- clock(h,m,s);
- //u8g.setColorIndex(1);
- } while( u8g.nextPage() );
- }
- void setup() {
- // put your setup code here, to run once:
- Serial.begin(9600);
- }
- void loop() {
- for(int h=0;h<12;h++)
- for(int m=0;m<60;m++)
- for(int s=0;s<60;s++)
- {
- Serial.println(h);
- Serial.println(m);
- Serial.println(s);
- watch(h,m,s);
- delay(1000);
- }
-
- }
復制代碼
|