La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Multitareas en Arduino

Presentaciones similares


Presentación del tema: "Multitareas en Arduino"— Transcripción de la presentación:

1 Multitareas en Arduino

2 Un procesador Simple No tiene Sistema Operativo
Sólo ejecuta un programa a la vez.

3 ¿Cómo implementar multitareas?
Dado que no existe Sistema Operativo, es necesario implementar todo el código que se requiere para la ejecución concurrente de tareas.

4 Sicronización de tiempo
Evitar el uso de rutinas como delay(), las cuales bloquean el uso del procesador. Implementar el código necesario para sincronizar la ejecución de múltiples tareas en el tiempo.

5 Midiendo el tiempo Calendarizar las tareas
Medir el tiempo contínuamente; Sincronizar las tareas conforme a la calendarización y el tiempo medido.

6 Ejemplo

7 Ejecución concurrente de dos tareas
Incorporar un segundo led (ver siguiente lámina) Incorporar una segunda tarea lo cual implica: Agregar variables de estado para segunda tarea (Pin, Estado, tiempo, intervalo) Agregar el código necesario para que se ejecute segunda tarea (modificar función loop).

8 Prototipo para ejecución concurrente de dos tareas

9 Código Pin1=12; Estado1 = LOW; unsigned long tiempoAnterior1 = 0;
long TiempoEncendido1 = 250; long TiempoApagado1 = 750; int Pin2 = 13; int Estado2 = LOW; unsigned long tiempoAnterior2 = 0; long TiempoEncendido2 = 330; long TiempoApagado2 = 400; Variables de estado para Tarea 1 Variables de estado para Tarea 2

10 Código Continuación void setup() { pinMode(ledPin1, OUTPUT);
}

11 Código Continuación void loop() {
unsigned long TiempoActual = millis(); if((Estado1 == HIGH) && (TiempoActual - tiempoAnterior1 >= TiempoEncendido1)) Estado1 = LOW; tiempoAnterior1 = TiempoActual; digitalWrite(Pin1, Estado1); } else if ((Estado1 == LOW) && (TiempoActual - tiempoAnterior1 >= TiempoApagado1)) Estado1 = HIGH;

12 Código Continuación if((Estado2 == HIGH) && (TiempoActual - tiempoAnterior2 >= TiempoEncendido2)) { Estado2 = LOW; tiempoAnterior2 = TiempoActual; digitalWrite(Pin2, Estado2); } else if ((Estado2 == LOW) && (TiempoActual - tiempoAnterior2 >= TiempoApagado2)) Estado2 = HIGH;


Descargar ppt "Multitareas en Arduino"

Presentaciones similares


Anuncios Google