Брояч на монети в Raspberry Pi (RPi-GPIO)

Имам проблем с преброяването на монети в raspberry pi B+ в RPi-GPIO.

Това е кодът:

 import RPi.GPIO as GPIO

 GPIO.setmode(GPIO.BCM)
 GPIO.setup(23, GPIO.IN)

 while True:
    print(GPIO.input(23))

Обадих се на производителя и той каза, че броячът на монети изпраща импулс със стойност 1 постоянно и стойност 0, когато монетата пада. Но в конзолата показва 0 и 1 на случаен принцип. И нищо не се променя, когато монетата падне.

4 проводни изхода:

  • Черно и червено: са 12v (шрифт)
  • Бяло: е импулс (1 постоянно, 0 при пускане на монетата). Той е включен в малина на 23 пина (избирам този щифт, защото е наличен).
  • Лилаво: е за броене на монети на отделен светодиод.

Напрежение: Шрифт 12v, а импулсът (бял проводник) е 0,19~0,25 волта

Забележка: Пулсът е цифров.

Имам този брояч на монети:

въведете описание на изображението тук


person Radagast    schedule 08.10.2015    source източник
comment
Можете ли да ни покажете спецификациите на хардуера? Като връзките на брояча на монети. Само с кода на Python няма да можем да помогнем.   -  person lilezek    schedule 08.10.2015
comment
4 кабелни изхода: черно и червено са 12v (шрифт), бяло е импулс на 23 пина (1 постоянно, 0 при пускане на монетата) и лилаво е за броене на монети на отделен светодиод. Шрифт 12v и импулс (бяла жица) е 0,19~0,25 волта и използвах 10k резистор в тази жица. И аз използвам Raspberry pi B+   -  person Radagast    schedule 08.10.2015
comment
Какви са характеристиките на импулса? Защо избрахте щифт 23? Можете ли да разширите с повече информация?   -  person lilezek    schedule 08.10.2015
comment
Редактирах/актуализирах въпроса.   -  person Radagast    schedule 08.10.2015
comment
Импулсът на брояча на монети работи ли със същото напрежение като входните щифтове на RP GPIO?   -  person lilezek    schedule 08.10.2015
comment
Не, пулс между 0,19v и 0,25v. ниско напрежение   -  person Radagast    schedule 08.10.2015
comment
@lilezek, разбирам, броячът не работи при същото напрежение като RPi, свързах се с производителя и той каза: няма значение напрежението, 0 и 1 винаги се изпращат. това има ли смисъл?   -  person Radagast    schedule 08.10.2015
comment
Това не е ли проблем? Очакваното напрежение трябва да е между 3.3v и 5v предполагам.   -  person lilezek    schedule 08.10.2015
comment
Значи трябва да направя друга схема в протоборд? при енергийно 0.2v в 3.3v?   -  person Radagast    schedule 08.10.2015
comment
@lilezek виждам в (mosaic-industries.com/embedded-systems/microcontroller-projects/), gpio щифтове приемат 0v ~ 3.3v   -  person Radagast    schedule 09.10.2015
comment
Нека продължим тази дискусия в чата.   -  person lilezek    schedule 09.10.2015


Отговори (2)


again=True

Total=0

Wrongs=0

Corrects=0


Total_bags=0

Wrong_bags=0

Correct_bags=0

coins=['1p','2p','5p','10p','20p','50p','£1','£2']

bag_value=[1.00,1.00,5.00,5.00,10.00,10.00,20.00,20.00]

bag_amount=[100,50,100,50,50,20,20,10]

bag_weight=[3.56,7.12,3.25,6.5,5.0,8.0,8.75,12.0]

coins_len=len(coins)

Master_list=list()

CoinCount_list=list()

Tilte_list=['Name','Coin','Weight','Accurate']

Master_list.append(Tilte_list)

with open("Master.txt","w") as f: 
    f.write("{}".format(Master_list))

while True:

    again=True


    what=input("\nMenu\n1)\tAdd a bag\n2)\tStats\n")

    CoinCount_list=list()
    if what=='1':

        name=input("What is your name\n")

        CoinCount_list.append(name)

        with open("CoinCount.txt","w") as f: 
            f.write("{}".format(CoinCount_list))


        with open("CoinCount.txt","w") as f: 
            f.write("{}".format(CoinCount_list))

        Percent=0

        Wrongs=0

        Corrects=0 


while again:

Монета

        coin_input=input("What type of coin do you have\n")
        for i in range (0,coins_len):
            if coin_input==coins[i]:

                Coin=coins[i]
                valid=input("That is valid, is that what you wanted\n")

                if valid=="Yes":


                    CoinCount_list.append(coins[i])

                    with open("CoinCount.txt","w") as f: 
                        f.write("{}".format(CoinCount_list))

                    while True:
                        try:    
                            weight=int(input("What is the weight of the bag\n"))
                            break
                        except ValueError:
                            print("Oops!  That was no valid number.  Try again...\n")
                    amountCoin=weight/bag_weight[i]

Тегло

                    CoinCount_list.append(weight)

                    with open("CoinCount.txt","w") as f: 
                        f.write("{}".format(CoinCount_list))

                        if bag_amount[i] == amountCoin:

                            Total_bags=Total_bags+1

                            again=input("Thank you would you like to add another bag\n")

                            CoinCount_list.append('Correct')

                            with open("CoinCount.txt","w") as f: 
                                f.write("{}".format(CoinCount_list))

                            Total=bag_value[i]+Total
                            Correct_bags=Correct_bags+1

                            Corrects=Corrects+1

                            if again== 'Yes':
                                a='b'



                            else:
                                again=False


                                Master_list.append(CoinCount_list)

                                with open("Master.txt","w") as f: 
                                    f.write("{}".format(Master_list))







                        elif bag_amount[i] > amountCoin:
                            print("You have ",amountCoin,"coins, add ",amountCoin-bag_amount[i], "coin\n")

                            Wrong_bags=Wrong_bags+1
                            Total_bags=Total_bags+1

                            Wrongs=Wrongs+1



                        elif bag_amount[i] <amountCoin:
                            print("You have ",amountCoin,"coins, take away ",amountCoin-bag_amount[i], " coin\n")

                            Wrong_bags=Wrong_bags+1
                            Total_bags=Total_bags+1

                            Wrongs=Wrongs+1



if what=='2':
        print("")
        print("  We have check",Total_bags," ")
        print(" ",Correct_bags,"Correctly")
        print(" ",Wrong_bags,"Incorrectly")
        print("  We have raised £",Total," ")
        print("")
        with open("Master.txt") as f:
           rd=f.readlines()
        #print (rd)

        print(*Master_list, sep='\n')

        f = open("CoinCount.txt", "w")
        f.write( str(Master_list) ) 
        f.close()
person Archie Adams    schedule 02.10.2018
comment
Не съм запознат колко четлив е кодът, но все пак мисля, че трябва да коментирате или да добавите към този коментар някакво обяснение как работи вашият код. - person Thomas J.; 02.10.2018

person    schedule
comment
добре е, но видях проблема, трябва да прочета импулсите на 30ms... мога да променя импулса на coinacceptor (30ms;50ms;100ms) - person Radagast; 09.10.2015
comment
Изглежда като забавен проект, успех с него! - person ; 09.10.2015