Cómputo Integrado Laboratorio |
![]() |
Un sensor de flexibilidad o flex sensor de 4.5 pulgadas, funciona debido a que cuando el sensor es flexionado, la resistencia del sensor incrementa. Para nuestro Arduino la salida del sensor entra en uno de los pines analógicos que normalmente reciben valores de entre 0 y 1023, pero para nuestro sensor lo normal es estar recibiendo datos entre 130 y 275 aproximadamente.
Material
- 10 leds de 5mm, de cualquier color
- 9 resistencias de 330 ohms
- 1 resistencia de 10k ohms
- 1 flex sensor
- Arduino Uno y cable para conexión USB
- Cable para conexiones
Circuito
EL siguiente circuito difiere un poco del mostrado, pero fue del cual me base para crear el mio. La diferencia es que este esta de alguna forma separado en dos protoboards, pero el mio esta todo en uno solo.
El sensor como se puede apreciar esta en una de las entradas analógicas de nuestra placa Arduino.
Y esta es la imagen de como fue mi circuito para el uso del sensor de flexibilidad.
Código
El código es sencillo de entender sin tanta explicación, para los que ya están familiarizados con las funciones típicas de lectura y escritura para encender los leds y como se dice que cierto pin es de salida, etcétera.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Programa para recibir datos del sensor de flexibilidad | |
y mostrar el grado de flexion con 10 leds. | |
*/ | |
// Pin donde se encuentra el sensor en la entrada analoga | |
int flexPin = 0; | |
void setup() { | |
// Decimos los pines de salida para los 10 leds | |
for (int i = 4; i <= 13; i++) { | |
pinMode(i, OUTPUT); | |
} | |
} | |
// Funcion para prender el nivel con los leds | |
void blink(int ledActive, int onTime, int offTime) { | |
// Se enciende el led y dura solo una fraccion de segundo | |
digitalWrite(ledActive, HIGH); | |
delay(onTime); | |
// Se vuelve a apagar el led | |
digitalWrite(ledActive, LOW); | |
delay(offTime); | |
} | |
void loop() { | |
// Se apagan todas las salidas de los leds | |
for (int i = 4; i <= 13; i++) { | |
digitalWrite(i, LOW); | |
} | |
// Cambiamos la entrada del sensor por un numero entre 4 y 13 | |
int lightLevel = map(analogRead(flexPin), 130, 275, 4, 13); | |
// Nos aseguramos que tengamos un valor entre 4 y 13 | |
int ledOn = constrain(lightLevel, 4, 13); | |
// Mandamos cual led se enciende a la funcion | |
blink(ledOn, 10, 1); | |
} |
Vídeo
Y que mejor que un vídeo para mostrar la funcionalidad y como esta flexionándose el sensor, y ver los destellos de los leds según el nivel de flexibilidad.
Otra cosa que hay que mencionar es que el sensor al flexionarse en sentido contrario da números negativos, pero yo coloque una condición en el programa de cuando este por debajo de cero se quede en cero.
Referencias
Flex sensor
7 pts lab integrados
ResponderEliminarHola felicitaciones por tu publicación , estoy interesado en un proyecto similar donde compraste lo sensores flex?
ResponderEliminarGracias =)
EliminarHay varias tiendas donde deberían de vender ese tipo de sensores, el sensor flex yo lo compre en "5Hz electrónica" (http://www.5hz-electronica.com/), la tienda se encuentra en Monterrey, NL, México, por si vives por aquí en el área metropolitana, pero como no se en que ciudad resides, no estoy seguro de que te sirva esta información.
Suerte con tu proyecto.