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