Un robot está constituido por cuatro componentes principales: Motores para el movimiento, Mecánica para mantener las piezas unidas, sensores para que reaccionen al entorno y un código para controlarlas y crear la funcionalidad deseada.
Los sensores juegan un papel importante cuando se trata de un robot autónomo. Veremos aquí cómo usarlos.
Presentación
El propósito de un sensor es medir un valor físico (velocidad, ángulo, temperatura, etc.). Existen numerosos sensores de diferentes tipos pasivos y activos (requieren alimentación). En este ejemplo, usamos un fotoresistor, pero se puede aplicar a otro tipo de sensor.
Ejamplo de sensores :
Passivo:
- photoresistor
- tilt
- push button
Activo:
- infrared distance sensor
- ultrasonic distance sensor
Cableado
Sensores tiene un cableado diferente dependiendo de la cantidad de pines que utilizan. Por lo general, un sensor tiene 3 pines a tierra, suministro de voltaje 5V y la señal. Para el sensor pasivo, se crea una tercera salida para leer el voltaje en sus extremos.
Codigo basico
Dependiendo de su tipo, el sensor puede devolver dos informaciones: un estado (presencia o no) o un valor de voltaje continuo.
Para leer un estado, la función a utilizar es digitalRead(). Devuelve un nivel ALTO(HIGH) o BAJO(LOW) que representa el voltaje aplicado en el pin digital (0, 1, 2, etc.).
/*Read digital state*/ // Constants #define DELAY 500 // Delay between two measurements in ms // Parameters const int sensorPin = 2; // Pin connected to sensor //Variables int sensorState; // state from the sensor void setup(void) { Serial.begin(9600); pinMode(sensorPin,INPUT); } void loop(void) { sensorState = digitalRead(sensorPin); if (sensorState == HIGH) { Serial.print("Sensor state is HIGH "); } else { Serial.print("Sensor state is LOW "); } delay(DELAY); }
Para leer un valor continuo, la función que usamos es analogRead() . Devuelve un valor entre 0 y 1023 que representa el voltaje aplicado en el pin analógico de Arduino (A0, A1, A2, etc.).
/*Read analog signal*/ // Constants #define DELAY 500 // Delay between two measurements in ms // Parameters const int sensorPin = A0; // Pin connected to sensor //Variables int sensorVal; // Analog value from the sensor void setup(void) { Serial.begin(9600); } void loop(void) { sensorVal = analogRead(sensorPin); Serial.print("Sensor reading = "); Serial.println(sensorVal); // the analog reading delay(DELAY); }
Aplicaciones
- Measure temperature and humidity with sensor DHT11
- Measure temperature with sensor LM35
- Distance measurement with sensor HC-SR04
- Luminosity measurement with a photoresistor
Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código