BBC Microbitをデジタルクロック、具体的にはバイナリデジタルクロックに変えることは楽しい考えだと思っていました。私はちょうどそれをするためにPythonで少しのコードをノックしました:マイクロビットで10進数を2進数に変換する
from microbit import *
def makeBinary(intValue,padding):
number = intValue
returnValue = ""
brightness = 4 #value 0 to 8
while number > 0:
bit = number % 2
if bit > 0:
bit = brightness
quotient = number/2
returnValue = str(bit)+returnValue
number = quotient
for i in range(len(returnValue),padding):
returnValue = "0"+returnValue
return returnValue
timeAdvance = 0
minuteAdvance = 0
hourAdvance = 0
secondCounter = 0
while True:
if button_a.was_pressed():
#advance hours
hourAdvance = hourAdvance + 1
if hourAdvance > 23:
hourAdvance = 0
timeAdvance = (hourAdvance*60*60*1000)+(minuteAdvance*60*1000)
elif button_b.was_pressed():
#advance minutes
minuteAdvance = minuteAdvance + 1
if minuteAdvance > 59:
minuteAdvance = 0
timeAdvance = (hourAdvance*60*60*1000)+(minuteAdvance*60*1000)
else:
#calculate and display time
if (running_time()-secondCounter) > 1000:
secondCounter = running_time()
seconds = (running_time()/1000)%60
minutes = ((running_time()+timeAdvance)/1000/60)%60
hours = ((running_time()+timeAdvance)/1000/60/60)%24
pmString = "0"
addthirtyMString = "00000"
addthirtySString = "00000"
if hours>12:
pmString = "9"
hours = hours - 12
if minutes>29:
addthirtyMString = "00900"
minutes = minutes - 30
if seconds>29:
addthirtySString = "00900"
seconds = seconds - 30
hourString = makeBinary(hours,4)
minuteString = makeBinary(minutes,5)
secondString = makeBinary(seconds,5)
time = Image(pmString+hourString+":"+minuteString+":"+addthirtyMString+":"+secondString+":"+addthirtySString)
display.show(time)
問題は動作しません!番号は0だから10時48分01秒AMが(誤って)
****
*****
*****
として表示されていない限り、すべての1を返すバイナリフィールドでMicrobit結果でそれを実行これは
* *
* *
*
*
として表示されるべきですam/pm ledとadd 30 seconds/add 30 minutesマーカーがうまくいけば、これは明らかに10進数のバイナリ表現(makeBinary
関数)の書式設定の問題です。私は最初にこれを行うために 'format'を使用しようとしました - しかし、microPythonは、少なくともマイクロビットで、明らかにそれを好きではありません。
makeBinary
を「実際の」コンピュータに実行すると、正常に動作します。誰もがここで気にならないかもしれない考えを持っていますか? MicroBitを混乱させる可能性のある関数を使用せずに10進数をバイナリ文字列に変換する他の簡単な方法については何か提案はありますか?
このJamesさんに感謝します - あなたの整数/浮動小数点の答えは、法案に完全に合っています!実際、私はビンを試しましたが、マイクロビットは0bのトリミングと必要な長さのパディングでワーブラーを投げました(おそらく、私自身がPython 3でフォーマットを誤解しているためです)。それはすべて今働く。 – headbanger