Guía de Programación con Arduino para STI2D
Guía de Programación con Arduino para STI2D
TP Arduino
Tabla de contenidos
1. Instalación y configuración de la tarjeta Arduino..............................................................................................................2
1.1. Tarjeta Arduino...........................................................................................................................................................2
1.2. El escudo de expansión E/S.........................................................................................................................................2
1.3. Estructura de un programa.......................................................................................................................................3
1.4. Interface de développement.....................................................................................................................................3
2. Utilización de la salida digital.....................................................................................................................................4
2.1. Parpadeo de un LED..........................................................................................................................................4
2.2. Parpadeo de 2 LED...........................................................................................................................................5
3. Utilización de la entrada digital......................................................................................................................................6
3.1. Detección de un Botón de Presión...............................................................................................................................6
4. Utilización de la entrada analógica.....................................................................................................................................7
4.1. Medida de la iluminancia...........................................................................................................................................7
4.2. Telemetría................................................................................................................................................................9
4.2.1. Sensor SRF05...........................................................................................................................................................9
4.2.2. Sensor Ultrasonido Ranger
4.3. Simulación tienda eléctrica.....................................................................................................................................11
5. Utilización de la salida MLI.............................................................................................................................................14
5.1. Mando de un motor de corriente continua............................................................................................................14
5.2. Control de un motor mediante un potenciómetro..................................................................................16
5.3. Programación de un motor...................................................................................................................................17
5.4. Servo motor..........................................................................................................................................................19
6. Pantalla LCD................................................................................................................................................................21
7. Módulos..........................................................................................................................................................................23
escudos...........................................................................................................................................................................23
8. Referencias......................................................................................................................................................................24
5-TP_arduino.odt 1
Clase de primero STI2D
• Memoria Flash de 32 ko
• Memoria RAM 2 ko
• Memoria EEPROM 1 kilo
• Frecuencia de reloj 16 MHz
• Corriente máx. E/S 40 mA
Para saber más, consulte la página:[Link]
• El comentario de descripción del programa, llamado sketch, comienza con /* y termina con */.
• Luego se coloca la definición de las constantes y variables con las instrucciones const e int.
• Luego viene la configuración de las entradas / salidas con la instrucción void setup(). La secuencia de instrucciones es
précédé de { et se termine par }.
• Se define por la instrucción void loop() la programación de las interacciones y comportamientos. La secuela
d’instructions está precedido de { y terminado por }.
5-TP_arduino.odt 3
Clase de primera STI2D
3. Conectar la tarjeta a un puerto USB. Verificar que el puerto COM esté bien configurado. Herramientas > Puerto serie > COM
4. Verificar que el puerto COM X es reconocido por Windows: Panel de Control > Sistema y seguridad >
Administrador de dispositivos > Puertos: Arduino Uno (COM X).
con escudo
extensión I/O
2. Modificar el programa de tal manera que la salida a la que conectaremos el LED sea la salida 12.
3. Modificar las instrucciones para que el período sea de 1 s y la duración de encendido del LED sea de 100 ms.
4. Inicie la ejecución del programa haciendo clic en el botón debajo de Edición:
/*
parpadeo de diodo
*/
5-TP_arduino.odt 4
Clase de primer año STI2D
/*
parpadeo de 2 diodos alternos
*/
// a completar
// ...
delay(1000); // duración 1s
}
5-TP_arduino.odt 5
Clase de primer año STI2D
2. Modificar este programa para que la tarjeta Arduino controle el LED al presionar el botón.
/*
5-TP_arduino.odt 6
Classe de première STI2D
// la función de configuración se ejecuta una vez cuando presionas reiniciar o enciendes la placa
vacío configuración()
{
pinMode(led, ...); se define el LED como salida
pinMode(boton, ...); definimos el botón de entrada
}
5-TP_arduino.odt 7
Clase de primer STI2D
3. Modificar el programa a continuación para ajustar el umbral de detección que encenderá el LED.
/*
detección de luminosidad
*/
5-TP_arduino.odt 8
Clase de primer año STI2D
void bucle()
{
int valor = analogRead(...); // sensor lecture
[Link](valor); // mostrar valor en el terminal serie
retraso(10); // stabilisation 10 ms
}
4.2. Telemetría
Se quiere medir una distancia por telemetría ultrasónica.
2. Modificar el programa para que el LED se encienda cuando la distancia a un obstáculo sea inferior a 20 cm.
/*
Telemetría por ultrasonido
*/
/* Routine d'initialisation */
vacío configuración()
{
[Link](9600); // Inicialización del puerto COM
5-TP_arduino.odt 9
Clase de primer STI2D
digitalWrite(emetteur, BAJO);
}
vacío bucle()
{
// envío de salve (impulsión emisora)
digitalWrite(emetteur, ALTO);
retrasarMicrosegundos(10);
digitalWrite(emetteur, BAJO);
retraso(50);
}
2. Modificar el programa para que el LED se encienda cuando la distancia a un obstáculo sea inferior a 20 cm.
/*
Télémétrie por ultrasonido con biblioteca ultrasonic
*/
/* Rutina de inicialización */
vacío configurar()
{
[Link](9600); // Inicialización del puerto COM
5-TP_arduino.odt 10
Clase de primera STI2D
vacío bucle()
{
distancia_larga = [Link]ímetros();
retraso(50);
}
2. Modificar el programa de la medida de la iluminancia para que el LED se apague cuando el BP está presionado.
Utilizando la tabla de abajo.
5-TP_arduino.odt 11
Clase de primera STI2D
retraso(10); // estabilización 10 ms
}
3. En caso de viento demasiado violento, el motor no debe ser activado, incluso si la luz es demasiado intensa.
Modificar la tabla para tener en cuenta el viento medido con un anemómetro que será simulado con
de un potenciómetro.
4. Realiza el esquema de montaje a continuación:
Broche 4: módulo BP
Broche 9 : módulo LED
Broche A0 : módulo
sensor de luminosidad
Broche A3 : potenciómetro
5. Modificar el programa anterior para que el LED se apague cuando se gira el potenciómetro más de uno
media vuelta.
/*
simulación tienda eléctrica - v2
*/
5-TP_arduino.odt 12
Clase de primera STI2D
retrasar(10); // estabilización 10 ms
}
5-TP_arduino.odt 13
Clase de primer año STI2D
2. Modificar el programa de abajo para imponer una velocidad al motor (de 0 a 255).
/*
MLI por interfaz serie
*/
constante int MOTEUR = 6;// Pin digital 6 para comando del motor
/* Rutina de inicialización */
vacío configurar()
{
[Link](...); // Inicialización del puerto COM
5-TP_arduino.odt 14
Clase de primer año STI2D
/* Función principal */
vacío bucle()
{
si ( [Link]() > 0 ) {
char c = [Link]();
si ( c == '\r' ) {
buffer[i] = 0;
int velocidad = atoi(buffer);
si ( velocidad >= 0 && velocidad <= 255 ) {
analogWrite(...);
[Link]("velocidad : ");
[Link](...);
}
de lo contrario
[Link]("valor incorrecto");
i = 0;
}
sino si ( (int) c != -1 )
buffer[i++] = c;
}
}
Pour piloter le moteur en vitesse, respecter les consignes suivantes :
1. Lanzar el terminal
2. Cocher Défilement automatique
3. Seleccionar carácter de Retorno
4. Seleccionar la velocidad correcta
5. Ingrese la velocidad (0 a 255) en el área de texto
5-TP_arduino.odt 15
Clase de primer año STI2D
#incluir <SimpleTimer.h>[Link]
/* Routine d'initialisation */
vacío configurar()
{
[Link](...); // Inicialización del puerto COM
/* Función principal */
vacío bucle()
{
[Link]();
5-TP_arduino.odt 16
Clase de primer STI2D
retrasar(10);
}
/* Rutina de inicialización */
5-TP_arduino.odt 17
Clase de primer año STI2D
vacío configuración()
{
[Link](...); // Inicialización del puerto COM
motor apagado
...;
/* Función principal */
vacío bucle()
{
[Link]();
// mantener velocidad 2s
retraso(2000);
// parada 1s
delay(1000);
}
5-TP_arduino.odt 18
Clase de primer año STI2D
5.4. Servomotor
Un servomotor es un sistema motorizado capaz de alcanzar posiciones predeterminadas y luego mantenerlas.
la posición es: en el caso de un motor rotativo, un valor de ángulo y, en el caso de un motor lineal, una distancia.
Queremos pedir 2 servomotores.
Un servomotor principal debe realizar el ciclo
ci-contre.
El segundo debe estar en oposición de fase.
#incluir <Servo.h>
vacío configuración()
{
Conectamos los pines a los servos
[Link](pin_servo1);
[Link](pin_servo2);
5-TP_arduino.odt 19
Clase de primera STI2D
vacío bucle()
{
si ( ... )
iniciar();
else {
const int tempo = 10;// 10 ms
// ciclo 3
acc = 180 * tempo / 2000;
para (... ángulo(0); ángulo <= ...; ángulo += acc) {
[Link](...);
[Link](...);
retraso(tempo);
}
// ciclo 8
acc = 90 * tempo / 1000;
para (... ángulo(0); ángulo <= ...; ángulo += acc) {
[Link](...);
[Link](...);
delay(tempo);
}
}
}
vacío iniciarServo()
{
// inicialización de las posiciones de los servomotores a 90°
[Link](90);
[Link](90);
5-TP_arduino.odt 20
Clase de primer año STI2D
6. Pantalla LCD
On souhaite afficher la température et le taux d'humidité contenue dans une pièce sur une afficheur LCD4.
1. Conectar el visualizador al bus I²C según el esquema a continuación.
Broche A0 : sensor de temperatura
Broche A2: sensor de humedad
Bus I²C : LCD
#incluir <Wire.h>
vacío configuración()
{
[Link]();
[Link](9600);
while ( !Serial);// Leonardo: espera por el monitor serie
Escáner I2C
}
vacío bucle()
{
Escaneando...
int nDispositivos(0);
para (int dirección(1); dirección < 127; dirección++) {
// El escáner i2c utiliza el valor de retorno de
// the [Link] to see if
un dispositivo reconoció la dirección.
[Link](dirección);
int error = [Link]();
si ( error == 0 ) {
[Link]("dispositivo I2C detectado en la dirección : 0x");
si ( dirección < 16 )
[Link]("0");
[Link](dirección, HEX);
nDispositivos++;
5-TP_arduino.odt 21
Clase de primero STI2D
}
}
si ( nDispositivos == 0 )
No se encontró ningún dispositivo I2C
else
[Link]("terminada\n");
3. Modificar el programa para que las mediciones se muestren en 2 líneas (t° luego % de humedad) y se actualicen
todas las segundos.
/*
Medir t° y humedad
*/
#incluir <wire.h>
#incluir <LiquidCrystal_I2C.h>// [Link]
cristal líquido/descargas
vacío configurar()
{
[Link](16, 2); // inicializa el lcd a 16 caracteres 2 líneas
[Link]ón();
retraso(250);
}
vacío bucle()
{
// limpiar la pantalla
[Link]();
[Link](0, 1);
[Link]("Hum : ");
... h = ...;
[Link](h);
[Link]("%");
retrasar(1000);
5-TP_arduino.odt 22
Clase de primer año STI2D
}
7. Módulos
• Medida de distancia por ultrasonido
• Infrarrojo distancia GP2Y0A21
• Divisor de tensión DFR 0051
• Módulo relé de potencia 24V
• Botón pulsador
• Receptor infrarrojo DFR 0094
• Sensor de temperatura DFR 0023
• Potenciómetro
• Medición del sonido
• Zumbador
• Sensor infrarrojo de 10 cm SEN 0024
• Transmisor IR
• Sensor capacitivo
• Commande motor
• Sensor de humedad
• Medida de luminosidad
• ruedas codificadoras
escudos
• Escudo de Relé para Arduino V2.1
• Escudo Base Grove
• escudo motor 2A
• escudo Xbee
• escudo wifi
• escudo NFC
• escudo I/O V7
• escudo I/O V6
• escudo GSM
• escudo de bus CAN
• tarjeta SD de escudo
• escudo ethernet
• escudo cargador solar
5-TP_arduino.odt 23
Classe de première STI2D
8. Referencias
• Tutorial de Arduino
• Manuel de referencia Aduino
• lenguaje C
• lenguaje C++
• la resistencia
• el diodo
• el Transistor
• Trabajos Prácticos de Arduino
5-TP_arduino.odt 24