
bucle while y for (salir y entrar al mismo bucle)
Publicado por anonymous (1 intervención) el 16/01/2021 04:02:43
"CODIGO EN PIC C"
ESPERO QUE PUEDAN AYUDARME, PUSE MUCHOS COMENTARIOS AL CODIGO PARA QUE SEPAN DE QUE HACE CADA COSA.
Que tal comunidad de SpartanGeek, necesito su ayuda con los bucles mencionados en el titulo.
Estoy haciendo un programa para tomar lectura de un sensor de temperatura y realice ciertas acciones. Al llegar a una temperatura mayor o igual a 36 °C aumentara la velocidad de un motor hasta llegar al máximo (1023) y cuando sea menor la temperatura, bajara la velocidad del motor de 1023 a 511 que es la velocidad media del motor.
Utilizo el bucle for para aumentar y disminuir la velocidad del motor.
La pregunta es ¿Cómo puedo hacer que el motor se quede girando al nivel máximo (temperatura>=36) y se quede a velocidad media (temperatura <36) y a la vez se pueda seguir ciclando infinitamente la lectura del sensor ?
¿Se puede salir y entrar a un ciclo cuantas veces quiera?
Les mostrare el código que tengo, en este código se sigue aumentando/disminuyendo la velocidad cada ves que se repite el bucle while.
Este es mi código:
ESPERO QUE PUEDAN AYUDARME, PUSE MUCHOS COMENTARIOS AL CODIGO PARA QUE SEPAN DE QUE HACE CADA COSA.
Que tal comunidad de SpartanGeek, necesito su ayuda con los bucles mencionados en el titulo.
Estoy haciendo un programa para tomar lectura de un sensor de temperatura y realice ciertas acciones. Al llegar a una temperatura mayor o igual a 36 °C aumentara la velocidad de un motor hasta llegar al máximo (1023) y cuando sea menor la temperatura, bajara la velocidad del motor de 1023 a 511 que es la velocidad media del motor.
Utilizo el bucle for para aumentar y disminuir la velocidad del motor.
La pregunta es ¿Cómo puedo hacer que el motor se quede girando al nivel máximo (temperatura>=36) y se quede a velocidad media (temperatura <36) y a la vez se pueda seguir ciclando infinitamente la lectura del sensor ?
¿Se puede salir y entrar a un ciclo cuantas veces quiera?
Les mostrare el código que tengo, en este código se sigue aumentando/disminuyendo la velocidad cada ves que se repite el bucle while.
Este es mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void main()
{
WHILE (true)
{
DHT11_read_data (&humedad,&temperatura); //Toma lectura del sensor
lcd_clear (); //Limpia el LCD
lcd_gotoxy (1, 1) ; // Posición de escritura LCD
printf (lcd_putc, "Hum = %0.1f%%", humedad); //Muestra la lectura de la humedad LCD
lcd_gotoxy (1, 2) ; //Posición de escritura LCD
printf (lcd_putc, "Tem = %0.1fC", temperatura); //Muestra la lectura de la temperatura LCD
printf ("Hum = %0.1f%%\r\n", humedad); //Muestra la lectura de la humedad
printf ("Tem = %0.1fC\r\n\r\n", temperatura); //Muestra la lectura de la temperatura
delay_ms (200); //Toma la lectura del sensor cada 200 ms
IF (temperatura >= 36)
{
// 511 -> velocidad media | 1023 -> velocidad maxima
//Aumentar a la velocidad máxima el motor
FOR (DutyCycle = 511; DutyCycle < 1023; DutyCycle++)
{
set_pwm1_duty (DutyCycle); //Manda la velocidad actual al motor
delay_us (300); // incremento rápido de velocidad
}
IF (DutyCycle == 1023) // sí llego a la velocidad máxima
{
set_pwm1_duty (1023); // se mantendrá a esa velocidad el motor
}
}
else // Mismo código que el de arriba, solo que para que disminuya la velocidad
{
//Regresa el motor a velocidad media
for (DutyCycle = 1023; DutyCycle > 511; DutyCycle--)
{
set_pwm1_duty (DutyCycle) ;
delay_us (300);
}
if (DutyCycle == 511) // sí llego a la velocidad máxima
{
set_pwm1_duty (511); // se mantendrá a esa velocidad el motor
}
}
}
}
Valora esta pregunta


0