中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

樹莓派Python如何用2位數碼管顯示CPU溫度

發布時間:2021-10-19 10:17:40 來源:億速云 閱讀:173 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關樹莓派Python如何用2位數碼管顯示CPU溫度,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

用2位數碼管顯示CPU溫度

概述

樹莓派Python如何用2位數碼管顯示CPU溫度

前兩天 我們學習使用1位數碼管顯示個位數字倒計時,這次我們學習使用2位數碼管顯示CPU的溫度。

通過本節課,我們能學習到:

  • 2位數碼管的顯示原理

  • 視覺暫留顯示技巧

所需硬件

  • 樹莓派 x1

  • 面包板 x1

  • 杜邦線 x9

  • 2位數碼管 x1

原理說明

我們今天使用的是 3261BS 型號的2位共陽數碼管,先看看它的電路原理圖:

樹莓派Python如何用2位數碼管顯示CPU溫度

通過 上一篇 的學習,我們能夠看懂1位數碼管的電路圖了,而2位數碼管可以簡單的理解為2個1位數碼管的組合。

我們看最下面的一張圖,10號引腳和5號引腳,分別是數碼管第一個數字和第二個數字的公共陽極。

目標一:讓數碼管1和數碼管2的 A 管分別亮起來

數碼管期望達到的效果需要做的電路控制
數碼管1A 管亮10號引腳高電壓,3號引腳低電壓
數碼管2A 管亮5 號引腳高電壓,3號引腳低電壓

這個和操作1位數碼管是一樣的,但再看看接下來的目標可能就比較麻煩了:

目標二:讓數碼管1的 A 管亮,同時讓數碼管2的 A 管不亮

數碼管期望達到的效果需要做的電路控制
數碼管1A 管亮10號引腳高電壓,3號引腳低電壓
數碼管2A 管不亮5號引腳高電壓,3號引腳高電壓

問題出來了:因為3號引腳是共用的,所以這種電路控制無法實現。那怎么解決這個問題呢?為了解決這個問題,這里我們需要借助 視覺暫留

視覺暫留

這個原理最早源于電影制作。科學實驗證明,人眼在某個視像消失后,仍可使該物像在視網膜上滯留0.1-0.4秒左右。電影膠片以每秒24格畫面勻速轉動,一系列靜態畫面就會因視覺暫留作用而造成一種連續的視覺印象,產生逼真的動感。家里常用的日光燈也是這個原理,日光燈并非一直亮著的,而是在以很快的頻率進行亮滅亮滅,當閃爍的頻率達到每秒25次以上的時候,人眼就認為是一直亮著的。

可以利用這個原理,只要在足夠短的時間間隔里分別顯示2個數碼管的數字,在人的視覺上就會認為這2個數字是同時顯示的。那我們在電路控制采用的辦法就是對3號引腳進行分時分配:0.01秒用于數碼管1的 A 管,接下來的0.01秒用于數碼管2的 A 管,這樣1秒鐘之內可以刷新50次,確保數碼管沒有閃爍感。

連線圖

在開始連接硬件電路之前,首先要做的事是將樹莓派電腦關機,并斷開電源。因為如果樹莓派主板帶電的時候,進行插接電路可能會導致電子元器件的燒毀,所以一定要記住:

連接電路的時候主板必須斷電。

示例代碼

#!/usr/bin/env python

# encoding: utf-8

'''

接線圖:

RPi digital

7 <---> 10

11 <---> 5

13 <---> 3

15 <---> 9

29 <---> 8

31 <---> 6

33 <---> 7

35 <---> 4

37 <---> 1

'''

import RPi.GPIO as GPIO

import time

import os

# 數碼管1-2正極分別使用的針腳

LED_POWER_1 = 7

LED_POWER_2 = 11

# A-G管分別使用的針腳

LED_A = 13

LED_B = 15

LED_C = 29

LED_D = 31

LED_E = 33

LED_F = 35

LED_G = 37

# 獲取CPU溫度

def get_cpu_temperature():

return os.popen('vcgencmd measure_temp').read()[5:7]

# 重置數碼管,熄滅所有數字

def reset():

GPIO.output((LED_POWER_1, LED_POWER_2), GPIO.LOW)

GPIO.output((LED_A, LED_B, LED_C, LED_D, LED_E, LED_F, LED_G), GPIO.HIGH)

# 設置第幾個數碼管亮起

def set_position(position):

if position == 1:

GPIO.output(LED_POWER_1, GPIO.HIGH)

else:

GPIO.output(LED_POWER_2, GPIO.HIGH)

# 顯示數字0

def show0(p):

reset()

set_position(p)

GPIO.output((LED_A, LED_B, LED_C, LED_D, LED_E, LED_F), GPIO.LOW)

# 顯示數字1

def show1(p):

reset()

set_position(p)

GPIO.output((LED_B, LED_C), GPIO.LOW)

# 顯示數字2

def show2(p):

reset()

set_position(p)

GPIO.output((LED_A, LED_B, LED_D, LED_E, LED_G), GPIO.LOW)

# 顯示數字3

def show3(p):

reset()

set_position(p)

GPIO.output((LED_A, LED_B, LED_C, LED_D, LED_G), GPIO.LOW)

# 顯示數字4

def show4(p):

reset()

set_position(p)

GPIO.output((LED_B, LED_C, LED_F, LED_G), GPIO.LOW)

# 顯示數字5

def show5(p):

reset()

set_position(p)

GPIO.output((LED_A, LED_C, LED_D, LED_F, LED_G), GPIO.LOW)

# 顯示數字6

def show6(p):

reset()

set_position(p)

GPIO.output((LED_A, LED_C, LED_D, LED_E, LED_F, LED_G), GPIO.LOW)

# 顯示數字7

def show7(p):

reset()

set_position(p)

GPIO.output((LED_A, LED_B, LED_C), GPIO.LOW)

# 顯示數字8

def show8(p):

reset()

set_position(p)

GPIO.output((LED_A, LED_B, LED_C, LED_D, LED_E, LED_F, LED_G), GPIO.LOW)

# 顯示數字9

def show9(p):

reset()

set_position(p)

GPIO.output((LED_A, LED_B, LED_C, LED_D, LED_F, LED_G), GPIO.LOW)

GPIO.setmode(GPIO.BOARD)

# 初始化引腳輸出模式

GPIO.setup((LED_POWER_1, LED_POWER_2, LED_A, LED_B, LED_C, LED_D, LED_E, LED_F, LED_G), GPIO.OUT)

function_directory = locals()

try:

while True:

cpu_temperature = get_cpu_temperature()

print 'CPU temperature = %s°C'%(cpu_temperature)

loop = 0

while loop < 200:

loop += 1

# 先顯示高位

position = 1

for n in cpu_temperature:

function_directory['show%s'%(n)](position)

time.sleep(0.01)

position += 1

except KeyboardInterrupt:

GPIO.cleanup()

保存為digital-2.py,并運行之。

sudo python digital-2.py

關于樹莓派Python如何用2位數碼管顯示CPU溫度就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

什邡市| 左贡县| 沈丘县| 台南市| 连城县| 宜兴市| 温泉县| 黑水县| 青州市| 新绛县| 河津市| 濮阳市| 绿春县| 肇源县| 开江县| 霍林郭勒市| 县级市| 镇江市| 益阳市| 德江县| 康马县| 潼关县| 固原市| 乌拉特后旗| 萍乡市| 永新县| 泸溪县| 浮山县| 新民市| 安新县| 班玛县| 台江县| 高邮市| 若尔盖县| 儋州市| 通榆县| 友谊县| 芦溪县| 玉溪市| 陈巴尔虎旗| 玉林市|