Arduino Uno 驱动OLED进阶 显示几何动画

    xiaoxiao2021-12-14  15

     

    这篇文章主要翻译国外某大神的作品

    本示例可以学会如何画线条

     

    先看看效果

     

    YOUTUBE视频

    https://www.youtube.com/watch?v=_t_lfcGV_YM

     

    GITHUB  原代码地址

    https://github.com/hwiguna/g33k/blob/master/ArduinoProjects/2015/_Done/099-Arduino_OLED_Display/HariChord/HariChord.ino  

    以上代码包含SPI接线方式

     

    本次略加修改为适合IIC的接线方式

    接线方式请参考

    Arduino 驱动OLED屏幕IIC接线方式简单入门

    开源代码如下:

    程序和库打包下载:https://u16460183.ctfile.com/fs/16460183-296052483

    文件夹说明:

    Adafruit_SSD1306-master —— OLED库

    Adafruit-GFX-Library-master —— 图形库

    LS_DrawForOLED —— 主程序

     

    // HariChord, 2015 // Playing with OLED Display // Big thanks to AdaFruit for providing the wonderful libraries! #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); #if (SSD1306_LCDHEIGHT != 64) #error("Height incorrect, please fix Adafruit_SSD1306.h!"); #endif int nFrames = 36; void setup() { Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC,0x3C); display.display(); delay(1000); display.clearDisplay(); } void loop() { for (int frame=0; frame < nFrames; frame++) { HariChord(frame); } for (int frame=(nFrames-1); frame >= 0; frame--) { HariChord(frame); } } void HariChord(int frame) { display.clearDisplay(); int n = 7; int r = frame * 64 / nFrames; float rot = frame * 2*PI / nFrames; for (int i=0; i<(n-1); i++) { float a = rot + i * 2*PI / n; int x1 = 64 + cos(a) * r; int y1 = 32 + sin(a) * r; for (int j=i+1; j<n; j++) { a = rot + j * 2*PI / n; int x2 = 64 + cos(a) * r; int y2 = 32 + sin(a) * r; display.drawLine(x1,y1, x2,y2, WHITE); } } display.display(); }

     

     

     

     

     

    转载请注明原文地址: https://ju.6miu.com/read-972296.html

    最新回复(0)