Python 硬币插槽脚本 raspberry pi
Python scripting for coins slot raspberry pi
大家好,需要一点帮助
old 5 php coin = 1 pulse (+1)
new 5 php coin = 3 pulse (+1)
old 10 php coin = 5 pulse (+2)
new 10 php coin = 5 pulse (+2)
我想要发生的是每次我将硬币投入投币式投币机时,例如。 10 php 所以计数器值是 5 然后我得到值 2 我使用这个计算结果 = 值 + 计数器/计数器 + 1 现在我的总变量值是 2 但是当我插入 10 php + 5 php 计数器值为 6,我的 if 语句只接受计数器脉冲 1,3,5 你能帮我如何重置计数器值并在每次插入硬币时添加到结果中吗,例如. 10 php 5 个脉冲值 total = 2 并再次插入 5 php 1 个脉冲将 +1 添加到总数中,因此总数 = 3.
顺便说一句,引脚 16 读取投币机脉冲,引脚 12 用于按钮,当我完成投币时,将打印总值。
from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(16, GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(12, GPIO.IN,pull_up_down=GPIO.PUD_UP)
counter = 0
total = 0
value = 0
vendoState = True
while vendoState:
if GPIO.input(16) == 0:
counter+=1
sleep(.1)
print counter
if GPIO.input(12) == 0:
vendoState = False
counterHold = counter
if counterHold == 1 or counterHold == 3:
value = value + counter / counter
if counterHold == 5:
value = value + counter / counter + 1
total = total + value
counter = 0
if total != 0:
print total
total = 0
value = 0
vendoState = True
实际上你想像arduino一样在一个无限循环中编写整个程序。对于 运行 这完美你必须使用两个无限循环。
while True:
while vendoState:
if GPIO.input(16) == 0:
counter+=1
sleep(.1)
print counter
if counterHold in [1,3,5] or GPIO.input(12) == 0:
vendoState = False
counterHold = counter
if counterHold == 1 or counterHold == 3:
value = value + counter / counter
if counterHold == 5:
value = value + counter / counter + 1
total = total + value
counter = 0
if total != 0:
print total
total = 0
value = 0
最新代码
from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(16, GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(12, GPIO.IN,pull_up_down=GPIO.PUD_UP)
counter = 0
counterHold = 0
value = 0
total = 0
vendoState = True;
while True:
while vendoState:
if GPIO.input(16) == 0:
counter+=1
sleep(.1)
print counter
counterHold = counter
if counterHold in [1,3,5] and GPIO.input(12) == 0:
vendoState = False
if counterHold == 1 or counterHold == 3:
value = value + counterHold / counterHod
if counterHold == 5:
value = value + counterHold / counterHold + 1
total = total + value
counter = 0
if total != 0:
print total
total = 0
value = 0
当插入 2 个硬币时 1 10 php = 5 pulse + 5 php = 1 pulse = 6 pulse 当我按下按钮 12
时没有输出
大家好,需要一点帮助
old 5 php coin = 1 pulse (+1)
new 5 php coin = 3 pulse (+1)
old 10 php coin = 5 pulse (+2)
new 10 php coin = 5 pulse (+2)
我想要发生的是每次我将硬币投入投币式投币机时,例如。 10 php 所以计数器值是 5 然后我得到值 2 我使用这个计算结果 = 值 + 计数器/计数器 + 1 现在我的总变量值是 2 但是当我插入 10 php + 5 php 计数器值为 6,我的 if 语句只接受计数器脉冲 1,3,5 你能帮我如何重置计数器值并在每次插入硬币时添加到结果中吗,例如. 10 php 5 个脉冲值 total = 2 并再次插入 5 php 1 个脉冲将 +1 添加到总数中,因此总数 = 3.
顺便说一句,引脚 16 读取投币机脉冲,引脚 12 用于按钮,当我完成投币时,将打印总值。
from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(16, GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(12, GPIO.IN,pull_up_down=GPIO.PUD_UP)
counter = 0
total = 0
value = 0
vendoState = True
while vendoState:
if GPIO.input(16) == 0:
counter+=1
sleep(.1)
print counter
if GPIO.input(12) == 0:
vendoState = False
counterHold = counter
if counterHold == 1 or counterHold == 3:
value = value + counter / counter
if counterHold == 5:
value = value + counter / counter + 1
total = total + value
counter = 0
if total != 0:
print total
total = 0
value = 0
vendoState = True
实际上你想像arduino一样在一个无限循环中编写整个程序。对于 运行 这完美你必须使用两个无限循环。
while True:
while vendoState:
if GPIO.input(16) == 0:
counter+=1
sleep(.1)
print counter
if counterHold in [1,3,5] or GPIO.input(12) == 0:
vendoState = False
counterHold = counter
if counterHold == 1 or counterHold == 3:
value = value + counter / counter
if counterHold == 5:
value = value + counter / counter + 1
total = total + value
counter = 0
if total != 0:
print total
total = 0
value = 0
最新代码
from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(16, GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(12, GPIO.IN,pull_up_down=GPIO.PUD_UP)
counter = 0
counterHold = 0
value = 0
total = 0
vendoState = True;
while True:
while vendoState:
if GPIO.input(16) == 0:
counter+=1
sleep(.1)
print counter
counterHold = counter
if counterHold in [1,3,5] and GPIO.input(12) == 0:
vendoState = False
if counterHold == 1 or counterHold == 3:
value = value + counterHold / counterHod
if counterHold == 5:
value = value + counterHold / counterHold + 1
total = total + value
counter = 0
if total != 0:
print total
total = 0
value = 0
当插入 2 个硬币时 1 10 php = 5 pulse + 5 php = 1 pulse = 6 pulse 当我按下按钮 12
时没有输出