Actividades Con Arduino
Actividades Con Arduino
CONTENIDO DE UN PROGRAMA
EN ARDUINO
INSTRUCCIONES BÁSICAS
PARA INTRODUCIR EN EL
IDE DE ARDUINO
Introducción de datos:
➢ x == y (x es igual a y) IMPORTANTE!!
➢ x != y (x es distinto a y)
➢ x < y (x es menor que y)
➢ x > y (x es mayor que y)
➢ x <= y (x es menor o igual que y)
➢ x >= y (x es mayor o igual que y)
1. if (condicion) {……..}.
if (condicion) {.....
instrucciones si se cumple
else {......
instrucciones si no se cumple
}
BUCLE FOR:
Sintaxis:
for (variable índice; condición; incrementador)
{
// comandos
}
Ejemplo:
for (int i = 0; i<=4; i++)
{
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
BUCLE WHILE:
Sintaxis:
while (condición)
{
// comandos
}
Ejemplo:
int var
while (var<200)
{
digitalWrite(8, HIGH);
delay(500);
digitalWrite(8, LOW);
delay(500);
}
FUNCIONES ESPECÍFICAS DE
ARDUINO
FUNCIÓN pinMode()
SEÑAL DIGITAL
Las variables digitales sólo tienen dos posibles estados:
● 0, apagado (0V)
● 1, encendido (5V)
SEÑAL ANALÓGICA
En el mundo real, las magnitudes pueden tener múltiples
valores. P.e., las variaciones de tª a lo largo del día, pueden ser
recogidas por un sensor que mida la tª, aportando distintos
valores de tensión que se corresponden con una tª en ºC.
MUESTREO Y RESOLUCIÓN
ARDUINO no lee continuamente la señal analógica (tiempo continuo), sino que
toma una muestra cada 100 𝛍s (tiempo discreto), lo que le permite convertir
una señal analógica continua en una señal discreta (dividida en trocitos).
● Si la R en la LDR es pequeña,
Vout aumenta, por lo que la
entrada será próxima a 5V.
● Si es grande, Vout disminuye y
la entrada será próxima a 0V.
MEDIDA DE DISTANCIAS. SENSOR ULTRASÓNICO.
Los ultrasonidos son unas señales acústicas en un rango de frecuencias por
encima de lo que puede percibir el oído humano. Los sensores de ultrasonidos
permiten medir la distancia a la que se encuentra un objeto sin contacto físico:
Velocidad . Tiempo
Distancia =
2
void setup()
{
Serial.begin(9600); //inicializa el puerto serie
pinMode(pulso, OUTPUT); //Declaramos el pin 9 como salida (pulso ultrasonido)
pinMode(rebote, INPUT); //Declaramos el pin 8 como entrada (recepción del pulso)
}
void loop()
{
digitalWrite(pulso,LOW); //Por cuestión de estabilización del sensor
delayMicroseconds(5);
digitalWrite(pulso, HIGH); //envío del pulso ultrasónico
delayMicroseconds(10);
tiempo = pulseIn(rebote, HIGH); //funcion para medir el tiempo y guardarla en la variable "tiempo"
distancia = 0.01715*tiempo; //fórmula para calcular la distancia
int potencia=map(seleccion,25,990,40,255);
int valor_potenciometro;
void setup() {
//put your setup code here, to run once:
myservo.attach(PINSERVO);
}
void loop() {
// put your main code here, to run repeatedly:
valor_potenciometro=analogRead(A0);
valor_potenciometro=map(valor_potenciometro,0,1023,0,180);
myservo.write(valor_potenciometro);
delay(20);
}
Código ARDUINO para el servo
#include <Servo.h>
#define PINSERVO 9
Servo myservo;
int posicion = 0;
void setup() {
//put your setup code here, to run once:
myservo.attach(PINSERVO);
}
void loop() {
// put your main code here, to run repeatedly:
for(posicion=0;posicion<=180;posicion=posicion+1){
myservo.write(posicion);
delay(20);
}
for(posicion=180; posicion>=0; posicion=posicion-1){
myservo.write(posicion);
delay(20);
}
}
CIRCUITO PARA LCD
PROGRAMA BÁSICO PARA LCD I
#include <LiquidCrystal.h>
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2); // Inicia un LCD 16x02 (columnas,fila)
lcd.setCursor(0, 0); // Pone el cursor en las coordenadas (0,0)
lcd.print("Iniciar proceso"); // Escribe el LCD
lcd.setCursor(0, 1); // Ponemos el cursor en la segunda Fila
lcd.print("Carga de piezas"); // Escribe el LCD
delay(2000);
}
void loop()
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PIEZA DETECTADA");
delay(2000);
lcd.clear();
lcd.print("CARGANDO PIEZA");
delay(2000);
}
PROGRAMA BÁSICO PARA LCD II
PROGRAMA BÁSICO PARA LCD II
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 4, 13, 12, 7, 6); //(RS, E, D4,D5, D6, D7)
int PIR=0;
int CONTADOR=0;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2); // Inicia un LCD 16x02 (columnas,fila)
lcd.setCursor(0, 0); // Pone el cursor en las coordenadas (0,0)
lcd.print("Iniciar proceso"); // Escribe el LCD
lcd.setCursor(0, 1); // Ponemos el cursor en la segunda Fila
lcd.print("Carga de piezas"); // Escribe el LCD
delay(2000);
pinMode(8, INPUT);
}
void loop()
{
PIR=digitalRead(8);
if (PIR==1){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PIEZA DETECTADA");
delay(2000);
lcd.clear();
lcd.clear();
CONTADOR++;
lcd.setCursor(0, 0);
lcd.println("N PIEZAS:");
lcd.print(CONTADOR);
delay(2000);
lcd.clear();
}
else{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ESPERANDO");
delay(1000);
}
}
USO DE LCD: EJEMPLO DE APLICACIÓN
/* Conexión
PIN2 - LCD4 (RS)
PIN4 - LCD6 (E)
PIN13 - LCD11 (D4)
PIN12 - LCD12 (D5)
PIN7 - LCD13 (D6)
PIN6 - LCD14 (D7)*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 4, 13, 12, 7, 6); //(RS, E, D4,D5, D6, D7)
int FOTOELECTRICO = 0;
int CONTADOR=0;
void setup()
{
pinMode(5, INPUT);
pinMode(10, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
Serial.begin(9600);
pinMode(11, OUTPUT);
lcd.begin(16, 2); // Inicia un LCD 16x02 (columnas,fila)
lcd.setCursor(0, 0); // Pone el cursor en las coordenadas (0,0)
lcd.print("Iniciar proceso"); // Escribe el LCD
lcd.setCursor(0, 1); // Ponemos el cursor en la segunda Fila
lcd.print("Carga de piezas"); // Escribe el LCD
}
void loop()
{
FOTOELECTRICO = digitalRead(5);
digitalWrite(10, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
Serial.println(FOTOELECTRICO);
if (FOTOELECTRICO == 1) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PIEZA DETECTADA");
delay(2000);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(1000);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
lcd.clear();
CONTADOR++;
lcd.print("NUMERO PIEZAS:");
lcd.print(CONTADOR);
}
}