Read DI pin with timer

Topics about the Software of Revolution Pi
Ibra
Posts: 2
Joined: 20 Nov 2019, 15:53

Read DI pin with timer

Post by Ibra »

Hello,

I just bought a RevPI Connect with a RevPi DI and DIO and I'm trying to interrogate a DI pin, for example every 100 ms or 10 seconds to accurately read the status of the pin.
You have a tutorial with timer and PIN code reader in python or something that could help me.

Thank you,
User avatar
dirk
KUNBUS
Posts: 2174
Joined: 15 Dec 2016, 13:19

Re: Read DI pin with timer

Post by dirk »

Hi, have a look at this code snippet

Code: Select all

#!/usr/bin/env python3
# BitMirror.py
# Mirror DIO channel 1 input to DIO channel 1 output

import revpimodio2
import time

rpi = revpimodio2.RevPiModIO(autorefresh=True)

while True:
	rpi.io.O_1.value = rpi.io.I_1.value
	time.sleep(0.02)
MartynSudworth
Posts: 9
Joined: 14 Nov 2019, 09:18

Re: Read DI pin with timer

Post by MartynSudworth »

Make sure you have all green LEDs. If you have some red LEDs on your DI or DIO module, then your power is not wired correctly.

The example above, also assumed that Pictory has setup the tags like in the example - on my module it chose different tags. This will generate exceptions in the python code.

Also make sure you call the python routine using python3 (ie "python3 filename.py" and not "python filename.py" the latter example, on my revpi, chooses python2).
Ibra
Posts: 2
Joined: 20 Nov 2019, 15:53

Re: Read DI pin with timer

Post by Ibra »

Hello thanks for your replay, but it's I do timer. sleep is the processor going to be really stuck or not ?
And i have anthor question, Is there a way to use an input to detect rising edge and falling edge at the same time ?

thanks,
User avatar
dirk
KUNBUS
Posts: 2174
Joined: 15 Dec 2016, 13:19

Re: Read DI pin with timer

Post by dirk »

Hi thank you MartynSudworth for the helpful comments. It is also good to know that there are by default cycle times applied by the RevPiModIO library which you may modify via '.cycletime', see here. The time sleep command is useful so that you do not peek your CPUs. The cycle time of the PiBridge is > 2ms so without the sleep you would simply waste CPU power. There is unfortunately just counter rising edge or counter falling edge possible. But you could use also direct value with debouncing. I.e. InputMode => Direct, InputDebounce => 3 m - Have a look here.
michris
Posts: 3
Joined: 27 Nov 2019, 23:13

Re: Read DI pin with timer

Post by michris »

Hi Dirk,

I have more or less the same problem.
For one or other reason I can not communicate to the DIO module in python.
I get the following error when try to read or write to the IO

Installed the following :
sudo apt-get update
sudo apt-get upgrade -y

sudo apt-get update
sudo apt-get install python3-revpimodio2
sudo apt-get dist-upgrade

sudo apt-get install revpipyload
sudo pip3 install revpimodio2
sudo apt-get install mosquitto-clients


Python code :

import revpimodio2

revpi = revpimodio2.RevPiModIO(autorefresh=True)

revpi.io.O_1.value=True

Error :

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/revpimodio2/io.py", line 79, in __getattr__
raise AttributeError("can not find io '{0}'".format(key))
AttributeError: can not find io 'O_1'


Any idea what can cause this ?

Many thanks in advance
Regards,

Christophe
User avatar
dirk
KUNBUS
Posts: 2174
Joined: 15 Dec 2016, 13:19

Re: Read DI pin with timer

Post by dirk »

Hi Christophe, start the script with python3 and verify the PiCtory configuration. What is the output of "piTest -d" and "python --version". You have to run your script using "python3 myscript.py" instead of "python myscript.py". Maybe this page helps with python/python3. Have a look at the page How to Configure RevPi DIO by Using PiCtory.
michris
Posts: 3
Joined: 27 Nov 2019, 23:13

Re: Read DI pin with timer

Post by michris »

Hi Dirk,
Thanks for your reply
The output of piTest -d displayes the following ...
pi@RevPi20977:~ $ piTest -d
Found 2 devices:

Address: 0 module type: 95 (0x5f) RevPi Core V1.2
Module is present
input offset: 0 length: 6
output offset: 6 length: 5

Address: 32 module type: 96 (0x60) RevPi DIO V1.4
Module is present, but NOT CONFIGURED!!!
input offset: 11 length: 70
output offset: 81 length: 18

Aparently the DIO is not configured ?
I added it on the PiCtory interface ... but how do I make it effective ? How can you save it ?

Thanks
Regards,
Christophe
User avatar
dirk
KUNBUS
Posts: 2174
Joined: 15 Dec 2016, 13:19

Re: Read DI pin with timer

Post by dirk »

Hi Christophe, yes this is the right way. In case "piTest -d shows" devices "present but not configured".
Go to PiCtory
  1. Change the configuration
  2. Save the configuration via "File -> Save as startup configuration"
  3. Reset the driver via "Tools -> Reset driver"
You can execute "piTest -x" alternatively to the last step.
Then "piTest -d" should not display the "present but not configured" warning any more.
Or repeat until your hardware configuration matches...
michris
Posts: 3
Joined: 27 Nov 2019, 23:13

Re: Read DI pin with timer

Post by michris »

It works now.
Thanks for your support!
Regards,
Christophe
Post Reply