Sie sind auf Seite 1von 17

UNIVERSIDAD CATÓLICA DE SANTA MARÍA

ESCUELA PROFESIONAL DE INGENIERÍA MECÁNICA, MECÁNICA –


ELÉCTRICA Y MECATRÓNICA

CURSO:
MICROCONTROLADORES Y MICROPROCESADORES

“SOFTWARE DE PROGRAMACIÓN PARA ARDUINO”

GRUPO : 03

DOCENTE : DR. MARCELO QUISPE CCACHUCO

ALUMNO : ERICK MARTINS QUISPE GUTIERREZ

AREQUIPA-PERÚ
2019
I. OBJETIVO:
 Aprender a descargar y manejar el entorno de programación de ARDUINO.
 Escribir y cargar una aplicación para la placa Arduino.
 Desarrollar distintos tipos de códigos con el fin de entender la aplicación de diferentes
comandos a sistemas similares.

II. MARCO TEÓRICO:


1. La Placa Arduino:
La placa Arduino constituye un sistema didáctico que facilita el trabajo con un
microcontrolador (Atmega de ATMEL). Arduino es una plataforma de hardware libre y está
diseñado para facilitar el empleo de microcontroladores en el desarrollo de proyectos
multidisciplinarios. Esta plataforma viene con una interface USB capaz de suministrar
alimentación a la misma plataforma y para algunos sensores básicos que podrían instalarse
sobre esta plataforma.

2. Partes:
La plataforma Arduino Uno dispone:
 1 Cristal de 16 MHz.
 1 Interfaz USB.
 32 kB de memoria FLASH.
 14 pines digitales de entrada/salida.
 6 pines de salidas PWM. (Tomados de las E/S Digitales)
 6 Entradas analógicas.
 2 Líneas para comunicación I2C.
 2 Líneas para transmisión y recepción.

 2 Líneas para interrupción. Cada pin puede proporcionar o recibir un máximo de 40 mA y


tienen una resistencia de 20 – 50 KΩ pull-up.

III. MATERIAL Y EQUIPO:


 Computador
 Placa Arduino Uno
 Software Proteus

IV. DESARROLLO:
Implementar los siguiente Códigos en Arduino:

Código N°01: Led intermitente


int ledPin = 13; // Definición de la salida en el PIN 13
// Configuracion
void setup() {
pinMode(ledPin, OUTPUT); // Designa la salida digital al PIN 13
}
// Bucle de funcionamiento
void loop() {
digitalWrite(ledPin,HIGH); // Envia un 1
delay(1000); // Tiempo en ms
digitalWrite(ledPin,LOW); // Envia un 0
delay(1000);
}
Resultados Código N°01:
Para este ejercicio, a modo de introducción usamos tanto el Software Proteus para aprender a
simularlo como también lo armamos con el circuito entrenador. (Figura 01-02 respectivamente)
Figura 01

Figura 02
Código N°02: Alarma
int ledPin = 13; // C. PIN13 como led
int inPin = 5; // C. PIN5 de entrada
int val = 0; // Variable de estado del pin
void setup()
{
pinMode(ledPin,OUTPUT); // Declarado como salida
pinMode(inPin,INPUT); // Declarado como entrada
}
void loop() {
val = digitalRead(inPin); // Leer valor de PIN5
if(val==LOW)
{
digitalWrite(ledPin,HIGH);
delay(300);
digitalWrite(ledPin,LOW);
delay(300);
}
else
{
digitalWrite(ledPin,LOW);
}
}
Resultados Código N°02:

Figura 03 Accionando el pulsador


Código N°03: Secuencia básica de 3 LEDS
int ledPin1 = 6;
int ledPin2 = 7;
int ledPin3 = 8;
void setup() {
// put your setup code here, to run once:
pinMode(ledPin1,OUTPUT);
pinMode(ledPin2,OUTPUT);
pinMode(ledPin3,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(ledPin1,HIGH);
delay(200);
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,HIGH);
delay(200);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,HIGH);
delay(200);
digitalWrite(ledPin3,LOW);
}
Resultados Código N°03:

Figura 04 Simulación del Circuito para el Código N°03


Código N°04: El Coche Fantástico
int ledPin2 = 2;
int ledPin3 = 3;
int ledPin4 = 4;
int ledPin5 = 5;
int ledPin6 = 6;
int ledPin7 = 7;
void setup() {
// put your setup code here, to run once:
pinMode(ledPin2,OUTPUT);
pinMode(ledPin3,OUTPUT);
pinMode(ledPin4,OUTPUT);
pinMode(ledPin5,OUTPUT);
pinMode(ledPin6,OUTPUT);
pinMode(ledPin7,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
// De ida
digitalWrite(ledPin2,HIGH);
delay(200);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,HIGH);
delay(200);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,HIGH);
delay(200);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin5,HIGH);
delay(200);
digitalWrite(ledPin5,LOW);
digitalWrite(ledPin6,HIGH);
delay(200);
digitalWrite(ledPin6,LOW);
digitalWrite(ledPin7,HIGH);
delay(200);
digitalWrite(ledPin7,LOW);
// De vuelta
digitalWrite(ledPin6,HIGH);
delay(200);
digitalWrite(ledPin6,LOW);
digitalWrite(ledPin5,HIGH);
delay(200);
digitalWrite(ledPin5,LOW);
digitalWrite(ledPin4,HIGH);
delay(200);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin3,HIGH);
delay(200);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin2,HIGH);
delay(200);
digitalWrite(ledPin2,LOW);
}
Resultados Código N°04:

Figura 05 Simulación del Circuito para el Código N°04

Figura 06 Ejecuntando en el entrenador el código N°04


Código N°05: Estrella Fugaz
int vp[] = {2,3,4,5,6,7,8,9,10,11,12};
int controlLed = 13;
int tiempo = 100;
int tamano = 11;
int longcola = 4;
void setup()
{
// put your setup code here, to run once:
int i;
pinMode(controlLed,OUTPUT);
for(i=0;i<tamano;i++) // Forma rapida de seleccionar un grupo grande de pines
{
pinMode(vp[i],OUTPUT);
}
}
void loop() {
// put your main code here, to run repeatedly:
int j;
int contacola = longcola;
digitalWrite(controlLed,HIGH);
for(j=0;j<tamano;j++)
{
digitalWrite(vp[j],HIGH);
delay(tiempo);
if(contacola==0)
{
digitalWrite(vp[j-longcola],LOW);
}
else
{
if(contacola>0)
contacola--;
}
}
for(j=(tamano-longcola);j<tamano;j++)
{
digitalWrite(vp[j],LOW);
delay(tiempo);
}
}

Resultados Código N°05:


Como en la placa entrenadora solo se dispone de 8 leds, se adicionó un protoboard para
completar la cantidad restante de LEDs aunque cabe resaltar que se podía haber trabajado con
dicha cantidad, modificando sólo los parámetros de nuestro código de Arduino. (Figura 7)
Figura 07

Código N°06: Contador


int pin7 = 7;
int pin13 = 13;
int valor = 0;
int contador = 0;
int anterior = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(pin7,INPUT);
pinMode(pin13,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
valor = digitalRead(pin7);
digitalWrite(pin13,valor);
if(valor!=anterior)
{
if(valor==1)
{
contador++;
Serial.print(contador);
Serial.write(10);
Serial.write(13);
}
}
anterior = valor;
}
Resultados Código N°06:

Figura 08 Simulación en el software Proteus del circuito

Figura 09 Ejecutando el programa y accionando el pulsador para la toma de datos


Figura 10 En nuestro programa Arduino, recibimos los datos del
accionamiento del pulsador, para abrir esta ventana nos dirigimos a
Herramientas – Monitor Serie

Código N°07: Entrada Analógica

/* Entrada Analógica */
int potPin = 5; // selecciona el pin de entrada para colocar el potenciómetro
int val = 0; // variable para almacenar el valor leído por la entrada analógica
void setup() {
Serial.begin(9600);
}
void loop() {
val = analogRead(potPin); // lee el valor del canal de ENTRADA analógica
Serial.print(val); // Envía al PC el valor analógico leído y lo muestra en pantalla
Serial.write(10);
delay(100);
}
Resultados Código N°07:
Figura 11 Circuito para la toma de datos analógicos

Figura 12 Recibimos los datos con la herramienta Serial Plotter


Código N°08: Simulación de la luz de una vela
int ledPin = 9; // selecciona el puerto PWM
int val = 0; // define y pone a cero la variable "brillo"
int delayval = 1; // 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
analogWrite(ledPin, val); // envía ese valor a la salida pin 9
delayval = random(50,150); // genera un numero aleatorio entre 50 y 150
delay(delayval); // espera un tiempo delayval medido en ms
}
Resultados Código N°08:

Figura 13 Circuito armado en el entrenador


Código N°09: Construcción de un indicador de nivel
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(); //
}
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>= 256) digitalWrite(ledPin1, HIGH);
// Si el valor de la señal medida es > 512 enciende LED del PIN7
if (val>= 512) digitalWrite(ledPin2, HIGH);
// Si el valor de la señal medida es > 758 enciende LED del PIN6
if (val>= 768) digitalWrite(ledPin3, HIGH);
}
Resultados Código N°09:

Figura 14
V. CONCLUSIONES Y OBSERVACIONES:
 En algunos casos se optó por obviar el gráfico del funcionamiento en la placa entrenadora
puesto que no se apreciaba muy bien el funcionamiento del código, por lo que sólo se
presentó la simulación en el software Proteus.
 Para el código N°04, existen otras formas de resolver con el mismo patrón la secuencia de
encendido y apagado de los leds, usando dos bucles for por ejemplo, uno para el recorrido
de ida y otro para el recorrido de vuelta; así mismo también se puede sacar la misma
secuencia usando arrays y sus respectivos comandos.
 Aprendimos el uso del Monitor Serie y la configuración de los pines para recibir datos,
además de los comandos necesarios, viendo esto una herramienta muy útil al momento de
tomar datos.
 Observamos que los datos que recibimos son temblorosos o muy rápidos porque los
elementos usados tienden a ser sensibles a impulsos mecánicos, lo que produce ese error.
Así mismo, no olvidar prestar atención a las entradas o salidas configuradas, puesto que
podemos caer en error al comparar los pines analógicos con los digitales.

VI. ANEXOS:
Para simular el uso de la placa Arduino en nuestra computadora por medio del Software Proteus
debemos de copiar el archivo .hex como vemos en la figura de abajo.
Luego de abrir el Software Proteus y tener la librería de Arduino, seleccionamos la placa y
copiamos donde dice Program File, nuestra dirección .hex del código Arduino para que ésta se
guarde en la placa simulada y podamos ejecutar nuestra simulación completa sin problemas.

Das könnte Ihnen auch gefallen