2018/02/12

Distancias con sensor de ultrasonidos HC-SR04

El sensor de ultrasonidos HC-SR04 se utiliza mucho en robótica por su facilidad de conexión a la placa. Solo tenemos que alimentarlo (VCC a 5v con el cable rojo y GND a tierra con el cable negro). Para controlarlo tiene otras dos patillas (Trigger y Echo) que conectamos a dos pines digitales, por ejemplo: Trigger al pin 4 y Echo al pin 2.

Funciona lanzando un pulso de sonido de alta frecuencia (Trigger) y escuchando el rebote de ese mismo eco (Echo). En función del tiempo que tarde el sonido en rebotar en un objeto y volver al sensor podemos determinar la distancia al objeto en cuestión. Según las especificaciones tiene un rango de medidas que va desde un mínimo de 2 centímetros hasta un máximo de 4 metros.


Este es el código que tenemos que cargar en nuestra placa:
const int trigger = 4;
const int echo = 3;

void setup() {
  Serial.begin(9600);
  pinMode(trigger, OUTPUT); 
  pinMode(echo, INPUT);
  digitalWrite(trigger, LOW);
}

void loop(){
  long t;
  long d;
  
  digitalWrite(trigger, LOW);
  delayMicroseconds(4);
  digitalWrite(trigger, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigger, LOW);
  
  t = pulseIn(echo, HIGH);
  d = t/59;

  Serial.print("Distancia: ");
  Serial.print(d);
  Serial.print("cm");
  Serial.println();
  delay(100);
}

Servomotor

Un servomotor (también llamado servo) es un dispositivo similar a un motor DC (de corriente continua) que tiene la capacidad de situarse y mantenerse en cualquier ángulo dentro de su rango de giro (normalmente entre 0 y 180 grados). Está compuesto por un pequeño motor DC, con un sistema de engranajes que le proporcionan una potente reductora, más un controlador electrónico. También existen servos de rotación continua, es decir que pueden comportarse como un motor DC normal con mucha reductora. Estas características, junto con la facilidad de conexión y programación, hacen de este dispositivo uno de los sistemas más usados en robótica para producir movimiento.

Para controlar un servo con Arduino solo tenemos que alimentarlo y conectar el cable amarillo a una salida digital con PWM. Si tenemos la placa conectada al ordenador por USB podemos alimentar el servo directamente desde la placa (cable rojo a 5v y cable negro a GND):


Si la placa Arduino no está conectada al ordenador tenemos que alimentar el servo con una pila externa (aparte de la alimentación que tenga la placa):


Este es el código que tenemos que cargar en nuestra placa:
#include <Servo.h> //Incluímos la librería Servo.h
Servo servoMotor; //Declaramos la variable servoMotor

void setup() {
  servoMotor.attach(5); //Conectamos el servo al pin 5
}

void loop() {
  servoMotor.write(0); //Desplazamos a la posición 0º
  delay(1000); //Esperamos 1 segundo
  servoMotor.write(180); // Desplazamos a la posición 180º
  delay(1000); // Esperamos 1 segundo
}

2018/01/24

LED RBG

Podemos entender un LED RGB CC (Common Cathode) como tres ledes -uno rojo, otro verde y otro azul- encapsulados como un solo led con cuatro patillas. Para conectarlo a la placa Arduino necesitamos, como siempre, interponer unas resistencias de 220 Ω y usaremos pines PWM (3, 5, 6, 9, 10 y 11). La patilla más larga es el cátodo común que irá conectada a GND.


Este es el código que tenemos que cargar en nuestra placa:
int r = 11;
int g = 10;
int b = 9;

void setup() {
  pinMode(r, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(b, OUTPUT);
}

void loop() {
  analogWrite(r, 255);
  delay(1000);
  analogWrite(r, 0);
  delay(1000);
  analogWrite(g, 255);
  delay(1000);
  analogWrite(g, 0);
  delay(1000);
  analogWrite(b, 255);
  delay(1000);
  analogWrite(b, 0);
  delay(1000);
  analogWrite(r, 255);
  analogWrite(g, 255);
  analogWrite(b, 255);
  delay(1000);
  analogWrite(r, 0);
  analogWrite(g, 0);
  analogWrite(b, 0);
  delay(1000);
}

2018/01/15

LDR: sensor de luminosidad y monitor serie

En esta práctica aprenderemos a leer la señal de entrada de un pin analógico conectado a una resistencia LDR mediante un divisor de tensión. La lectura que obtenemos en el pin número A0, la vamos a imprimir continuamente en el monitor serie.


Este es el código que tenemos que cargar en nuestra placa:
void setup(){
  Serial.begin(9600);
}

void loop(){
  Serial.print("Lectura de la resistencia LDR: ");
  Serial.println(analogRead(A0));
  delay(100);
}

Potenciómetro: lectura de un pin analógico

En esta práctica aprenderemos a leer la señal de entrada de un pin analógico conectado a un potenciómetro. En función de la lectura que obtengamos en el pin número A0, variaremos el tiempo de encendido y apagado del led conectado al pin número 13.


Este es el código que tenemos que cargar en nuestra placa:
void setup(){
  pinMode(13, OUTPUT);
}

void loop(){
  digitalWrite(13, HIGH);
  delay(analogRead(A0));
  digitalWrite(13, LOW);
  delay(analogRead(A0));
}