Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. Objetivos 3
2. Marco Teórico 3
3. Marco Conceptual 5
4. Desarrollo 7
4.1. Parte A 7
4.1.1. Simulación 7
4.2. Parte B 8
4.2.1. Simulación 10
4.3. Parte C 10
4.3.1. Simulación 12
4.4. Parte D 12
Anexo 16
Índice de Figuras
Objetivos
Marco Teórico
Ciclo de trabajo
Utilizareoms el concepto de ciclo de trabajo (duty cycle) para describir
específicamente el porcentaje de tiempo que una señal digital se encuentra en un
estado alto en un intervalo o período de tiempo. Este período es el inverso de la
frecuencia de la forma de onda. Si una señal digital pasa la mitad del tiempo
encendido y la otra mitad apagada, diríamos que la señal digital tiene un ciclo de
trabajo del 50% y se asemeja a una onda cuadrada ideal.
Figura 3 Ejemplo de
mezcla de colores
[Escriba aquí]
Salidas Analógicas (PWM) en Arduino
Arduino implementa por hardware salidas PWM en varios de sus pines, los cuales
aparecen identificados en la serigrafía de la placa con el símbolo “~” junto al
número del pin. También podemos emular señales PWM por software, sin
embargo, esto generará una carga de trabajo adicional para el procesador.
En Arduino Uno, disponemos de 6 salidas PWM de 8bits en los pines 3, 5, 6, 9, 10
y 11.
En Arduino Mega disponemos de 15 salidas PWM de 8bis en los pines 2 a 13 y 44
a 46
Arduino Due cuenta con 13 salidas PWM de 8bits en los pins 2 a 13. Además, esta
placa incorpora dos salidas analogicas discretizadas (DAC) con resolución de
12bits (4096 niveles)
Una resolución de 8bits en una salida PWM significa que tenemos 256 niveles. Es
decir, indicamos el Duty cycle mediante un número de 0 a 255.
[Escriba aquí]
El uso de los Timer no es exclusivo de las salidas PWM, si no que es compartido
con otras funciones. Emplear funciones que requieren el uso de estos Timer
supondrá que no podremos emplear de forma simultánea alguno de los pines
PWM.
Marco Conceptual
[Escriba aquí]
Figura 4 Ánodo y cátodo común
Desarrollo
Parte A
Para este programa se tiene un dip switch de 8 posiciones con el cual podemos
cambiar las posiciones con las que cuenta para que el ancho de pulso se
modifique ya sea aumentando o disminuyendo. El código que hará este trabajo
está diseñado en el software de Arduino ID. Este código solo se pidió que fuera
simulado sin hacerlo físicamente.
#include <avr/io.h>
int main() {
while(1) {
[Escriba aquí]
}
Simulación
Parte B
Para este programa se tiene dos botones pulsadores con los cuales podemos
cambiar el ancho de pulso, haciendo que se modifique ya sea aumentando o
disminuyendo, pero al ser muy pequeño el cambio no es notorio y el led se
encuentra parpadeando. El código que hará este trabajo está diseñado en el
software de Arduino ID.
#include <avr/io.h>
#include <util/delay.h>
int main(void){
DDRB |= (1<<PB1);
[Escriba aquí]
OCR1A=500; //Inicializar el TOP en cero
delay(10);
}
delay(10);
}
}
[Escriba aquí]
Simulación
int ValorADC2;
int ValorADC3;
[Escriba aquí]
int TermBPWM1=9;
int TermGPWM2=10;
int TermRPWM3=11;
void setup() {
pinMode(TermBPWM1,OUTPUT);
pinMode(TermGPWM2,OUTPUT);
pinMode(TermRPWM3,OUTPUT);
void loop() {
Display_MultiRGB(random(256),random(256),random(256));
delay(500);
analogWrite(TermBPWM1, constrain(azul,0,255));
analogWrite(TermGPWM2, constrain(verde,0,255));
analogWrite(TermRPWM3, constrain(rojo,0,255));
[Escriba aquí]
Simulación
Parte D
Para este programa se tienen 3 colores de led que son azul, verde y rojo. Con
ayuda de los 3 potenciómetros que se encuentran en la tabla fuimos variando
cada uno de ellos para que pudiera salir una mezcla de colores. El código que
hará este trabajo está diseñado en el software de Arduino ID.
int ValorADC1; //Variable para la Converción del ADC
int ValorADC2;
int ValorADC3;
int TermBPWM1=9;
int TermGPWM2=10;
int TermRPWM3=11;
void setup() {
pinMode(TermBPWM1,OUTPUT);
pinMode(TermGPWM2,OUTPUT);
pinMode(TermRPWM3,OUTPUT);
void loop() {
ValorADC1= analogRead(A1);
[Escriba aquí]
ValorADC2= analogRead(A2);
ValorADC3= analogRead(A3);
Display_MultiRGB(ValorADC3,ValorADC2,ValorADC1);
delay(500);
analogWrite(TermBPWM1, constrain(azul,0,255));
analogWrite(TermGPWM2, constrain(verde,0,255));
analogWrite(TermRPWM3, constrain(rojo,0,255));
[Escriba aquí]
Figura 12 Simulación Parte D
[Escriba aquí]