“Object circuit” y“array circuits” remplaza a ElectricalCircuitValue de versiones anteriores. Este es un sistema mucho mas completo que su predecesor.
Comenzamos con lo básico, en nuestro programa arduino tendremos tener un objeto circuit por cada circuito físico instalado, este puede ser una persiana, un circuito de alumbrado, valvula… en definitiva cualquier tipo de circuito. Cuando nosotros interactuamos con el objeto circuit en nuestro programa podemos leer la información de este y modifica diversos valores y estados.
Todos los objeto circuits están almacenados dentro de un array (Array circuits ), si no conoce que es un array o los tipos básicos para programar con arduino este documento es lectura obligatoria.
http://playground.arduino.cc/ArduinoNotebookTraduccion/Datatypes
Array circuits guarda todos los circuitos fisicos de la instalacion, veamos algun ejemplos practico, imagina que tenemos dos circuitos, riego basico (on off) y iluminación estándar , en esta configuración nuestro array circuits tendra 2 circuitos digitales (on off).
Para el primer circuito del array, riego usaremos este código.
circuits[0].Value=1;
Como puede ver tiene que indicar el indice del array para apuntar al circuito correcto, para activar el segundo circuito mire este codigo.
circuits[1].Value=1;
Básicamente puede decir que este array es una colección de objetos (el cual puede ser de diferentes tipos de circuitos), cuando usted quiere actuar sobre un circuito tiene que apuntar correctamente al indice del array, el orden del los circuitos en el array es el mismo que se presenta en las diferentes aplicaciones.
El objeto Circuit object:
Este objeto tiene toda la información referente a un circuito en concreto, esta es la estructura, y acontinuacion mostraremos sus propiedades mas importantes.
struct Circuit {byte Type;boolean Out1_Value;boolean Out2_Value;byte Device_Number;byte Value;byte CopyRef; byte OldValue;};
Value: esta es la propiedad mas importante del objeto circuito, es de lectura y escritura, muestra o modifica el estado del circuito, por ejemplo en circuitos digitales (on off) esta propiedad tendrá dos valores, 1 encendido y 0 apagado, vamos con algunos ejemplos (recuerde cambiar c por su numero de circuito)
En un circuito de persiana, el valor de esta propiedad (Value) corresponde con el grado de apertura en %, si queremos situar la persiana en su posición central usamos el siguiente código.
circuits[c].Value=50;
Para activar un circuito digital.
circuits[c].Value=1;
Para apagar un circuito digital.
circuits[c].Value=0;
Iniciar un riego temporizado durante 12 minutos.
circuits[c].Value=12;
Type: Nos informa del tipo de circuito, En la actualidad disponemos de los siguiente tipos, teniendo intención de facilitar mas en el futuro.
Ado_Digital: (digital lighting). Circuitos de iluminación digitales ON / OFF.
Ado_3Etapas: (lighting 3 steps). Control de iluminacion en tres etatpas, 33%, 66%, 100%
RGB: (RGB). Control de iluminacion led RGB.
Dimmer: (Dimmer). Control de iluminacion con valor 0 100%.
Enchufe: (plug). Enchufe estandar..
Riego: (irrigation). zona de riego digital, on off.
Riego_Temporizado: (timed irrigation). En este caso, el valor de la propiedad Value indica el tiempo en minutos de funcionamiento.
Persiana: (Shutter) cirucito de control de persiana.
Toldo: (awning) circuito control de toldo.
ConsignaTemp : Consigna de termostato de 0º a 220º
TempNegative : Consigna de termostato de 0º a -220º para cámaras de congelados.
HomeTemperature : Termostato domestico.
Frio: (cold) Zona de control de frio (asociada a una sonda de temperatura)
Calor: (hot) zona control termostato aire acondicionado.
Radiante: (heating floor) igual que zona de calor.
Puerta: (door) circuito para control de puertas automáticas.
Valvula: (valve) control fluids.
Ventilador x1: (fan x1). Ventilador de una velocidad.
Ventilador x1: (fan x2). Ventilador de dos velocidades.
Ventilador x3: (fan x3). Ventilador de tres velocidades.
Piloto: (pilot) circuito con icono generico, su icono corresponde a un piloto on /off.
Temporizador: (Timer). Circuito temporizado en minutos.
SetPoint_100: Circuito de consinga de 0 a 100.
SetPoint_200: Circuito de consinga de 0 a 200.
SetPoint_2000: Circuito de consinga de 0 a 2.000.
SetPoint_20000 : Circuito de consinga de 0 a 20.0000.
Vamos con un ejemplo practico, imagina que quieres subir todas las persianas de tu instalación:
for (int c=0;c<Number_Circuit;c++){//Con el bucle recorremos todo el array // The loop roams all the array. // The property value of shutters it's the degree of openness thereof. if (circuits[c].Type==Persiana){circuits[c].Value=100;} }
Out1_Value, valor de salida digital 1 del circuito, esta suele ser enviada a un rele para controlar la carga, esta propiedad es generada automáticamente por el sistema, pero puede ser modificada por le usuario dentro de la funcion OutControl.
Si quisiera ver le valor de las salidas a rele de sus circuitos podría usar el siguiente código.
if (circuits[0].Out1_Value==false){ //This part of the condition indicates it is OFF } else{ // This part of the condition indicates it is ON }
Out2_Value, valor de la segunda salida a rele, la mayoría de circuitos solo manejar una salida a relé, pero otros como persianas o Ado_3Etapas” necesitan al menos dos salidas, su funcionamiento es igual a Out1_Value.
OldValue, solo es utilizado por el sistema en los circuitos con salida 433mhz y persianas, para todo lo demás puede ser modificada por el usuario para generar su comportamiento personalizado.
Device_Number, es el número de dispositivo, este es una propiedad de solo lectura, por ejemplo, si tenemos tres persianas en nuestra instalación, el primero tendría 0 como valor de esta propiedad, el segundo 1 y la tercera 2, es decir identifica el numero de persiana, el numero de riego….