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

冰冰洁洁 发表于 2018-7-11 09:51

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

/*
* 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_WIDTH16

#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

要真心玩就别总想着库,得自己写库。
页: [1]
查看完整版本: 玩转液晶0.96寸OLED开发基础训练