Push button relay toggle
I've just recieved my neuron L203 and began playing with the mervis software. In my house are only push button switches, so they don't keep the DI constantly on, instead, they give a short pulse (or long, is you keep pressing them).
How can I get this behavior to toggle a RO?
- push > relay goes on
- release > relay stays on
- push > relay goes off
- release > relay stays off
Even better... is there a way to detect the length of the push, or detect double clicks?
@Jan-Teunis Neurons have a direct switch function (see documentation) but it detects only rising/falling edges of the signal. Long presses has to be solved in mervis. So I suggest you to create your own function block, which will take care of it...
SorakCz last edited by tomas_hora
I am solving same issue. I have ST program. Its reacts only on rising edge. But it is slowly and it not work on every push though I have sleep ratio 5%.
PROGRAM tlacitko VAR_INPUT tlacitko:BOOL; END_VAR VAR_OUTPUT rele:BOOL; END_VAR if (tlacitko=1 AND rele=1) THEN rele:=0; ELSIF (tlacitko=1 and rele=0) THEN rele:=1; ELSE ; END_IF; END_PROGRAM
@SorakCz If you want just this functionality then use the Direct Switch. You do not have to program in ST anything and it reacts on every rising edge which mervis does not have to catch (you could try to detect the pushes via counters thought)
I tried to solve the problem by using "Event triggered tasks" maybe @tomas_hora could explain how it could be done this way.
With the following program, If I "short" push the button, the final out value goes 0 or previous analog value. If I "long" push the button the value increase or decrease.
So I have short and long push detection and a toggled output.
This is working pretty well with 50% ratio.
This is my On/Off switch (allways as a fonction block in fdb mode):
I have 3 buttons that I want to turn on / off the bulb. (push - lights up, push light off)
How best to solve.
thank you for the advice
@kolopes The asnwer is above. The best is to use the DirectSwitch function (set variables DS_enable and DS_toggle to True). The number of DI(button) must be the same as RO. You can enable this functionality for each pair of DI-Ro/Do. Make sure to set the NV_save variable of the group where this will be configured to True and False afterwards.
To be able to set the values, you have to be in debug mode!
Alternative approach is to write your own function block that might do much more...
Where can i find the "Direct Switch" function?
Are there some more library files i can download somewhere?
I am new to mervis and I'am no programmer.
The programs above seem complicated.
In the logo software there is a block especially for this purpose.
It als has an global off function.
That is the kind of thing I need.
@sgtgarcia Direct Switch is a feature of HW of Neuron, it's not a feature of Mervis (but it can be of course programmed for such behaviour). To enable DS, check Mervis variables that start with "DS_" there you will find the DS_enable, DS_toggle and DS_polarity functions.
Hello I would like to activate direct switch, but I can not find how. could you explain?
Hello, thank you a works, but is it possible to use a 'RO' output with a 'DI' direct switch and another DI or function
Right now, you can only link a DiX.Y and DO/ROX.Y - X and Y has to be the same with both DO/RO and DI.
Thank you for the answer, but for my home automation project, I wanted to
activate my lamps with pushbuttons ( this OK) and a button to disable all RO at the same time
how to do?
@msoenen Then check the "DirectSwitch_force" and its documentation which is part of Lib.UniPi
@tomas_hora Hello, this is the function I'm looking for, but I do not really understand how to do the program in input. would you have an example of a program with this function?
thank you in advance
@msoenen Just the picture in the help of Mervis.. There is actually not much to show.
Hello sorry, I am beginner on unipi.
when I do exactly like help, it does not work, it must miss a configuration
Thank you for your help