相關知識
**紅外計數測速傳感器:**一般由三部分組成:光的發射、光的接收及信號放大。輸入的電信號驅動發光二極管(LED),使之發出一定波長的光,被光探測器接收而產生光電流,再經過進一步放大后輸出。
其工作原理為通過對紅外發射光的阻斷和導通,在紅外接收管感應出的電流變化來實現開和關的判斷。有遮擋,輸出高電平;無遮擋,輸出低電平。
TM1637四位數碼管模塊: 是一個12腳的帶時鐘點的4位共陽數碼管(0.36英寸)的顯示模塊,驅動芯片為TM1637,只需2根信號線即可使單片機控制4位8段數碼管。可以免去我們前面繁瑣的接線。
電路搭建
所需材料
ArduinoUno * 1
紅外計數測速傳感器 * 1
TM1637四位數碼管模塊 * 1
電路連接
紅外計數測速傳感器接線:
VCC------>Arduino的+5V
GND------>Arduino的GND
DO------>Arduino的信號端
TM1637四位數碼管模塊接線:
CLK------>Arduino的信號端
DIO----->Arduino的信號端
VCC------>Arduino的+5V
GND------>Arduino的GND
程序編寫
練習一:計數儲錢罐
使用紅外計數測速傳感器制作一個能夠計數的儲蓄罐。
圖形化****方式:
代碼方式:
在使用代碼編程之前,我們需要先添加TM1637四位數碼管模塊的庫文件。
點擊arduinoIDLE中的工具-->庫文件管理,在列表中選擇SevenSegmentTM1637進行安裝。
/* 項目名稱:計數儲蓄罐
* 項目時間:2022.03.02
* 項目作者:MRX
*/
#include < SevenSegmentTM1637.h >
int count = 0;
int sensor_Pin = 6;
SevenSegmentTM1637 display(2,3);
void setup(){
count = 0;
display.begin();
display.setBacklight(20);
display.clear();
pinMode(sensor_Pin, INPUT);
}
void loop(){
display.print(count);
if (digitalRead(sensor_Pin)) {
delay(1000);
count = count + 1;
}
}
練習二:斷電保留計數的儲蓄罐
在練習一的基礎上,實現斷電后,能夠記住之前統計的數量。并在這個數量基礎上繼續計數。
圖形化方式:
代碼方式:
/* 項目名稱:斷電保留計數儲蓄罐
* 項目時間:2022.03.02
* 項目作者:MRX
*/
#include < SevenSegmentTM1637.h >
#include < EEPROM.h >
int count = 0;
int sensor_Pin = 6;
SevenSegmentTM1637 display(2,3);
void setup(){
count = 0;
display.begin();
display.setBacklight(20);
display.clear();
EEPROM.get(0, count);
pinMode(sensor_Pin, INPUT);
}
void loop(){
display.print(count);
if (digitalRead(sensor_Pin)) {
delay(1000);
count = count + 1;
EEPROM.put(0, count);
}
}
相關知識:
**EEPROM Get: **從EEPROM獲得一個值,表達式為EEPROM.get(address, a)
**EEPROM Put: **用變量來把一些數值放到EEPROM里,表達式為EEPROM.put(address, a)
**EEPROM Write: **保存對應的值到EEPROM,表達式為EEPROM.write(address, a);
EEPROM Clear: 清除EEPROM的內容,其實就是把EEPROM中每一個字節寫入0,表達式為EEPROM.write(address, 0);
EEPROM Read: 讀取EEPROM,表達式為EEPROM.read(address);
-
發光二極管
+關注
關注
13文章
1194瀏覽量
66201 -
EEPROM
+關注
關注
9文章
1010瀏覽量
81406 -
Arduino
+關注
關注
187文章
6464瀏覽量
186650 -
光探測器
+關注
關注
1文章
39瀏覽量
10856 -
TM1637
+關注
關注
0文章
21瀏覽量
9415
發布評論請先 登錄
相關推薦
評論