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

时没有输出