很多經(jīng)典的小游戲,例如貪吃蛇、俄羅斯方塊等都是通過按鍵控制顯示于屏幕,當搖桿遇上顯示屏,我們可以嘗試很多有意思的實驗。本篇通過搖桿控制OLED上圓的移動。
1. 實驗材料
- Uno R3開發(fā)板
- 配套USB數(shù)據(jù)線
- 面包板及配套連接線
- 雙軸按鍵搖桿模塊
- OLED顯示屏
2. 實驗步驟
1. 根據(jù)原理圖搭建電路圖。
OLED屏的VCC、GND分別連接開發(fā)板的3.3V、GND,OLED屏的SDA和SCL分別連接開發(fā)板的A4和A5。雙軸按鍵搖桿模塊的VCC、GND分別連接開發(fā)板的5V、GND,模塊的X軸輸出、Y軸輸出分別連接開發(fā)板的模擬引腳A0、A1。
實驗原理圖如下圖所示:
實驗原理圖
2. 新建sketch,拷貝如下代碼替換自動生成的代碼并進行保存。
1/*
2 OLED_JoyStick
3 搖桿控制OLED移動顯示
4*/
5#include < Wire.h >
6#include < Adafruit_GFX.h >
7#include < Adafruit_SSD1306.h >
8
9#define OLED_RESET 4
10Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
11#define pinX A0
12#define pinY A1
13
14//定義圓心和半徑變量
15int xCircle = 0;
16int ycircle = 0;
17int radius = 4;
18
19void setup()
20{
21 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
22 display.setTextColor(WHITE);//開像素點發(fā)光
23 display.clearDisplay();//清屏
24}
25
26void loop()
27{
28 xCircle = map(analogRead(pinX), 1023, 0, radius, 128 - radius); //將X軸獲取的AD值映射到oled的X顯示方向
29 ycircle = map(analogRead(pinY), 1023, 0, radius, 64 - radius); //將Y軸獲取的AD值映射到oled的Y顯示方向
30
31 display.drawRect(0, 0, 128, 64, 1);//畫矩形
32 display.drawCircle(xCircle, ycircle , radius, 1); //畫圓
33 display.display();//開顯示
34 display.clearDisplay();//清屏
35}