0% encontró este documento útil (0 votos)
340 vistas17 páginas

Lab11 - Analógicas y Serial

Este documento presenta un laboratorio sobre señales analógicas y comunicación serial en Arduino. Incluye 5 ejercicios donde los estudiantes deben implementar circuitos y código para analizar el funcionamiento de señales analógicas, comunicación serial, LCDs y el uso de estructuras como switch y case. Los ejercicios incluyen mediciones de voltaje, temperatura y el control de LEDs mediante el monitor serial y un potenciómetro.

Cargado por

Fabrizio Amaya
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
340 vistas17 páginas

Lab11 - Analógicas y Serial

Este documento presenta un laboratorio sobre señales analógicas y comunicación serial en Arduino. Incluye 5 ejercicios donde los estudiantes deben implementar circuitos y código para analizar el funcionamiento de señales analógicas, comunicación serial, LCDs y el uso de estructuras como switch y case. Los ejercicios incluyen mediciones de voltaje, temperatura y el control de LEDs mediante el monitor serial y un potenciómetro.

Cargado por

Fabrizio Amaya
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 17

NOTA

Introducción a la Mecatrónica
I Ciclo

Laboratorio 11
Señales Analógicas y Comunicación Serial

Alumnos: Amaya Canchumanta Fabrizio Santiago

Fecha de realización: 02-06-2021

Fecha de entrega: 05-06-2021

Docente: Armando Sarco Montiel


Lab. N° 11 Señales Analógicas y Comunicación Serial

Procedimiento:

Señales analógicas y comunicación serial:


Ejercicio 1: Ensamblar el circuito en el Tinkercad, copiar el programa de abajo, compilar, analizar y
comentar lo que sucede cuando se regula el potenciómetro. (potenciómetro 20 kΩ)

int led = 13;

void setup() {
  pinMode(led, OUTPUT);
  Serial.begin(9600);
}

//Lectura del Pin A0 (ADC)


void loop() {
  int pot=analogRead(A0);//0-1023
  digitalWrite(led,HIGH);
  delay(pot);
  digitalWrite(led,LOW);
  delay(pot);
  Serial.println(pot);
}

Responder la siguiente pregunta:

● ¿Qué significa el valor de 0-1023?

: En el caso de un Arduino Uno, el valor de 0 voltios analógico es expresado en digital como


B0000000000 (0) y el valor de 5V analógico es expresado en digital como B1111111111
(1023). Por lo tanto, todo valor analógico intermedio es expresado con un valor entre 0
y 1023.

● ¿Cuál es la resolución del Arduino DUE?

: El Arduino DUE tiene una resolución de 12 bits.

Docente: Armando Sarco Montiel Pág. 2


Lab. N° 11 Señales Analógicas y Comunicación Serial

Ejercicio 2: Modificar el programa para poder imprimir el voltaje(0-5VDC) en el monitor serial.


(potenciómetro 20 kΩ)

int led = 13;


float pot, vol = 0;
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
pot=analogRead(A0);//0-1023
vol = (pot*5)/1023;
Serial.print("La resolucion es: ");
Serial.print(pot);
Serial.print(" el Voltaje es: ");
Serial.print(vol);
Serial.println("");
delay(300);
}

Docente: Armando Sarco Montiel Pág. 3


Lab. N° 11 Señales Analógicas y Comunicación Serial

Ejercicio 3: Ensamblar el circuito en el Tinkercad, copiar el programa de abajo, compilar, analizar y comentar lo
que sucede.

#include <LiquidCrystal.h> // Incluir biblioteca


LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int LM36 = 0;

void setup() {
  lcd.begin(16, 2);   // Inicia el LCD 16x02 (columnas,filas)
}

void loop() {
//Lectura del Pin A0 (ADC)
  lcd.clear(); //Limpia la pantalla del LCD
  float celsius = map(((float(analogRead(LM36))-20) * 3.04),0,1023,-40,125);
  float fahrenheit = ((celsius * 9) / 5 + 32);
  lcd.setCursor(0, 0);
  lcd.print(celsius);
  lcd.print(" C");
  lcd.setCursor(0, 1);
  lcd.print(fahrenheit);
  lcd.print(" F");
  delay(1024);
}

Docente: Armando Sarco Montiel Pág. 4


Lab. N° 11 Señales Analógicas y Comunicación Serial

Lo que sucede es que al variar la temperatura se mostraran sus medidas en grados Celsius
y Fahrenheit en el LCD.

Docente: Armando Sarco Montiel Pág. 5


Lab. N° 11 Señales Analógicas y Comunicación Serial

Uso de las estructuras switch y case:

Ejercicio 4: Ensamblar el circuito en el Tinkercad, copiar el programa de abajo, compilar, analizar y


comentar lo que sucede cuando se pulsa en el teclado las letras 8 y 6.

int leido = 0;

void setup(){
  pinMode(13, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  if(Serial.available() > 0){
    leido = Serial.read();
  }
  switch(leido){
    case 56:
    digitalWrite(13, HIGH);
    break;
    case 54:
    digitalWrite(13, LOW);
    break;
  }  
  Serial.print("lo recibido es: ");
  Serial.println(leido);
  delay(500);
}

Docente: Armando Sarco Montiel Pág. 6


Lab. N° 11 Señales Analógicas y Comunicación Serial

Lo que pasa es que al introducir la tecla 8 (teclado) en el monitor serial el led se prendera y
al introducir la tecla 6 se apagara.

Docente: Armando Sarco Montiel Pág. 7


Lab. N° 11 Señales Analógicas y Comunicación Serial

Ejercicio 5: Ensamblar el circuito en el Tinkercad, escribir un programa que prendan los leds uno tras otro de
derecha a izquierda si se introduce la tecla “A” en el monitor serial y de Izquierda a derecha si se introduce la
tecla “B” en el monitor serial; el potenciómetro se encargará de controlar la velocidad.
int pot = 0; 
int leido = 0;

void setup() {  


  pinMode(2, OUTPUT); 
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  Serial.begin(9600);   
}
void loop() {
  if (Serial.available()>0)  {
    leido = Serial.read();
  }
  switch (leido){
    case 65://A mayúscula en ASCII
    pot = analogRead(A0); 
    digitalWrite(2, HIGH);   
    delay(pot); 
    pot = analogRead(A0); 
    digitalWrite(2, LOW);   
    delay(pot); 
    pot = analogRead(A0); 
    digitalWrite(3, HIGH);   
    delay(pot);  
    pot = analogRead(A0); 
    digitalWrite(3, LOW);
    delay(pot); 
    pot = analogRead(A0); 
    digitalWrite(4, HIGH);   
    delay(pot);  
    pot = analogRead(A0); 
    digitalWrite(4, LOW); 
    delay(pot); 
    pot = analogRead(A0); 
    digitalWrite(5, HIGH);   
    delay(pot);  
    pot = analogRead(A0); 
    digitalWrite(5, LOW);
    delay(pot); 
    break;
    
    case 66://B mayúscula en ASCII
    pot = analogRead(A0); 
    digitalWrite(5, HIGH);   
    delay(pot);  
    pot = analogRead(A0); 
    digitalWrite(5, LOW);   
    delay(pot);
    pot = analogRead(A0); 
    digitalWrite(4, HIGH);   
    delay(pot);  
    pot = analogRead(A0); 
    digitalWrite(4, LOW);
    delay(pot);
    pot = analogRead(A0); 
    digitalWrite(3, HIGH);   
    delay(pot);  
    pot = analogRead(A0); 
    digitalWrite(3, LOW);
    delay(pot);
    pot = analogRead(A0); 
    digitalWrite(2, HIGH);   
    delay(pot);  
    pot = analogRead(A0); 
    digitalWrite(2, LOW);   
    delay(pot);
    break;
  }
  Serial.print("lo recibido es:");
  Serial.print(leido);
  Serial.print("   Potenciometro:");

Docente: Armando Sarco Montiel Pág. 8


Lab. N° 11 Señales Analógicas y Comunicación Serial

  Serial.println(pot);  
}

Lo que sucede es que al introducir la tecla (A) en el monitor serial los leds prenderán uno
tras otros de derecha a izquierda y si se introduce la tecla (B) se prenderán de izquierda a
derecha, la función del potenciómetro es regular la velocidad en la que se encienden y
apagan los leds.

Docente: Armando Sarco Montiel Pág. 9


Lab. N° 11 Señales Analógicas y Comunicación Serial

Ejercicio 6: Ensamblar el circuito en el Tinkercad, copiar el siguiente programa y luego analizar y comentar su
funcionalidad:
int Led_Ro=2;
int Led_Am=3;
int Led_Ve=4;
int Led_Az=5;
int pot;

void setup(){
Serial.begin(9600);
pinMode(Led_Ro, OUTPUT);
pinMode(Led_Am, OUTPUT);
pinMode(Led_Ve, OUTPUT);
pinMode(Led_Az, OUTPUT);
}

void loop(){
  pot=analogRead(A0);
  Serial.println(pot);
  if((pot>=0)&&(pot<255)){
    digitalWrite(Led_Ro, 1);
    digitalWrite(Led_Am, 0);
    digitalWrite(Led_Ve, 0);
    digitalWrite(Led_Az, 0);
  }
  if((pot>=255)&&(pot<511)){
    digitalWrite(Led_Ro, 0);
    digitalWrite(Led_Am, 1);
    digitalWrite(Led_Ve, 0);
    digitalWrite(Led_Az, 0);
  }
  if((pot>=511)&&(pot<766)){
    digitalWrite(Led_Ro, 0);
    digitalWrite(Led_Am, 0);
    digitalWrite(Led_Ve, 1);
    digitalWrite(Led_Az, 0);
  }
  if((pot>=766)&&(pot<1023)){
    digitalWrite(Led_Ro, 0);
    digitalWrite(Led_Am, 0);
    digitalWrite(Led_Ve, 0);
    digitalWrite(Led_Az, 1);
  }
}

Docente: Armando Sarco Montiel Pág. 10


Lab. N° 11 Señales Analógicas y Comunicación Serial

● ¿Qué sucede con los diodos leds al girar el potenciómetro de extremo a extremo?, Analice y
explique el código del programa. Coloque imágenes de evidencia.

El programa funciona de manera que al girar el potenciómetro los valores que se encuentran
entre 0 y 1023 variarán, los leds funcionan de tal forma que si se encuentra en un
determinado intervalo se encenderán.
Al girar de extremo a extremo, todos los leds se llegarán a prender y al final se quedará
encendido el led azul ya que, su intervalo se encuentra entre 766 y 1023

Docente: Armando Sarco Montiel Pág. 11


Lab. N° 11 Señales Analógicas y Comunicación Serial

● Habilite el monitor serial y explique lo que sucede cuando gira el potenciómetro. Analice y explique
el código del programa. Coloque imágenes de evidencia.

Lo que sucede es que al girar el potenciómetro sus valores analógicos variaran de 0 a 1023
y se prendera un led en un determinado intervalo y lo mismo sucederá con los otros leds.

El led rojo se prende entre 0 y 255


El led amarillo se prende entre 255 y 511
El led verse se prende entre 511 y 766
El led azul se prende entre 766 y 1023

Docente: Armando Sarco Montiel Pág. 12


Lab. N° 11 Señales Analógicas y Comunicación Serial

Docente: Armando Sarco Montiel Pág. 13


Lab. N° 11 Señales Analógicas y Comunicación Serial

● Mostrar en un LCD, “Led Rojo prendido”, cuando el led rojo esté prendido y así sucesivamente cambie de
nombre de acuerdo al color del Led.

#include <LiquidCrystal.h> // Incluir lcd.clear(); //Limpia la pantalla del LCD


biblioteca if((pot>=766)&&(pot<1023)){
LiquidCrystal lcd(12, 11, 9, 8, 7, 6); lcd.setCursor(0, 0);
lcd.print("LED AZUL");
int Led_Ro = 2; lcd.setCursor(0, 1);
int Led_Am = 3; lcd.print("PRENDIDO");
int Led_Ve = 4; delay(1024);
int Led_Az = 5; }
int pot;
if((pot>=0)&&(pot<255)){
void setup(){ digitalWrite(Led_Ro, 1);
digitalWrite(Led_Am, 0);
Serial.begin(9600); digitalWrite(Led_Ve, 0);
pinMode(Led_Ro, OUTPUT); digitalWrite(Led_Az, 0);
pinMode(Led_Am, OUTPUT); }
pinMode(Led_Ve, OUTPUT); if((pot>=255)&&(pot<511)){
pinMode(Led_Az, OUTPUT); digitalWrite(Led_Ro, 0);
lcd.begin(16, 2); digitalWrite(Led_Am, 1);
digitalWrite(Led_Ve, 0);
} digitalWrite(Led_Az, 0);
void loop(){ }
pot=analogRead(A0); if((pot>=511)&&(pot<766)){
Serial.println(pot); digitalWrite(Led_Ro, 0);
digitalWrite(Led_Am, 0);
digitalWrite(Led_Ve, 1);
lcd.clear(); //Limpia la pantalla del LCD digitalWrite(Led_Az, 0);
if((pot>=0)&&(pot<255)){ }
lcd.setCursor(0, 0); if((pot>=766)&&(pot<1023)){
lcd.print("LED ROJO"); digitalWrite(Led_Ro, 0);
lcd.setCursor(0, 1); digitalWrite(Led_Am, 0);
lcd.print("PRENDIDO"); digitalWrite(Led_Ve, 0);
delay(1024); digitalWrite(Led_Az, 1);
}
}
}
lcd.clear(); //Limpia la pantalla del LCD
if((pot>=255)&&(pot<511)){
lcd.print("LED AMARILLO");
lcd.setCursor(0, 1);
lcd.print("PRENDIDO");
delay(1024);
}
lcd.clear(); //Limpia la pantalla del LCD
if((pot>=511)&&(pot<766)){
lcd.setCursor(0, 0);
lcd.print("LED VERDE");
lcd.setCursor(0, 1);
lcd.print("PRENDIDO");
delay(1024);
}
Docente: Armando Sarco Montiel Pág. 14
Lab. N° 11 Señales Analógicas y Comunicación Serial

Docente: Armando Sarco Montiel Pág. 15


Lab. N° 11 Señales Analógicas y Comunicación Serial

Docente: Armando Sarco Montiel Pág. 16


Lab. N° 11 Señales Analógicas y Comunicación Serial

OBSERVACIONES:

 Pudimos observar la variación de temperatura del LM36 gracias al lcd

 Observamos que el Arduino uno tiene una resolución de 10 bits (0-1023)

 En el código ASCII la tecla 8 del teclado representa el numero 56 en Arduino

 En el código ASCII la tecla 6 del teclado representa el número 54 en Arduino

 Observamos que en el código ASCII la tecla A(mayúscula) representa el


número 65 y la tecla B(mayúscula) el numero 66

CONCLUSIONES:

 Se aprendió a programar un lcd Y potenciómetro para circuitos con Arduino

 Conocimos el significado de los valores 0 -1023

 Aprendimos el uso de los comandos switch y break

 Se aprendió los usos de las librerías en Arduino

 Hicimos uso del código ASCII para programar

Docente: Armando Sarco Montiel Pág. 17

También podría gustarte