玩转液晶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);
} 呵呵,建议使用常用库,别用这种库(个人原因,我也用过他,但是换了版本后,说没有avr/io.h(可以解决就帮我解决一下)) 要真心玩就别总想着库,得自己写库。
页:
[1]