Tienes que acceder para crear publicaciones y debates.

Circuito ADO_Digital en tarjeta extensión I2C

Hola,

Estoy intentando cofigurar dos persianas y dos circuitos de iluminación en una tarjeta de extensión y la persiana funciona perfectamente, pero el circuito de iluminación no, si configuro la entrada y la salida en el configurador la luz se enciende al mantener pulsado el pulsador.

Si no configuro ninguna entrada ni salida en el configurador y lo añado manualmente en el código la luz no se enciende, en el monitor serial puedo ver que la entrada se activa pero no se enciende la luz, este es el código que he utilizado y que en el antiguo configurador si que me funcionaba:

en void SwitchStateChange:

if (NumberInput==3407){ // sala tv
if (value==HIGH){
circuits[1].Value=!circuits[1].Value;}
}
en void OutControl() :

SetI2CRelay (47, circuits[1].Value);

 

Cómo puedo hacer funcionar el circuito de iluminación con un pulsador en el nuevo configurador? Gracias.

Si la imagen que pones es de esa configuración y lo que quieres en utilizar un pulsador, cambialo por botón en lugar de swich y prueba.

Hola muy buenas sinosuke, como comentas al dia de hoy no tenemos entrada pulsador en extensiones del configurador, es cuestión de tiempo que se dispongan, lo tengo todo pensado.

Pero puedes usar ese codigo que tienes a mano sin problemas... lo único que ha cambiado es el direccionamiento... ahora es mas sencillo e intuitivo.

Sobre tu código de entradas.

if (NumberInput==3407){ // sala tv
if (value==HIGH){
circuits[1].Value=!circuits[1].Value;}
}

Esa direcion ya no existe, creo que tu direccion es tarjeta cuatro entrada 7.

Si no es la tarjeta cuatro (teniendo en cuenta que empezamos por la uno es el numero de tarjeta *10 + numero de entrada.

Es decir.

Entrada 0 , primera tarejta de la mkr

Entrada 10, entrada 0 primera tarjeta de extension

Entrada 20, entrada 0 segunda tarjeta de extension.

Y asi sucesivamente, en cualquier caso ,, el monitor serial debe informar de el numero de entrada.

Para la tarjeta 4 entrada siete ahora se direcciona simplemente por entrada 47, es decir, puedes usar este código.

if ((value==HIGH) && (NumberInput==47)){circuits[1].Value=!circuits[1].Value;}//Ojo con el numero de circuito

La salida yo no metería codigo a mano... solo pondría la salida asociada al circuito y ya esta.

 

Estado = Overload.

Hola Roberto,

Muchas gracias por la explicación, efectivamente era problema del direccionamiento, lo he probado cómo me indicas y funciona perfecto.

Lo de no meter código a mano en la salida no te he entendido bien, en el editor de código, en void OutControl()  tengo que escribir el comando SetI2CRelay, de lo contrario no funciona (sólo lo he puesto para las salidas de circuito de iluminación, para las persianas no).

Lo tengo así:

void OutControl(){

SetI2CRelay (46, circuits[3].Value);

SetI2CRelay (47, circuits[1].Value);

 

Un saludo.

Hola sinoshuke.

Estoy haciendo pruebas con tu configuracion y no soy capaz de repicar lo que me comentas.

SetI2CRelay(46,circuits[3].Out1_Value);//Out 1
SetI2CRelay(47,circuits[1].Out1_Value);//Out 1

 

Esta es la configuración automatica de las salidas... asociando desde el configurador... se ve bien.

Como te aparece a ti el codigo automatico de las salidas ?

Estado = Overload.

Hola Roberto,

Adjunto te envío una configuración de prueba, en el ejemplo los circuitos 0, 1 y 2 funcionan correctamente y el circuito 3 no enciende la luz.

Un saludo.

Archivos subidos:

Hola sinoshuke

En el archivo que me pasas no tienes asociada ni entrada ni salida al circuito  numero 3.

 

Estado = Overload.

Hola Roberto,

Siento el retraso en contestar, no te había entendido bien y yo configuraba las salidas manualmente en la parte de edición de código, ahora he configurado la salida en el configurador directamente y funciona bien, gracias por la ayuda.

Un saludo.

 

Ok... me alegro que lo tengas, siento no haberme explicado mejor.