第1步:材料
對于這個項目,我使用了以下組件:
- Arduino Nano
- 4針OLED LCD屏幕(背光)
- 10K歐姆電阻
- 4針按鈕
- 電線
- 3D打印機
步驟2:設置OLED屏幕
我首先確保屏幕工作并且可以通過Arduino很好地控制 - 我開始使用常規尺寸模型并最終縮小使用Arduino Nano,希望設計更加緊湊。
如圖所示,屏幕的四個引腳應連接到Arduino,如下所示:
VCC - 》 5V電源
GND - 》 GND
SCL - 》 A5
SDA - 》 A4
然后可以使用芯片控制屏幕。可以在https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/找到一些基本的入門代碼。 Adafruit GFX和SSD1306庫是必需的,并且包含了使屏幕工作的繁重工作,因此在Arduino IDE中實現簡單的內置模式或文本顯示相對簡單。
步驟3:添加按鈕
我希望此設備具有交互性,因此我在其設置中添加了一個按鈕。這非常簡單,我們只需將按鈕上的一個引腳連接到Arduino的3.3V電源,另一端連接到其第二個數字輸入。按鈕也與10K歐姆電阻器串聯接地。
一旦到位,Arduino就可以從按鈕接收輸入并在屏幕上顯示結果。
第4步:編程
我已粘貼下面設備的代碼。它只包含幾個if循環,并定義一個里程變量,當按下按鈕時,里程變量會增加并顯示在屏幕上。我還包括延遲,因此如果按下按鈕,它會更快地增加。
#include
#include
#include
//OLED顯示TWI地址#define OLED_ADDR 0x3C
Adafruit_SSD1306顯示(-1);
#if(SSD1306_LCDHEIGHT!= 64)#error(“高度不正確,請修復Adafruit_SSD1306.h!”); #endif
//常量不會改變。它們用于設置引腳號:const int buttonPin = 2;//按鈕引腳的數量const int ledPin = 13;//LED引腳的編號
//變量將改變:int buttonState = 0;//用于讀取按鈕狀態的變量int miles = 240;//計算里程數
void setup(){//將LED引腳初始化為輸出:pinMode(ledPin,OUTPUT);//將按鈕引腳初始化為輸入:pinMode(buttonPin,INPUT);
//初始化并清除display display.begin(SSD1306_SWITCHCAPVCC,OLED_ADDR); display.clearDisplay(); display.display(); Serial.begin(9600);//更新顯示所有上述圖形display.display(); }
void loop(){//讀取按鈕值的狀態:buttonState = digitalRead(buttonPin);
//檢查是否按下了按鈕。如果是,則buttonState為HIGH:if(buttonState == HIGH){//打開LED:digitalWrite(ledPin,HIGH);//增量里程變量display.clearDisplay();里程+ = 1;延遲(100); } else {//關閉LED:digitalWrite(ledPin,LOW); }
//檢查鞋子是否太舊(超過250英里)if(miles》 250){display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,55); display.print(“新對的時間!”); } else {display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,55); display.print(“你很高興!”); }//display field values//display Headers display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(5,0); display.print(“Miles Run:”);
display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(15,30); display.print(“”); display.print(英里);//display message display.display(); Serial.print(英里); }
步驟5:裝置設備
為了使器件更小,我換成了Arduino Nano。這個代碼都不需要改變,但是Arduino最近更換了他們的bootloader,所以如果你從中國購買一臺帶有CH34X芯片的廉價Nano,你可能需要下載一些驅動程序并使用舊的bootloader(這是一個選項) IDE)。我將組件直接焊接到芯片上,然后3D打印出一個可以在這里找到的小盒子。我在前面為屏幕切了一個洞,然后在側面有兩個小孔,用于充電線和按鈕。因為這只是一個原型而且專注于電子功能,所以我用一些電工膠帶將它們固定在一起,并用安全銷固定在鞋子上。我試圖通過將電池的正極引線連接到Arduino上的Vin和負極引線接地來切換到電池供電(使用9V)以使設備更便攜。我包括一個與正極引線串聯的撥動開關來控制電源。這首先工作,但由于某種原因,其他開關不起作用,屏幕偶爾會出現故障。我認為我發現的撥動開關可能有問題,但為了時間的緣故,我現在決定放棄電池的想法。
-
里程表
+關注
關注
1文章
15瀏覽量
9860
發布評論請先 登錄
相關推薦
評論