PRÁCTICAS ARDUINO 7a12 2324
PRÁCTICAS ARDUINO 7a12 2324
PRÁCTICAS ARDUINO 7a12 2324
Programa Arduino para que, utilizando el sensor de infrarrojos (IR Keyes), detecte un objeto. Cuando
se produzca la detección se activará un LED. En caso contrario el LED permanecerá apagado.
Sensor de Infrarrojos (IR)
Van montados emisor y receptor en la misma placa.
El emisor transmite una frecuencia de infrarrojo y cuando encuentra un objeto
la señal se refleja y es captada por el receptor.
Distancia de detección de 2 a 40 cm. La distancia se ajusta con el
potenciómetro.
Nota: incorpora un LED que actúe como testigo (se encienda) cuando se acerque un objeto.
Añade una comunicación del puerto serial, por ejemplo “Objeto cercano”, cuando lo detecta; y
“despejado”, cuando no haya objetos cercanos.
1
4ºABC Tecnología Robótica 3ª evaluación UD 3 Robótica con Arduino
2. Programa:
int LED=13;
int IR=2;
int valorIR;
}
void loop (){
valorIR = digitalRead(IR);
if (valorIR == LOW) {
digitalWrite (LED, HIGH);
Serial.println ("objeto cercano");
delay (1000);
}
else {
digitalWrite(LED, LOW);
Serial.println ("despejado");
delay (1000);
}
}
3. Ampliaciones:
• Ajusta el potenciómetro (con un destornillador) para que detecte el objeto a 5 cm.
4. Guarda la práctica con el nombre P6_DetectorIR.
2
4ºABC Tecnología Robótica 3ª evaluación UD 3 Robótica con Arduino
1. Conexiones
DHT11 → Arduino
+ → +5V
- → GND
Out → Digital pin (en el ejemplo el pin 2)
3
4ºABC Tecnología Robótica 3ª evaluación UD 3 Robótica con Arduino
2. Programa:
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHT11 test!");
dht.begin();
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("¡Error al leer el sensor DHT11!");
return;
}
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C ");
Serial.println("");
}
Ampliación: Añade dos leds (por ejemplo, rojo y amarillo) con sus resistencias de 220 a los pins 8 y 9
y el código necesario para conseguir que:
• Si la temperatura supera 20ºC se encienda el LED rojo.
• Si la humedad es inferior al 40% que encienda el LED amarillo.
Guarda la práctica con el nombre P14_TemHumAvisos.
4
4ºABC Tecnología Robótica 3ª evaluación UD 3 Robótica con Arduino
1. Conexiones
Como demostración, vamos a controlar un
motor DC a través de la salida B del módulo. El
pin ENB se conectará con el jumper a +5V (por lo que el
motor sólo girará a velocidad constante).
Esquema de conexión:
5
4ºABC Tecnología Robótica 3ª evaluación UD 3 Robótica con Arduino
2. Código en Arduino
El programa básicamente activa el motor en un sentido por 4 segundos, luego detiene el motor por 0.5
segundos, después activa el motor en sentido inverso por 4 segundos y por último detiene el motor por 5
segundos. Luego repite la acción indefinidamente.
int IN3 = 5; // Motor no gira
int IN4 = 4; digitalWrite (IN4, LOW);
void setup() delay(5000);
{ // Motor gira en sentido inverso
pinMode (IN4, OUTPUT); // Input4 conectada al pin 4 digitalWrite (IN3, HIGH);
pinMode (IN3, OUTPUT); // Input3 conectada al pin 5 delay(4000);
} // Motor no gira
void loop() digitalWrite (IN3, LOW);
{ delay(5000);
// Motor gira en un sentido }
digitalWrite (IN4, HIGH);
digitalWrite (IN3, LOW);
delay(4000);
3. Guarda la práctica con el nombre P11_MotorCD_VCte
Si queremos controlar la velocidad del motor, tenemos que hacer uso de PWM. Este PWM será aplicado a
los pines de activación de cada salida o pines ENA y ENB respectivamente. Por tanto, para variar la velocidad de
un motor hay que quitar su jumper.
1. Esquema de conexión
Se sigue con la misma alimentación (6.-12 voltios), el jumper regulador activo. Y, de la misma forma que
en la práctica anterior, Vlogico se puede usar como salida de 5 V para la placa Arduino
6
4ºABC Tecnología Robótica 3ª evaluación UD 3 Robótica con Arduino
2. Código en Arduino
El programa controla la velocidad de un motor DC aplicando PWM al pin ENB del módulo L298N.
int IN3 = 5; // Input3 conectada al pin 5
int IN4 = 4; // Input4 conectada al pin 4
int ENB = 3; // ENB conectada al pin 3 de Arduino
void setup()
{
pinMode (ENB, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
}
void loop()
{
//Preparamos la salida para que el motor gire en un sentido
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
// Aplicamos PWM al pin ENB, haciendo girar el motor, cada 2 seg aumenta la velocidad
analogWrite(ENB,55);
delay(2000);
analogWrite(ENB,105);
delay(2000);
analogWrite(ENB,255);
delay(2000);
// Apagamos el motor y esperamos 5 seg
analogWrite(ENB,0);
delay(5000);
}
3. Guarda la práctica con el nombre P12_MotorDC_Vvariable
7
4ºABC Tecnología Robótica 3ª evaluación UD 3 Robótica con Arduino
Vamos a hacer un programa de prueba, en el que utilizan las teclas R y T para encender y apagar un led
rojo, respectivamente. Y las teclas V y B para hacer lo mismo con un led verde.
Conexiones:
8
4ºABC Tecnología Robótica 3ª evaluación UD 3 Robótica con Arduino
1. Programa:
/*Programa que lee caracteres recibidos por el modulo bluetooth desde un smartphone
* y enciende o apaga dos leds independientemente
* V -> enciende led verde
* B -> apaga led verde
* R -> enciende led rojo
* T -v apaga led rojo
*/
#include <SoftwareSerial.h>
#define ledVerde 10
#define ledRojo 12
char dato=0; //variable para guardar el caracter que envie el movil
SoftwareSerial BT1(3,4); // RX, TX recordar que se cruzan (unir 3-TX)
void setup() {
pinMode (ledVerde, OUTPUT);
pinMode (ledRojo, OUTPUT);
BT1.begin(9600);
}
void loop() {
if (BT1.available()) // comprobamos si hay dato que leer del modulo
dato= BT1.read(); //si lo hay se lee y se guarda
if (dato=='V')
{
digitalWrite(ledVerde, HIGH);
}
else if (dato=='B')
{
digitalWrite(ledVerde, LOW);
}
else if (dato=='R')
{
digitalWrite(ledRojo, HIGH);
}
else if (dato=='T')
{
digitalWrite(ledRojo, LOW);
}
}