0% encontró este documento útil (0 votos)
233 vistas

Codigo Arduino PDF

Este documento contiene información sobre el uso de sensores de distancia infrarrojos con Arduino. Explica cómo conectar y programar el sensor GP2Y0E03 para medir distancias entre 4 y 50 cm mediante comunicación analógica o I2C. Proporciona ejemplos de código para leer los valores de distancia del sensor y mostrarlos por el puerto serie. Además, describe brevemente el funcionamiento y características de este tipo de sensores de distancia infrarrojos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
233 vistas

Codigo Arduino PDF

Este documento contiene información sobre el uso de sensores de distancia infrarrojos con Arduino. Explica cómo conectar y programar el sensor GP2Y0E03 para medir distancias entre 4 y 50 cm mediante comunicación analógica o I2C. Proporciona ejemplos de código para leer los valores de distancia del sensor y mostrarlos por el puerto serie. Además, describe brevemente el funcionamiento y características de este tipo de sensores de distancia infrarrojos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

MONTAJE

Para este tutorial no es necesario ningún montaje. Sin embargo, podemos


verificar el correcto funcionamiento de las salidas digitales simplemente
midiendo con un polímetro la tensión entre la salida digital y GND.

CÓDIGO

El código para encender es similar al que vimos en el tutorial Nuestro primer programa en
Arduino. En realidad es exactamente igual, cambiando el 13 por el pin de la salida que queramos
activar. Recordaremos que el pin 13 es un pin especial, que está conectado con el led integrado
en la placa.

Así el siguiente código, que es una modificación del archivo de ejemplo Blink, enciende
y apaga una salida digital.

const int pin = 2;


void setup() {
Serial.begin(9600); //iniciar puerto serie
pinMode(pin, OUTPUT); //definir pin como salida
}
void loop(){
digitalWrite(pin, HIGH); // poner el Pin en HIGH
delay(1000); // esperar un segundo
digitalWrite(pin, LOW); // poner el Pin en LOW
delay(1000); // esperar un segundo
}

El siguiente código, que vimos en la entrada del puerto serie de Arduino, recibe un
caracter a través del puerto serie para encender o apagar una señal digital desde el
ordenador.

A través del puerto serie enviamos un caracter. Si escribimos 0 la salida se apaga, y si


escribimos 1 se enciende.

const int pin = 2;


int option;

void setup(){
Serial.begin(9600);
pinMode(pin, OUTPUT);
}
void loop(){
//si existe información pendiente
if (Serial.available()>0){
//leeemos la opcion
char option = Serial.read();
if (option == '0' ) //si el valor es 0
{
digitalWrite(pin, LOW); //apagamos el pin
}
else if (option == '1' )
{
digitalWrite(pin, HIGH; //encendemos el pin
}
delay(200);
}
}

ENCENDIENDO UN LED
la tensión que soporta el LED es la diferencia entre la tensión aplicada y la tensión de polarización
directa del LED. Aplicando la ley de Ohm, con el valor de la intensidad nominal del LED

En este caso, elegiremos la resistencia normalizada inmediatamente superior al valor


calculado, para garantizar que la corriente es inferior a la nominal.

const int ledPIN = 9;


void setup() {
Serial.begin(9600); //iniciar puerto serie
pinMode(ledPIN , OUTPUT); //definir pin como salida
}

void loop(){
digitalWrite(ledPIN , HIGH); // poner el Pin en HIGH
delay(1000); // esperar un segundo
digitalWrite(ledPIN , LOW); // poner el Pin en LOW
delay(1000); // esperar un segundo
}
El siguiente código emplea las salidas digitales y la comunicación por puerto serie para hacer
parpadear el LED el número de veces que enviemos por el puerto serie, tal y como vimos en la
entrada comunicación por el puerto serie de Arduino.

const int ledPIN = 9;

int option;

void setup(){

Serial.begin(9600);

pinMode(ledPIN , OUTPUT);

void loop(){

//si existe información pendiente

if (Serial.available()>0){

//leeemos la opcion

char option = Serial.read();

//si la opcion esta entre '1' y '9'

if (option >= '1' && option <= '9')

//restamos el valor '0' para obtener el numero enviado

option -= '0';

for(int i=0;i<option;i++){

digitalWrite(ledPIN , HIGH);

delay(100);

digitalWrite(ledPIN , LOW);

delay(200);

}
}

Por último, el siguiente código emplea una salida PWM para hacer variar la intensidad del LED,
tal y como vimos en la entrada salidas analógicas en Arduino.

const int ledPIN = 9;

byte outputValue = 0;

void setup()

Serial.begin(9600); // Iniciar puerto serie

pinMode(ledPIN , OUTPUT);

void loop()

if (Serial.available()>0) // Si hay datos disponibles

if(outputValue >= '0' && outputValue <= '9')

outputValue = Serial.read(); // Leemos la opción

outputValue -= '0'; // Restamos '0' para convertir a un número

outputValue *= 25; // Multiplicamos x25 para pasar a una escala 0 a 250

analogWrite(ledPIN , outputValue);

}
}

MEDIR DISTANCIA CON ARDUINO Y EL SENSOR GP2Y0E03


El sensor Sharp GP2Y0E03 es un sensor de distancia infrarrojo que
incorpora la electrónica para el procesado de los datos y que podemos
conectarse con un procesador como Arduino.

El sensor GP2Y0E03 es similar a la familia de sensores Sharp GP2Y0A02


que vimos en esta entrada, pero dispone de un menor tamaño, mayor
precisión, e incorpora comunicación digital I2C, a la vez que mantiene la salida
analógica.

El rango de medición es de 4 a 50 cm, manteniendo un grado de precisión


elevado en todo el intervalo. La tensión de alimentación es de 2.7 a 5.5V y el
consumo de corriente de 26mA. El intervalo de refresco entre mediciones es
de unos 40ms.

Anuncio:

El funcionamiento y características son similares a los sensores Sharp. En


particular, recordamos que este tipo de sensores son poco sensibles al color y
reflectividad del objeto detectado, ni a la temperatura ambiente. El ángulo de
detección es estrecho, unos 5º de abanico en frente del sensor.

También comparten sus mayores limitaciones, como la influencia con la


luz ambiente, la posibilidad de interferencia al usar varios sensores, el ruido
en la medición y, en especial, la imposibilidad de determinar si un objeto esta
fuera del rango de medición (muy cerca o muy lejos),

El GP2Y0E03 es sencillo de conectar y usar. Sin embargo, hay que tener


en cuenta que incorpora un conector JST (Japanese Solderless Terminal) para
su conexión, por lo que tendremos que emplear un conector de este tipo o
soldar directamente los terminales en la placa
¿CÓMO FUNCIONA UN GP2Y0E03?
El GP2Y0E03 funciona de forma similar a los sensores Sharp de distancia
de mayor distancia. Un LED infrarrojo emite un pulso que ilumina un estrecho
haz en frente del sensor.

Un sensor CMOS (un array de sensores infrarrojos) detecta el reflejo del


haz en el objeto ubicado frente al mismo, y la electrónica del sensor calcula la
distancia al objeto en función del punto del sensor que ha detectado el haz.

El sensor GP2Y0E03 forma parte de la familia que incluye los sensores


GP2Y0E02A y GP2Y0E02B. No obstante, es el único que permite tensiones de
alimentación de 5V.

ESQUEMA DE MONTAJE

El GP2Y0E03 dispone de salida analógica y por I2C, pudiendo usar


cualquiera de ellas. El esquema de patillaje del GP2Y0E03 es el siguiente.

En el caso de usar conexión analógica, no es necesario que empleéis el pin SCA y SCL.
En caso de emplear conexión por I2C podemos dejar sin conectar sin conectar el pin
Vout.
EJEMPLOS DE CÓDIGO
La lectura analógica del sensor es similar al resto de sensores infrarrojos
de distancia que hemos visto. Un ejemplo de código es el siguiente.

La lectura analógica del sensor es similar al resto de sensores infrarrojos de


distancia que hemos visto. Un ejemplo de código es el siguiente.

const int sensorPin = A0;


void setup()
{
Serial.begin(9600);
pinMode(sensorPin, INPUT);
}

void loop()
{
auto raw = analogRead(sensorPin);
Serial.println(raw);

delay(100);
}

Y aquí tenemos un ejemplo de código por comunicación I2C.


#include <Wire.h>

// 7 highest bits
#define ADDRESS (0x80 >> 1)

#define SHIFT_ADDR 0x35


#define DISTANCE_ADDR 0x5E
#define RIGHT_EDGE_ADDR 0xF8 // C
#define LEFT_EDGE_ADDR 0xF9 // A
#define PEAK_EDGE_ADDR 0xFA // B

uint8_t distance_raw[2] = { 0 };
uint8_t shift = 0;
uint8_t distance_cm = 0;
char buf[100];
void setup()
{
Wire.begin();
Serial.begin(9600);

delay(2000);

Serial.println("Initializing");

Wire.beginTransmission(ADDRESS);
Wire.write(byte(SHIFT_ADDR));
Wire.endTransmission();

Wire.requestFrom(ADDRESS, 1);
if (1 <= Wire.available())
{
shift = Wire.read();
}

Serial.print("Read shift bit: ");


Serial.println(shift, HEX);
}

void loop()
{
// Read basic measurement
Wire.beginTransmission(ADDRESS);
Wire.write(byte(DISTANCE_ADDR));
Wire.endTransmission();

Wire.requestFrom(ADDRESS, 2);

if (2 <= Wire.available())
{
distance_raw[0] = Wire.read();
distance_raw[1] = Wire.read();

// Print distance in cm
distance_cm = (distance_raw[0] * 16 + distance_raw[1]) / 16 / (int)pow(2, shift);
sprintf(buf, "Distance %u cm", distance_cm);
Serial.println(buf);
}
else
{
Serial.println("Read error");
}
delay(1000);
}

También podría gustarte