내 BBC 마이크로 비트를 디지털 시계, 특히 2 진 디지털 시계로 변환하는 것이 재미있는 아이디어라고 생각했습니다. 나는 파이썬에서 약간의 코드를 작성하여이를 수행했다.마이크로 비트에서 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)
문제는 작동하지 않는다는 것이다. 모든 일을 반환 이진 필드에 Microbit 결과에 실행 수는 0 그래서 오전 10시 48분 1초는 (잘못)입니다
****
*****
*****
로 표시 그것은
* *
* *
*
*
로 표시해야하지 않는 한 am/pm led가 추가되고 30 초 추가/30 분 마커 추가가 잘 수행되면이 값은 십진수의 이진 표현 (makeBinary
함수)을 형식화하는 것과 관련된 명확한 문제입니다. 처음에 '형식'을 사용하여이 작업을 시도했지만 마이크로 파이썬에서 마이크로 파이썬은 분명히 그것을 좋아하지 않습니다.
내 '실제'컴퓨터에서 makeBinary
을 실행하면 정상적으로 작동합니다. 누구가 여기에서 어쩌면일지도 모른 무슨 아이디어가 있는가? 또는 MicroBit을 혼동시킬 수있는 함수를 사용하지 않고 10 진수를 2 진 문자열로 변환하는 다른 간단한 방법에 대한 제안 사항이 있습니까?
이 James에게 감사드립니다. 정수/부동 응답이 청구서에 완벽하게 맞습니다! 사실, 나는 bin을 시도했다 - 그러나 Microbit는 0b의 자르기와 필요한 길이의 padding에서 wobbler를 던졌다. (아마 Python 3에서의 형식에 대한 내 자신의 오해 때문에?) 아무리해도! 이제는 모두 작동합니다. – headbanger