Arduino Uno 驅動OLED進階 顯示幾何動畫
阿新 • • 發佈:2019-01-04
這篇文章主要翻譯國外某大神的作品
本示例可以學會如何畫線條
先看看效果
YOUTUBE視訊
https://www.youtube.com/watch?v=_t_lfcGV_YM
GITHUB 原始碼地址
以上程式碼包含SPI接線方式
本次略加修改為適合IIC的接線方式
接線方式請參考
開原始碼如下:
資料夾說明:
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(); }