domingo, 18 de septiembre de 2016

Interruptor capacitativo

Cuando hablo de un interruptor capactitativo me refiero a la posibilidad de utilizar como interruptor cualquier superficie metatalica. En mi caso lo he probado con la pata de la mesa y tambien con una lamina de aluminio pegada debajo del tablero de la mesa.
Lo único que hace falta es un arduino, en mi caso he usado un arduino mini , una resistencia de un valor elevado (marron, negro, azul =10 Megaohmios) y un circuito de un relé controlado desde el arduino.
Este es el esquema para conecta a la parte metalica:




En el esquema no he incluido el control de Relé que tengo conectado a D8. Podeis encontrar multitud de tutoriales para construir uno o bien comprar uno ya montado. Yo tengo hecho uno por mi, pero en este caso he preferido usar el "comercial". 

Solo queda subir el programa que está hecho a partir de la librería CapacitiveSensor. Alimentar la placa y a disfrutar encendiendo y apagando "cositas" "mágicamente"...

Ahora estoy viendo que tengo un problema para pegar el programa, sin que las linea se partan. No obstante lo dejo aquí pegado, seguro que si alguien quiere usarlo sabrá bien como arreglarlo. Si consigo averiguar como inserta la gente este tipo de programas en un blog lo volveré a pegar bien. Si alguien lee esta entrada de blog y sabe como hacerlo le agradeceré me deje un comentario explicativo.

#include <CapacitiveSensor.h>

/* CapitiveSense Library
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10M between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50K - 50M. Larger resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this pin
 */


CapacitiveSensor   cs_2_4 = CapacitiveSensor(2,4);        // 10M resistencia colocada entre los pines 4 y 2 el pin 4 esta conectado al sensor

long t1=0;//tiempo del ultimo estado en el que cambio el estado de la luz , de apagada a encendida.
long t2=0;//tiempo actual
long interval =1000;//intervalo que dejamos entre un cambio de estado, para evitar lecturas erronea, apagados/encendidos incontrolados.
int estadoluz= LOW;// variable para encender y apagar la luz. Iniciamos con valor bajo, esto es, apagada.

void setup()                   
{

   pinMode(8,OUTPUT);//pin donde conectamos la entrada del rele.
  
  
 Serial.begin(9600);
  
}
      
void loop()                   
{
   
    long t2 = millis();
    long total1 =  cs_2_4.capacitiveSensor(30);
     Serial.print(total1);                  // print sensor output 1
    Serial.print("\t");
   
   
   
    if (total1 >1100 && ((t2-t1)> interval)){   //comparamos la lectura del sensor, para ver que numeros poner es recomendable ejecutar antes el programa de demo que tiene la libreria
      t1=t2;                                    //guardo el tiempo del cambio de estado para lo proxima vez
      if (estadoluz== LOW){                     // si estaba apagada pasara e estar encendida, en caso contrario pasara a estar apagada
        estadoluz=HIGH;
      }
        else{
          estadoluz=LOW;
        }
      digitalWrite(8,estadoluz);                // en funcion del condicional anterior se encendera o se apagara la luz
    }
}





Por cierto he probado cortando y pegando este texto y se pega todo bién ;)

No hay comentarios:

Publicar un comentario