WorkSheet Arduino
Didactic Unit 2
Arduino and its possibilities
Session 2
CONTENT ACHIEVEMENT
Arduino Recognize the structure of The Board ARDUINO UNO, its
structure benefits and principals characteristics.
Arduino Understand the Arduino programming language and
programming develop programs for their performance.
Projects in Build electronic projects with Arduinos that can solve
Arduino different technologic problems.
Group # Course Students:
Arduino UNO Board Structure
A
r
d
u
i
n
o
UNO es la plataforma más extendida y la primera que salió al mercado, por ello nos
podemos basar en esta. Todas las características de esta placa estarán implementadas en
casi todas las placas restantes, a excepción de algunas que ya veremos. Se basa en un
microcontrolador Atmel ATmega320 de 8 bits a 16Mhz que funciona a 5v. 32KB son
correspondientes a la memoria flash (0,5KB reservados para el bootloader), 2KB de SRAM
y 1KB de EEPROM. En cuanto a memoria es una de las placas más limitadas, pero no por
ello resulta insuficiente para casi todos los proyectos que rondan la red. Las salidas pueden
trabajar a voltajes superiores, de entre 6 y 20v pero se recomienda una tensión de trabajo
de entre 7 y 12v. Contiene 14 pines digitales, 6 de ellos se pueden emplear como PWM. En
cuanto a pines analógicos se cuenta con hasta 6. Estos pines pueden trabajar con
intensidades de corriente de hasta 40mA.
Arduino Program Interface & Structure
Experiment #1
Hola Mundo & LED Blink
Code:
// Parpadeo del LED
void setup() {
pinMode(13,OUTPUT); // declaramos pin 13 como salida
Serial.begin(9600);
Serial.println("Hola mundo");
void loop() {
digitalWrite(13,HIGH); // put your main code here, to run repeatedly:
delay (1000); // esperamos 1 segundo
digitalWrite (13,LOW);
delay(1000);
}
Circuit
Pasos
1. Monte el circuito
2. escriba el código en el programa Android
3. guarde el programa con un nombre fácil de recordar.
4 compile el código
5 si hay algún error corrija
6 conecte el Android al PC
7 verifique el puerto
8 cargue el programa al ARDUINO
9 Compruebe funcionamiento
Conclusiones Experimento 1
Preguntas experimento 1
¿Para qué sirve la doble barra oblicua? ( //)
¿Qué hace el comando delay?
¿Para qué sirve el punto y coma al final de los comandos?
¿Para qué sirven los corchetes en el programa { }?
¿Para qué sirve void loop y void setup?
¿Para qué sirve pinMode?
¿Para qué sirve el comando digitalWrite?
¿Qué hace el botón reset?
¿Para que funcione el programa siempre debe estar conectado al computador?
Pegue una foto del circuito
Experimento 2 Semáforo (Traffic Light) Code ( First part):
//Semaforo Doble
// DEFINICIÓN DE CONSTANTES
int rojo1 = 9;
int amar1 = 7;
int verde1 = 4;
int rojo2 = 10;
int amar2 = 6;
int verde2 = 2;
void setup() {
pinMode(rojo1,OUTPUT);
pinMode(amar1,OUTPUT);
pinMode(verde1,OUTPUT);
pinMode(rojo2,OUTPUT);
pinMode(amar2,OUTPUT);
pinMode(verde2,OUTPUT); // definimos todos los pines anteriores como salidas
void loop() {
digitalWrite(verde1, HIGH); //encendemos el verde del 1 y el rojo del 2
digitalWrite(rojo2, HIGH);
delay(2000); // asi durante 2 segundos
digitalWrite(verde1, LOW); //apagamos el verde del 1 y encendemos y apagamos el amarillo 1 5 veces (1 segundo en total)
digitalWrite(amar1, HIGH);
delay(200);
digitalWrite(amar1, LOW);
delay(200);
digitalWrite(amar1, HIGH);
delay(200);
digitalWrite(amar1, LOW);
delay(200);
digitalWrite(amar1, HIGH);
delay(200);
digitalWrite(amar1, LOW);
digitalWrite(rojo1, HIGH); // encendemos el rojo del 1 y apagamos el rojo del 2, encendemos el verde del 2 y esperamos 2 segundos
digitalWrite(rojo2, LOW);
digitalWrite(verde2, HIGH);
delay(2000);
digitalWrite(verde2, LOW);// apagamos el verde del semaforo 2 y hacemos con el amarillo lo mismo que hicimos en el semáforo 1
digitalWrite(amar2, HIGH);
delay(200);
digitalWrite(amar2, LOW);
delay(200);
digitalWrite(amar2, HIGH);
delay(200);
digitalWrite(amar2, LOW);
delay(200);
digitalWrite(amar2, HIGH);
delay(200);
digitalWrite(amar2, LOW);
Code……
digitalWrite(rojo1, LOW); // apagamos el rojo del semaforo 1, en este momento se completa la secuencia y se puede recomenzar encendiendo el
verde del 1
}
Circuit:
Conclusiones experimento 2
Pegue una imagen de los miembros del equipo trabajando
¿Considera que cuando cada miembro del equipo hace una función distinta, todos pueden
aprender?
Indique que roles están teniendo los miembros del equipo ( p.e quien lidera, quien programa,
quienes están cableando el circuito, etc)
¿En que se han basado para saber quién se encarga de estos roles?
Preguntas experimento 2
¿Porque es necesario escribir tantas veces delay?
¿Que podría arreglarse en el código para mejorar el semáforo?
Experimento 3 2 Buttons in LED control (AND Gate)
En este experimento usaremos el estado de dos botones cuando ambos estén presionados,
el LED encenderá, de resto no lo hará, (opera el mismo principio de la compuerta AND)
Code
Circuit
Conclusiones experimento 3
Preguntas
¿ Para qué sirven int ( integer) if, else y &&?
Foto del circuito:
Experimento 4
Atenuación del brillo de un LED
En este experimento usaremos una salida Análoga del ARDUINO
Para aumentar y disminuir la intensidad de un LED, tal como acontece en las luces
navideñas
Code:
//programa que secuencialmente aumenta o diminuye el brillo de un LED
//constantes
int led=3;//Ponemos que el led se conectara al pin 3.
//variables
int brillo; //variable para valor del brillo
void setup() {
pinMode(3,OUTPUT);//Decimos que el pin 3 es una salida(Da informacion al led).
void loop(){
for(brillo =0; brillo < 256; brillo++) { //Creamos un bucle for, para que el valor i vaya aumentando progresivamente hasta llegar a 255.
//Se pone hasta 256, porque arduino solo toma una cuarta parte de 1023, que es 256.
analogWrite(led, brillo);//Decimos que es una salida analogica por lo que puede cambiar los voltajes que salen del pin entre 0(Minimo) y
255(maximo).
delay(12);//Cada ves que sube un valor de i tarda 12 milisegundos, y como tiene que hacer 256, tardara aproximadamente 3 segundos en
encenderce completamente.
for(brillo=255; brillo >= 0; brillo--){//Creamos ahora un bucle de for alcontrario que el anterior para que descienda la luz del led(la i)
progresivamente hasta apagarse.
analogWrite(led, brillo);
delay(12);
}
Circuit
Conclusión:
¿Porque debe usarse una salida análoga y no digital?
¿Cuál es la función de la instrucción for?
Experimento 5A uso servomotor
En esta primera parte conectaremos un servomotor al ARDUINO, Un servomotor es un
motor eléctrico que puede ser controlado tanto en velocidad como en posición.
Código
#include <Servo.h>
// el # include es para incluir librerias , (conjunto de funciones y procedimientos extras)
//practica Servomotor Arduino
Servo miServo;
void setup(){
Circuito
Practica 5B control del servo con el teclado del PC
Mediante este programa aumentaremos o disminuiremos el ángulo del servomotor con las
teclas a para aumentar y z para disminuir, recordemos que el servo tiene límites entre 0 y
180 grados para operar
Debo desconectar temporalmente el servo del programa anterior para cargar un nuevo
programa de servo
Aquí debemos habilitar el monitor serial del programa (menú herramientas), monitor Serie
Una vez el programa este cargando desde esta ventana podremos dar los comandos para
aumentar o disminuir
Código
#include <Servo.h>
// servo con control del teclado
Servo miServo;
int angulo=90;
void setup(){
miServo.attach(9);
Serial.begin(9600);
void loop(){
unsigned char comando=0;
if(Serial.available()){//solo leeremos si hay un byte en el buffer
comando=Serial.read();//leemos el byte
if(comando=='a')angulo+=10;//incrementamos 10
else if(comando=='z')angulo-=10;//decrementamos 10
angulo=constrain(angulo,0,180);//restringimos el valor de 0 a 180
miServo.write(angulo);
Serial.print("Angulo:");Serial.println(angulo);
delay(100);
}//End loop
¿Cuáles fueron los aprendizajes más importantes de esta sesión?
¿Qué fue lo que más se dificultó al grupo?
¿En su concepto que tipo de cosas se requieren para que se pueda dar un aprendizaje
colaborativo?
Como grupo deben indagar sobre un proyecto con ARDUINO distinto a los ya vistos y
elaborarlo para la próxima sesión,
Se hará este proyecto:
Semáforo con Arduino
Link: https://www.youtube.com/watch?v=ceMkvShbViw