-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpalki.ino
95 lines (80 loc) · 2.72 KB
/
palki.ino
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <Servo.h>
Servo myservo;
int i,tryb,Button1,Button2,Button3 = 0;
unsigned long time,sceneStart =0;
unsigned long scene1[] = {500, //cztery krotkie
1000,
1500,
2000,};
unsigned long scene2[] = {2000, //program wlsciwy
2500,
4000,
6000,
6600,
8000,
10000,
12000,
15000,
17000,
19000,
22000,
24000,
28000};
int scene1size = (sizeof(scene1) / sizeof(scene1[0]));
int scene2size = (sizeof(scene2) / sizeof(scene2[0]));
void(* resetFunc) (void) = 0;
void ruchServa() {
myservo.write(180); // ustaw serwo
delay(250); // poczekaj az dojedzie
}
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
myservo.attach(9);
Serial.begin(9600);
}
void loop() {
time = millis();
myservo.write(90); // powrot serva
Button1 = !digitalRead(2); // sprawdzanie przyciskow
Button2 = !digitalRead(3);
Button3 = !digitalRead(4);
if (Button1) { // 4 szybkie kliki
tryb = 1;
i = 0;
sceneStart = time;
}
if (Button2) { // klikanie w czasie
tryb = 2;
i = 0;
sceneStart = time;
}
if (Button3) { // jeden klik jeden ruch serwa
if (tryb !=3) { sceneStart = time; } //jesli nie tryb 3
tryb = 3;
}
switch (tryb) {
case 1 : // tryb pierwszy
if (scene1[i] <= time-sceneStart) { // jesli czas aktywacji jest wiekszy rowny niz ten w "grafiku"
ruchServa();
i = i + 1; // nastepny krok
if ( i == scene1size ) { resetFunc(); } // resetuj mikrokontrolej jesli dojechales do konca tablicy
} // resetowanie kasuje czas i przywraca wszystkie zmienne
break;
case 2 :
if (scene2[i] <= time-sceneStart) {
ruchServa();
i = i + 1;
if ( i == scene2size ) { resetFunc(); }
}
break;
case 3 :
if (Button3) { // aktywowanie servrwa przy wcisnetym przycisku i wypsanie czasu aktywacji
ruchServa();
Serial.print("time = ");
Serial.println(time-sceneStart);
}
break;
}
}