下面使用turnipbit開發板自己製作了乙個計數存錢罐,不光能存錢,還能計數,還能顯示存了多少錢,分享出來給大家交流學習一下。
實物成品如下圖:
這個計數存錢罐主要原理就是利用了硬幣可以導電的基本特性。在盒子放入硬幣的入口處設定乙個略小於硬幣厚度的金屬夾片,分別連線io口和gnd,這樣在有硬幣投入的時候,就可以檢測到導通,進而計數儲存的硬幣數量。
這個計數存錢罐主要使用的器件如下:
turnipbit一塊
紙盒乙個
導線若干
金屬夾片兩片
製作過程如下:
1)硬體製作
1.在紙盒頂端做乙個開口,大小以正好放入一元硬幣為最佳;
2.在紙盒正面做三個開口,大小以正好露出顯示屏和按鍵為最佳;
3.放入turnipbit;
2)軟體製作
1.做乙個陣列,用來儲存顯示圖形的段碼;
2.做乙個函式,用來顯示圖形;
3.在迴圈中迴圈掃瞄兩個金屬夾片是否短路;
4.檢測都短路,延時一會,再次檢測是否短路;
5.兩次均檢測到短路,即可判斷為有硬幣投入,即可計數加一;
6.在顯示屏上顯示的數值做相應調整。
以上為turnipbit製作計數存錢罐的基本原理和做法,幾天**如下:
from microbit import *
coin_count=0
old_count=-1
pinflag=0
defnum2img
(x):
#設定顯示函式
imgarray=[[12,18,18,18,12],[4,12,4,4,14],[14,1,6,8,15],[15,1,2,9,6],[6,10,18,31,2],[31,16,30,1,30],[4,8,14,17,14],[31,2,4,8,16],[14,17,14,17,14],[14,17,14,4,8]]#設定陣列,儲存顯示段碼
numarray=imgarray[x]
resstr=""
for i in range(5):
numstr=(str(bin(numarray[i])).replace("1", "9"))[2:]
c=5-len(numstr)
for j in range((c)):
numstr="0"+numstr
resstr=resstr+numstr+":"
return resstr[0:len(resstr)-1]
while
true:
if(old_count!=coin_count):
if(coin_count<10):#判斷存錢數量在可固定顯示範圍內
display.show(image(num2img(coin_count)))#顯示當前錢數
old_count=coin_count
if(coin_count>=10):#判斷當前錢數在滾動顯示範圍
display.scroll(str(coin_count))#顯示當前錢數
if(pin0.read_digital()==0
and pinflag==1):#判斷兩個夾片是否真的短路
coin_count=coin_count+1
#錢數加一
pinflag=0
if(pin0.read_digital()==1):#檢查兩個夾片是否短路
pinflag=1
sleep(1000)//防抖動延時
利用POVME計算蛋白的口袋的體積
這裡主要介紹一下我自己用povme計算分子動力學軌跡中的蛋白活性口袋的體積的變化。首先 先將蛋白中的所有的frames按照一定的方式進行align 這裡我用的是阿爾法碳原子作為align的骨架 將align之後的每乙個frame儲存成pdb的格式。上面所有的處理過程都是用的amber中的ptraj模...
計算機保研複試刷題 神奇的口袋
有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,john...
做遊戲,學程式設計(C語言) 14 口袋妖怪
應 祝顧笙同學的要求,分享16級同學實現的口袋妖怪遊戲demo。實現了經典遊戲口袋妖怪的簡化版,包括簡單的劇情和對戰系統,可以存檔 自由刷怪公升級。以下為大概的實現過程 1.實現人物在地圖上的自由移動。通過input變數改變地圖的擷取位置實現地圖的移動 2 加入了戰鬥函式和介面切換函式,這時只作為乙...