找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2830|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

TurnipBit口袋編程計(jì)算機(jī)DIY計(jì)數(shù)存錢罐

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
  下面使用TurnipBit開(kāi)發(fā)板自己制作了一個(gè)計(jì)數(shù)存錢罐,不光能存錢,還能計(jì)數(shù),還能顯示存了多少錢,分享出來(lái)給大家交流學(xué)習(xí)一下。

  實(shí)物成品如下圖:



  這個(gè)計(jì)數(shù)存錢罐主要原理就是利用了硬幣可以導(dǎo)電的基本特性。在盒子放入硬幣的入口處設(shè)置一個(gè)略小于硬幣厚度的金屬夾片,分別連接IO口和GND,這樣在有硬幣投入的時(shí)候,就可以檢測(cè)到導(dǎo)通,進(jìn)而計(jì)數(shù)保存的硬幣數(shù)量。

  這個(gè)計(jì)數(shù)存錢罐主要使用的器件如下:

  TurnipBit一塊



  紙盒一個(gè)

  導(dǎo)線若干

  金屬夾片兩片

  制作過(guò)程如下:

  1)硬件制作

  1.在紙盒頂端做一個(gè)開(kāi)口,大小以正好放入一元硬幣為最佳;

  2.在紙盒正面做三個(gè)開(kāi)口,大小以正好露出顯示屏和按鍵為最佳;

  3.放入TurnipBit;

  2)軟件制作

  1.做一個(gè)數(shù)組,用來(lái)保存顯示圖形的段碼;

  2.做一個(gè)函數(shù),用來(lái)顯示圖形;

  3.在循環(huán)中循環(huán)掃描兩個(gè)金屬夾片是否短路;

  4.檢測(cè)都短路,延時(shí)一會(huì),再次檢測(cè)是否短路;

  5.兩次均檢測(cè)到短路,即可判斷為有硬幣投入,即可計(jì)數(shù)加一;

  6.在顯示屏上顯示的數(shù)值做相應(yīng)調(diào)整。

  以上為TurnipBit制作計(jì)數(shù)存錢罐的基本原理和做法,幾天代碼如下:

  
  1. from microbit import *

  2. coin_count=0
  3. old_count=-1
  4. pinflag=0

  5. def num2img(x):#設(shè)置顯示函數(shù)
  6.         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]]#設(shè)置數(shù)組,保存顯示段碼
  7.         numarray=imgarray[x]
  8.         resstr=""
  9.         for i in range(5):
  10.                 numstr=(str(bin(numarray[i])).replace("1", "9"))[2:]
  11.                 c=5-len(numstr)
  12.                 for j in range((c)):
  13.                           numstr="0"+numstr
  14.                         resstr=resstr+numstr+":"
  15.                         return resstr[0:len(resstr)-1]

  16. while True:
  17.         if(old_count!=coin_count):
  18.                 if(coin_count<10):#判斷存錢數(shù)量在可固定顯示范圍內(nèi)
  19.                         display.show(Image(num2img(coin_count)))#顯示當(dāng)前錢數(shù)
  20.                 old_count=coin_count

  21.         if(coin_count>=10):#判斷當(dāng)前錢數(shù)在滾動(dòng)顯示范圍
  22.                 display.scroll(str(coin_count))#顯示當(dāng)前錢數(shù)

  23.         if(pin0.read_digital()==0 and pinflag==1):#判斷兩個(gè)夾片是否真的短路
  24.                 coin_count=coin_count+1#錢數(shù)加一
  25.                 pinflag=0
  26.         if(pin0.read_digital()==1):#檢查兩個(gè)夾片是否短路
  27.                 pinflag=1
  28.                 sleep(1000)//防抖動(dòng)延時(shí)
復(fù)制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:663441 發(fā)表于 2020-4-25 12:57 | 只看該作者
有沒(méi)有文檔形式的資料呢
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表