You are on page 1of 25

Prácticas con Arduino

3er día

Fernando Villatoro Velasco.


Octubre de 2016
Objetivos del tercer día:

• El alumno continúa con la estructura de programas


para la plataforma Arduino en la búsqueda de
solución de problemas.
• El alumno, en equipos de trabajo, realizará
prácticas para desarrollarse en el uso de la
plataforma Arduino.
• Trabajarán de forma autónoma para aplicar las
competencias consideradas en el curso.
Competencias genéricas:

Competencias instrumentales Competencias sistémicas


• Capacidad de análisis y síntesis • Los conocimientos en la práctica.
• Conocimientos básicos de la carrera • Adaptarse a nuevas situaciones.
• Conocimiento de una segunda lengua • Capacidad de generar nuevas ideas.
• Manejo de la computadora • Liderazgo.
• Solución de problemas • Trabajar en forma autónoma.
• Toma de decisiones • Diseñar y gestionar proyectos.
• Iniciativa y espíritu emprendedor.
• Búsqueda del logro.
Competencias interpersonales
• Capacidad crítica y autocrítica.
• Trabajo en equipo.
• Habilidades interpersonales
• Capacidad de trabajar en equipo
Interdisciplinario.
• Comunicación con profesionales de
otras áreas.
• Compromiso ético.
Práctica No.10: Simulación de la luz de una vela

De trata de simular el movimiento de la llama de una vela. Hacemos uso de


la instrucción para generar un numero aleatorio que lo asignamos a una
salida analógica PWM y otro numero que lo asociamos a la variable de
temporización (tiempo que esperamos para cambiar el valor de la salida).
/* Simula luz de vela
De trata de simular el movimiento de la llama de una vela. Hacemos uso de la
instrucción para generar un numero aleatorio que lo asignamos a una salida
analógica PWM y otro numero que lo asociamos a la variable de temporización
(tiempo que esperamos para cambiar el valor de la salida).
*/
int ledPin = 9; // selecciona el puerto PWM
int val = 0;// define y pone a cero la variable "brillo"
int delayval = 0; // define el intervalo de cambio de valor de salida
void setup() {
randomSeed(0);// inicializa el generador de números aleatorios
pinMode(ledPin, OUTPUT); // declara el pin de SALIDA pin 9
}
void loop() {
val = random(100,255);// genera un número aleatorio entre 100 y 255 que asigna a
//la variable val
analogWrite(ledPin, val); // envía ese valor a la salida pin 9
delayval = random(50,150); // genera un numero aleatorio entre 30 y 100 y lo
//asigna a la variable de temporización
delay(delayval);// espera un tiempo delayval medido en milisegundos
}
Prácica No. 11: Construcción de un indicador de nivel
Se trata de construir un indicador de nivel que sea capaz de medir el valor de
una señal de entrada generada por un potenciómetro desde una entrada
analógica.
Se establecerán 3 diodos Led conectados a las salidas PIN6, PIN7 y PIN8. La
entrada la conectaremos en la entrada analógica PIN 1 (analog IN1)
/* Indicador de nivel que depende de la altura detectada por el sensor
que toma el reostato */
int ledPin1 = 8; // Selección de PIN para cada LED
int ledPin2 = 7;
int ledPin3 = 6;
int inPin= 1; // selecciona la entrada analógica 1 (potenciómetro)

void turn_off() { //Apaga los 3 LEDS


digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
void setup() {
pinMode(ledPin1, OUTPUT); // declara LEDs como salidas
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
turn_off(); //
}
…continuación
void loop(){
int val;
val= analogRead(inPin); // lee el valor de la señal analógica
turn_off(); //apaga los tres LED
// Si el valor de la señal medida es > 256 enciende LED del PIN8
if (val>= 100) digitalWrite(ledPin1, HIGH);
// Si el valor de la señal medida es > 512 enciende LED del PIN7
if (val>= 400) digitalWrite(ledPin2, HIGH);
// Si el valor de la señal medida es > 758 enciende LED del PIN6
if (val>= 800) digitalWrite(ledPin3, HIGH);
}
Práctica 12: Control de la iluminación con un fotosensor LDR.

Con esta aplicación se pretende controlar el grado de iluminación de tres leds


dependiendo de la cantidad de luz detectada
/* Ejemplo de medidor de luz con Arduino utilizando una fotoresistencia LDR y
* un grupo de leds para mostrar el resultado de las lecturas. Este sketch puede
* servir como base para otros proyectos que requieren medicion de la intensidad
* de luz con una fotoresistencia */

// Pin donde se conectan los leds


int pinLed1 = 2;
int pinLed2 = 3;
int pinLed3 = 4;
int pinLDR = 0; // Pin analogico de entrada para el LDR
int valorLDR = 0; // Variable donde se almacena el valor del LDR

void setup() // Configuramos como salidas los pines donde se conectan los led
{
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);

// Configurar el puerto serial


Serial.begin(9600);
}
void loop()
{
digitalWrite(pinLed1, LOW); // Apagar todos los leds siempre que se inicia el ciclo
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW);

/*Guardamos el valor leido del ADC en una variable


El valor leido por el ADC (voltaje) aumenta de manera directamente proporcional
con respecto a la luz percibida por el LDR*/
valorLDR= analogRead(pinLDR);
Serial.print(«Valor de luz = «);
Serial.println(valorLDR); // Devolver el valor leido a nuestro monitor serial
if(valorLDR > 256) // Encender los leds apropiados de acuerdo al valor de ADC
{
digitalWrite(pinLed1, HIGH);
}
if(valorLDR > 512)
{
digitalWrite(pinLed2, HIGH);
}
if(valorLDR > 768)
{
digitalWrite(pinLed3, HIGH);
}
delay(200); // Esperar unos milisegundos antes de actualizar
Práctica 13: Enciende y apaga un número de veces un LED
Se trata de realizar un ejemplo que active y desactive una salida digital (PIN13)
un número de veces que indicaremos mediante un número a través del
terminal del IDE Arduino.
/*
* Impulsos programados
* -----------------
* Cambia de estado ON - Off un LED conectado en el una salida digital
* pin 13. El se encender y apagar tantas veces como se indique
* mediante un digito ASCII leÃido desde el puerto serie.
*
*
*/

int ledPin = 13; // selecciona el pin para el LED


int val = 0; // variable que almacena el valor leido del puerto

void setup() {
pinMode(ledPin,OUTPUT); // declara el PIN del LED como salida
Serial.begin(9600); // conecta con el puerto serie a la velocidad de 19200
Serial.println("Bienvenido al Generador de Impulsos Programados");
}
…continuacion
void loop () {
val = Serial.read();

// lee el numero del puerto (una sola cifra)


//si el valor leido es un solo digito se ejecuta el programa

if (val > '0' && val <= '9' ) {


val = val - '0'; // convierte el caracter leido en un numero
for(int i=0; i<val; i++) {
Serial.println("Encendido!");
digitalWrite(ledPin,HIGH); // enciende el LED
delay(150); // espera
digitalWrite(ledPin, LOW); // apaga el LED
delay(150); // espera
}
Serial.println("Apagado!");
}

}
Práctica 14: Números del 0 al 9

Para poder utilizar un Display de 7 segmentos, se debe considerar primeramente su


forma de conexión
El display de 7 segmentos o visualizador de
7 segmentos es un componente que se
utiliza para la representación de números en
muchos dispositivos electrónicos debido en
gran medida a su simplicidad. Aunque
externamente su forma difiere
considerablemente de un diodo LED (diodos
emisores de luz) típico, internamente están
constituidos por una serie de diodos LED
con unas determinadas conexiones internas,
estratégicamente ubicados de tal forma que
forme un número 8.
//Declaramos los pines de salida,
//en el el proyecto así lo tenemos cableado
int a = 7;
int b = 8;
int c = 9;
int d = 10;
int e = 11;
int f = 12;
int g = 13;
int o = 9;//Hacemos que todas nuestras variables sean salidas
int timer = 500;
void setup(){
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(o, OUTPUT);
void loop(){
//Cero
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
delay(timer);
//Uno
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
delay(timer);
//Dos
digitalWrite(a,LOW); .
digitalWrite(b,LOW); .
digitalWrite(c,HIGH); .
digitalWrite(d,LOW); .
digitalWrite(e,LOW); .
digitalWrite(f,HIGH); .
digitalWrite(g,LOW); .
delay(timer);
. //Nueve
. digitalWrite(a,LOW);
. digitalWrite(b,LOW);
. digitalWrite(c,LOW);
. digitalWrite(d,LOW);
. digitalWrite(e,LOW);
. digitalWrite(f,LOW);
. digitalWrite(g,HIGH);
}
Práctica 15: Números del 0 al 9 mediante
secuencia binaria

Para poder utilizar un Display de 7


segmentos, se debe considerar
primeramente su forma de conexión

escribirEnElDisplay(0,0,0,0,0,0,0);
//Declaramos los pines de salida,
//en el el proyecto asi lo tenemos cableado
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;

void setup(){
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);}
void loop(){

//Cero
escribirEnElDisplay(0,0,0,0,0,0,1);
delay(1000);
//Uno
escribirEnElDisplay(1,0,0,1,1,1,1);
delay(1000);
//Dos
escribirEnElDisplay(0,0,1,0,0,1,0);
delay(1000);
//Tres
escribirEnElDisplay(0,0,0,0,1,1,0);
delay(1000);
//Cuatro
escribirEnElDisplay(1,0,0,1,1,0,0);
delay(1000);
//Cinco
escribirEnElDisplay(0,1,0,0,1,0,0);
delay(1000);
//Seis
escribirEnElDisplay(0,1,0,0,0,0,0);
delay(1000);
//Siete
escribirEnElDisplay(0,0,0,1,1,1,1);
delay(1000);
//Ocho
escribirEnElDisplay(0,0,0,0,0,0,0);
delay(1000);
//Nueve
escribirEnElDisplay(0,0,0,0,1,0,0);
delay(1000);

}
Revisión de los objetivos del tercer día:

• El alumno estructura programas para la plataforma


Arduino en la búsqueda de solución de problemas.
• El alumno, en equipos de trabajo, realizará 10
prácticas para desarrollarse en el uso de la
plataforma Arduino.

You might also like