-
Notifications
You must be signed in to change notification settings - Fork 0
/
23101
61 lines (50 loc) · 2 KB
/
23101
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//Para esta implementación se supone que la páusa de cada actividad tiene una duración constante, lo cual implica una simetría entre
//el tiempo activo y el tiempo inactivo (pausa), es decir tiempo pausa = tiempo actividad.
//Sea tiempoactividad1 < tiempoactividad2 < ... < tiempoactividadN:
#define actividad1 0
#define actividad2 1
#define actividadN 2
const unsigned long tiempoactividad1 = 250UL;
const unsigned long tiempoactividad2 = 2000UL;
const unsigned long tiempoactividadN = 6000UL;
unsigned long tempo;
int deltaActividad1, deltaActividad2, deltaActividadN;
unsigned long tiempoAcumactividad1 = 0;
unsigned long tiempoAcumactividad2 = 0;
unsigned long tiempoAcumactividadN = 0;
void setup() {
pinMode(actividad1, OUTPUT);
pinMode(actividad2, OUTPUT);
pinMode(actividadN, OUTPUT);
digitalWrite(actividad1, LOW);
digitalWrite(actividad2, LOW);
digitalWrite(actividadN, LOW);
}
void loop() {
tempo = millis();
deltaActividad1 = tempo - tiempoAcumactividad1;
deltaActividad2 = tempo - tiempoAcumactividad2;
if ((deltaActividad1 >= tiempoActividad1) && (deltaActividad1 < tiempoActividad2)) {
actividadX(actividad1);
tiempoAcumactividad1 += tiempoactividad1;
}
else {
if ((deltaActividad2 >= tiempoActividad2) && (deltaActividadN < tiempoActividadN)) {
actividadX(actividad2);
tiempoAcumactividad2 += tiempoactividad2;
}
else {
actividadX(actividadN);
tiempoAcumactividadN += tiempoactividadN;
}
}
}
// ----------- Sub rutinas:
// Para este ejemplo sólo usamos un sólo tipo de actividad, encender-apagar un determinado led, con su respectiva páusa de encendido y apagado).
// Obviamente pueden ser x cantidad de actividades y sus respecivas pausas, ello dependerá de la capacidad de la memoria flash de la placa arduino utilizada.
void actividadX(int pinLED) {
if(digitalRead(pinLED))
digitalWrite(pinLED, LOW);
else
digitalWrite(pinLED, HIGH);
}