Utilizar un botón para controlar una luz no parece demasiado difícil. En esta sección vamos a utilizar un sensor táctil y un relé para controlar un LED. ¡Vamos a hacerlo!
Componentes necesarios
- 1× Sensor táctil capacitivo
- 1× Modulo relé
- 1× Shield expansión para entradas o salidas.
- 1× Kit Intel® Edison con tarjeta Arduino Breakout.
- LED (u otro dispositivo de salida) y su correspondiente fuente de alimentación.
Diagrama de conexión:
Sensor táctil capacitivo → Pin Digital 2
Modulo relé → Pin Digital 12
Observe que el relé puede ser considerado como un interruptor controlado eléctricamente. Usted puede incluso utilizarlo para controlar los aparatos eléctricos de alto voltaje y alta corriente en su hogar. Por razones de seguridad, le recomendamos NO maniobrar en los cables de alta tensión si esta es su primera vez.
¿Cómo se utiliza un relé?
Comencemos hablando del relé. Tú puedes usar un pin digital para controlar un switch como es el caso de un relé.
El modulo relè, posee cuatro conexiones de salida que son el pin COM (común) NO(Normalmente abierto), NC (Normalmente cerrado), N/A(No utilizado)

COM = Común, NC y NO siempre conectados a este pin, esta es la parte que se mueve en el switch.
NC = Normalmente cerrado, COM es conectado a este pin cuando el pin digita es LOW.
NO = Normalmente abierto, COM es conectado a este pin cuando el pin digita es HIGH.
Código de programación Arduino:
inttouchPin = 2; //Pin de entrada de sensor
intrelayPin = 12; //Pin conectado a rele
intrelayState = HIGH; //Variable de rele en estado HIGH
inttouchState; // Variable de almacenamiento de datos de sensor
intlastTouchState = LOW; // Variable que almacena el ultimo estado del sensor tactil
longlastDebounceTime = 0;
longdebounceDelay = 50; // debounce time
voidsetup() {
pinMode(touchPin, INPUT); //Configuración de touchPin como entrada digital.
pinMode(relayPin, OUTPUT); //Configuración de relayPin como salida digital.
digitalWrite(relayPin, relayState); //Se escribe estado HIGH inicial en relayPin
}
voidloop() {
intreading = digitalRead(touchPin); //Lee el estado del sensor táctil y lo guarda en una variable.
// Si el estado del sensor táctil cambia, guarda el tiempo en variable lastDebounceTime.
if(reading != lastTouchState) {
lastDebounceTime = millis();
}
// Esperar 50ms para confirmar si se crea cambio de estado de sensor
// Si el nuevo estado del sensor táctil es HIGH, se cambia el estado del rele.
if((millis() – lastDebounceTime) > debounceDelay) {
if(reading != touchState) {
touchState = reading;
if(touchState == HIGH) {
relayState = !relayState;
}
}
}
digitalWrite(relayPin, relayState);
// Graba el ultimo estado del sensor táctil.
lastTouchState = reading;
}
Después de cargar el sketch de Arduino podrás tocar el sensor táctil para controlar el LED.
Principio (Entrada digital – Salida digital):
Aparentemente, el sensor táctil es el dispositivo de entrada, mientras que el modulo relè es el de salida. Mientras tanto, el relé puede controlar otros dispositivos.
Revisión del código de programación Arduino:
Se configura el sensor táctil como un entrada y el modulo rele como una salida.
pinMode(touchPin, INPUT);
pinMode(relayPin, OUTPUT);
Usa digitalWrite() para ller el estado del sensor táctil:
intreading = digitalRead(touchPin);
Cuando se pulse el sensor táctil, puede rebotar la señal de entrada varias veces antes de hacer contacto constante en poco tiempo al igual que el de la ilustración:
Sin supresión de rebotes, al pulsar el sensor táctil puede ser que Arduino reconozca que se ha presionado muchas veces seguidas el sensor. Para neutralizar estas señales rebote, se utiliza la función millis (), la cual sirve para realizar un seguimiento de las veces que se pulsa el sensor.
Si el estado del sensor táctil cambia, se graba el tiempo a través de la función millis():
if (reading != lastTouchState) {
lastDebounceTime = millis();
}
La función millis() retorna el numero de milisegundos desde que la tarjeta Arduino comenzó a correr el programa.
Se pide una espera de 50ms para confirmar el cambio de estado desde el sensor tactil. Si esto realmente sucede, se cambia el estado del relé.
if ((millis() – lastDebounceTime) > debounceDelay) {
if (reading != touchState) {
touchState = reading;
if (touchState == HIGH) {
relayState = !relayState;
}
}
}