Уведомления

Группа в Telegram: @pythonsu

#1 Март 31, 2016 15:18:19

fwgg
Зарегистрирован: 2016-03-31
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Arduino (C) => Raspberry Pi (Python)

Доброго часа товарищи, нуждаюсь в помощи, не соображаю в питоне совсем от слова ничего.
Есть код который отлично работает на arduino, пытаюсь его методом тыка и ктр+ц переписать на питон (так нужно) для малинки. Успехов нет, пока что могу диодом поморгать, помогите пожалуйста если не за огромное спасибо то за денежку, очень сильно нужно.
Суть какова есть купюроприемник NV9 который прошит под MDB интерфейс и работает в режиме Pulse. Есть малинка вторая с установленной убунтой. Нужно сделать обработчик для входящих данных с купюроприемника.
Купюроприемник возвращает от 1 до 9 импульсов длиной 200мс если мне память не изменяет. Собственно нужно считать импульсы и через кейс в консоль возвращать текст в стиле “принято 3 рубля”
Спасибо еще раз за помощь, код от адруино и то что у меня неполучилось на питоне кладу ниже:

Arduino

const int moneyPin=2;
const int zapretaPin = 9;
const int zapretbPin = 6;
const int zapretcPin = 7;
const int zapretdPin = 8;
const int ledPin = 12;
int money=0;
int sum=0;
 
unsigned long timeAllPulse1=3000; // макс. время приема купюры
unsigned long timeCount1=0;
 
void setup()
{
pinMode(zapretaPin, OUTPUT);
pinMode(zapretbPin, OUTPUT);
pinMode(zapretcPin, OUTPUT);
pinMode(zapretdPin, OUTPUT);
pinMode(moneyPin,INPUT);
Serial.begin(9600);
Serial.println("ready");
attachInterrupt(0,count_pulse1,FALLING);
 
}
 
void loop()
{
digitalWrite(zapretaPin, LOW);
digitalWrite(zapretbPin, LOW);
digitalWrite(zapretcPin, LOW);
digitalWrite(zapretdPin, LOW);
// прошло максимальное время приема купюры?
if(money>0 && (millis()-timeCount1)>timeAllPulse1)
{
sum+=money;
money=0;
Serial.print("Kredit= ");
Serial.println(sum);
}
}
// обработка прерывания  получить кол-во импульсов
//
void count_pulse1()
{
detachInterrupt(0);
money++;
if(money==1)
timeCount1=millis();
attachInterrupt(0,count_pulse1,FALLING);
}

Raspberry - код не рабочий тут непойми что
#!/usr/bin/env python2.7
import RPI.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP)
money = 0
sum = 0
millis = int(round(time.time() * 1000))
 
timeAllPulse1 = 3000
timeCount1 = 0
 
while (True):
    GPIO.wait_for_edge(4, GPIO.FALLING, timeout = 3000)
        money+=1
        if money==1 :
        timeCount1=millis
        if money>0 & (millis-timeCount1) > timeAllPulse1 :
        sum+=money
        money=0
        print(sum)

Отредактировано fwgg (Март 31, 2016 22:33:57)

Офлайн

#2 Март 31, 2016 21:36:01

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Arduino (C) => Raspberry Pi (Python)

У вас if неправильно написан, используется несуществующий оператор ++. Синтаксис языка за вас никто учить не будет.



Офлайн

#3 Март 31, 2016 22:12:03

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Arduino (C) => Raspberry Pi (Python)

fwgg
в коде от Arduino присутствуют функции которые непонятно что из себя представляют, например pinMode, digitalWrite и т.д. Поэтому портирование кода стопарится.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Март 31, 2016 22:32:57

fwgg
Зарегистрирован: 2016-03-31
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Arduino (C) => Raspberry Pi (Python)

pinMode = вход, выход заменяется на GIPO.setup(PIN,INPUT\OUTPUT)
digitalWrite = 1 или 0 на пине так же заменяется на GPIO(PIN,LOW\HIGH)
по поводу синтаксиса - говорю же код не рабочий, набросал в меру своих мозгов, питона не знаю
с итераторами уже разобрался money +=1 но это не решает проблему прерываний

Офлайн

#5 Март 31, 2016 23:04:10

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Arduino (C) => Raspberry Pi (Python)

fwgg
но это не решает проблему прерываний
Мне не очень понятна методология по которой вы код пишете. Я так понял что документации у вас нет. Железо у вас тоже отличается от того что используется в примере. И вы пишете код методом переставления слов, смешивая код на недо C и на питоне?
Может посмотреть в сторону https://pythonhosted.org/RPIO/?



Офлайн

#6 Апрель 1, 2016 09:05:27

fwgg
Зарегистрирован: 2016-03-31
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Arduino (C) => Raspberry Pi (Python)

железо идентично и код на недоси и ардуионо работает отлично, успешно переписан в нормальный скетч и выполняет свои задачи но делать связку ардуино + рпи глупость, а заказчику нужно чтоб была малина и был питон
в питоне я вообще не понимаю что происходит по этому и обратился за помощью, готов оплатить

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version