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