Subido por Fabricio Gonzáles

Grupo 9 - ArduinoComunicaciónSerial

Anuncio
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
INGENIERÍA EN MECATRÓNICA
MICROPROCESADORES Y SISTEMAS EMBEBIDOS
ACTIVIDAD A TALLER DE SIMULACIÓN DE EJEMPLOS
PRÁCTICOS
GRUPO 9
Docente: Ing. Iván Iglesias
Estudiantes:
•
•
•
•
Álvarez Robert
Lanchi Steven
Orozco Henry
Parra Bryan
17 de junio del 2022
FUNCIONES DE TIEMPO.
EJERCICIO 1: USANDO EN ARDUINO MILLIS, SE IMPRIMIRA CADA
SEGUNDO UN MENSAJE SIN USAR RETARDOS (tiempo_millis)
#include <LiquidCrystal.h>
LiquidCrystal led(2,3,4,5,6,7);
unsigned long tiempo1 = 0;
unsigned long tiempo2 = 0;
unsigned long tiempoSegundos = 0;
void setup()
{
Serial.begin(9600);
tiempo1 = millis();
}
void loop()
{
tiempo2 = millis();
if(tiempo2 > (tiempo1+1000)){ //Si ha pasado 1 segundo ejecuta el IF
tiempo1 = millis(); //Actualiza el tiempo actual
tiempoSegundos = tiempo1/1000;
Serial.print("Ha transcurrido: ");
Serial.print(tiempoSegundos);
Serial.println(" desde que se encendio el Arduino");
}
}
EJERCICIO-2. USAR EN EL LENGUAJE ARDUINO A LA FUNCIÓN MILLIS
() PARA MEDIR EL TIEMPO ENTRE DOS MENSAJES SERIALES
(tiempo_dato)
unsigned long tiempo1 = 0;
unsigned long tiempo2 = 0;
unsigned long diferenciaTiempo = 0;
void setup () {
Serial.begin(9600);
Serial.println ("Envie la letra A o a por la terminal serial");
}
void loop (){
if (Serial.available() > 0) {
char datoRecibido = Serial.read();
if (datoRecibido == 'A' || datoRecibido == 'a'){
tiempo1 = millis();
Serial.println("Envie la letra B o b por la terminal Serial");
}
else if (datoRecibido == 'b' || datoRecibido == 'B'){
tiempo2 = millis();
diferenciaTiempo = tiempo2 - tiempo1;
Serial.print ("El tiempo transcurrido entre el primer dato enviado");
Serial.println (diferenciaTiempo);
Serial.println ("Envie la letra A o a por la terminalserial");
}
}
}
Link en tinkercad ejercicio 1 y 2
https://www.tinkercad.com/things/e3WZDNxhqWX?sharecode=iHZj_K5eA2_gPAspK
NS7gt2H9IEtNcQdcEagGi0SuIg
CONTROL DE VELOCIDAD DEL MOTOR
EJERCICIO 3: CONTROL DE VELOCIDAD DEL MOTOR. (control_veloc_serial)
El programa a continuación controlaremos la velocidad de un motor observando el valor
análogo en la comunicación serial mediante un potenciómetro por ende debemos al
valor análogo dividirlo para 4 para tener una referencia hasta 255.
Funcionamiento
Observamos a medida que se le va reduciendo la resistencia este emite una señal hacia
el motor variable del voltaje, en este caso si reducimos la resistencia aumenta la
corriente, por ello el motor tiene más revoluciones y caso contrario al aumentar al
resistencia se reduce la corriente, por ello se va reduciendo las revoluciones del motor.
Link del ejercicio 3
https://www.tinkercad.com/things/bQFJoe8xRFp-smooth-sangosnicket/editel?sharecode=oZZ4Q3a2Nih8BhzaK-qRNKtp1SkQK0X_Pn63FJzCSWg
Ejercicio 4: Cambios de velocidad del Motor
El programa cambiará la velocidad del motor aumentándola, dependiendo cuantas
veces se presiona la letra A, y disminuirá su velocidad cuando se presione la letra
B, con un máximo de 5 veces cada una.
Para analizar el rango de 5V en forma digital se toma en cuenta que los 0 a 5V
representan un array de 0 a 255 en Arduino, entonces definimos la intensidad de voltaje
como 0 = 0V y 255 = 5V. Para aumentar la velocidad en 5 veces dividimos este rango
para 5 que representara el voltaje enviado al motor, por ende, más voltaje más
velocidad.
Voltaje
0V
1V
2V
3V
4V
5V
Entonces se obtiene
Valor digital
(PWM)
0
51
102
153
204
255
Link tinkerCad
https://www.tinkercad.com/things/h6JiYh382Fo-trabajo-cp4-ejercicio-4/editel?sharecode=ZZR2q5Zv8_rqi7vel1C1TPukctNQGj4VTyNLu6Q0qfc
GENERACIÓN DE NÚMEROS ALEATOREOS
EJERCICIO 5: REALICE UN PROGRAMA PARA
GENERAR NUMERO ALEATORIOS ENTRE 0 Y 255 Y
ENTRE 25 Y 50
#include <LiquidCrystal.h>
LiquidCrystal lcd(10, 9, 8, 5, 4, 3, 2); //(RS, RW, E, D4,D5, D6,
D7)
int randomNumber;
bool bot1 = 12;
bool bot2 = 11;
void setup()
{
pinMode(bot1, INPUT);
pinMode(bot2, INPUT);
lcd.begin(16, 2);// Inicia el LCD 16x02 (columnas, filas)
lcd.setCursor(0, 0);// Coloca el cursor en las coordenadas (0,0)
}
void loop()
{
int bot1=digitalRead(12);
int bot2=digitalRead(11);
if (bot1 == HIGH)
{
randomNumber = random(0,255);
lcd.println(randomNumber);
lcd.noCursor();
delay(50);
lcd.cursor();
delay(50);
}
if (bot2 == HIGH)
{
randomNumber = random(25,50);
lcd.println(randomNumber);
lcd.noCursor();
delay(50);
lcd.cursor();
delay(50);
}
}
Link ejercicio 5
https://www.tinkercad.com/things/3eu6oz0AZxA-bodaciousdensor/editel?sharecode=FqGk82fqR__rGur9gt3RpLtejlyqKuwK
zFCcSUVDMgs
Descargar