玩转液晶0.96寸OLED开发基础训练-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4520|回复: 2

玩转液晶0.96寸OLED开发基础训练

[复制链接]
发表于 2018-7-11 09:51 来自手机 | 显示全部楼层 |阅读模式
/*
* 16X16点阵显示 取模方式 阴码+逐行式+顺向
**/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2

#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH  16

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
int r,xo,yo,a,z;//动画变量不能用char型变量无法计算
int sec;//动画变量不能用char型变量无法计算
void setup()   {               
  Serial.begin(115200);
  delay(500);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)
}

void loop() {
     
    sec++;
   if(sec==60)sec=0;
  //1.检测全屏显示(看看有没有大面积坏点)
  display.fillScreen(WHITE);//检测全屏显示(看看有没有大面积坏点)
  display.clearDisplay();   // clears the screen and buffer

//14.显示数字变量
  display.setTextSize(3);//设置字体大小  
  display.setTextColor(WHITE);//设置字体不反白
  display.setCursor(0,20);// 列127  行63    坐标
  display.println(sec/10);
  display.setCursor(22,20);//  列127  行63    坐标
  display.println(sec%10);
    //6.画空心圆
display.drawCircle(xo,yo,25,WHITE);//(控制圆心位置列0/127   控制圆心位置行0/63  )(控制大小=0+x )
  
  //不能用char型变量无法计算
  r=16;//指针半径
  xo=70;//圆心坐标
  yo=28;//圆心坐标
// a=6;//圆角度
  z=180;//圆
  a=sec*6;//圆角度
  //3. 画线 从(0,0)到(50,50
  if(sec==0 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==1 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==2 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==3 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==4 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==5 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==6 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==7 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==8 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==9 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
   
  if(sec==10 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==11 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==12 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==13 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==14 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==15 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==16 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==17 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==18 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==19 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  
  if(sec==20 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==21 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==22 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==23 ){ ;display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==24 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==25 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==26 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==27 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==28 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00   
  if(sec==29 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  
  if(sec==30 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==31 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==32 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==33 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==34 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==35 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==36 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==37 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==38 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00   
  if(sec==39 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  
  if(sec==40 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==41 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==42 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==43 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==44 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==45 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==46 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==47 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==48 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00   
  if(sec==49 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  
  if(sec==50 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==51 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==52 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==53 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==54 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==55 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==56 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==57 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==58 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  if(sec==59 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  
   //13.显示英文
  display.setTextSize(1);//设置字体大小
  display.setTextColor(WHITE);//设置字体不反白
  display.setCursor(xo-5,yo-22);//列127 行63     坐标
  display.println("12");
  display.setCursor(xo+18,yo-5);//列127 行63     坐标
  display.println("3");
  display.setCursor(xo-2,yo+15);//列127 行63     坐标
  display.println("6");
  display.setCursor(xo-22,yo-5);//列127 行63     坐标
  display.println("9");
  
  display.display();
  //delay(2000);
   
  
}
发表于 2018-7-11 17:49 | 显示全部楼层
呵呵,建议使用常用库,别用这种库(个人原因,我也用过他,但是换了版本后,说没有avr/io.h(可以解决就帮我解决一下))
 楼主| 发表于 2018-7-13 00:06 来自手机 | 显示全部楼层
要真心玩就别总想着库,得自己写库。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 08:43 , Processed in 0.072359 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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