5
5
using namespace BlenderServoAnimation ;
6
6
7
7
#define FPS 60
8
- #define FRAME_MILLIS 1000 / FPS
8
+ #define FRAMES 5
9
+ #define FRAME_MICROS 16667
9
10
10
11
struct positionLog {
11
12
int index;
@@ -34,7 +35,7 @@ const int positionsA[5] PROGMEM = {350, 340, 330, 340, 330};
34
35
const int positionsB[5 ] PROGMEM = {250 , 240 , 230 , 240 , 230 };
35
36
36
37
void test_play (void ) {
37
- Animation animation (FPS, 5 );
38
+ Animation animation (FPS, FRAMES );
38
39
Servo servos[] = {
39
40
Servo (1 , positionsA, move),
40
41
Servo (2 , positionsB, move),
@@ -48,20 +49,19 @@ void test_play(void) {
48
49
int expA[9 ] = {340 , 330 , 340 , 330 , 350 , 340 , 330 , 340 , 330 };
49
50
int expB[9 ] = {240 , 230 , 240 , 230 , 250 , 240 , 230 , 240 , 230 };
50
51
52
+ for (long i = 0 ; i < FRAME_MICROS * (long )9 ; i++) {
53
+ animation.run (i);
54
+ }
55
+
51
56
for (int i = 0 ; i < 9 ; i++) {
52
- animation.run (FRAME_MILLIS * (i + 1 ));
53
57
TEST_ASSERT_EQUAL (expA[i], lastPositions[1 ].positions [i]);
54
58
TEST_ASSERT_EQUAL (expB[i], lastPositions[2 ].positions [i]);
55
59
TEST_ASSERT_EQUAL (0 , lastPositions[3 ].positions [i]);
56
- animation.run (FRAME_MILLIS * (i + 1.5 ));
57
- TEST_ASSERT_EQUAL (0 , lastPositions[1 ].positions [i + 1 ]);
58
- TEST_ASSERT_EQUAL (0 , lastPositions[2 ].positions [i + 1 ]);
59
- TEST_ASSERT_EQUAL (0 , lastPositions[3 ].positions [i + 1 ]);
60
60
}
61
61
}
62
62
63
63
void test_pause (void ) {
64
- Animation animation (FPS, 5 );
64
+ Animation animation (FPS, FRAMES );
65
65
Servo servo (2 , positionsA, move);
66
66
animation.addServo (servo);
67
67
animation.play ();
@@ -70,29 +70,29 @@ void test_pause(void) {
70
70
int exp[9 ] = {340 , 330 , 340 , 330 , 350 , 340 , 330 , 340 , 330 };
71
71
72
72
for (int i = 0 ; i < 4 ; i++) {
73
- animation.run (FRAME_MILLIS * (i + 1 ));
73
+ animation.run (FRAME_MICROS * ( long ) (i + 1 ));
74
74
TEST_ASSERT_EQUAL (exp[i], lastPositions[2 ].positions [i]);
75
75
}
76
76
77
77
animation.pause ();
78
78
TEST_ASSERT_EQUAL (Animation::MODE_PAUSE, animation.getMode ());
79
79
80
80
for (int i = 4 ; i < 8 ; i++) {
81
- animation.run (FRAME_MILLIS * (i + 1 ));
81
+ animation.run (FRAME_MICROS * ( long ) (i + 1 ));
82
82
TEST_ASSERT_EQUAL (0 , lastPositions[2 ].positions [i]);
83
83
}
84
84
85
85
animation.play ();
86
86
TEST_ASSERT_EQUAL (Animation::MODE_PLAY, animation.getMode ());
87
87
88
88
for (int i = 8 ; i < 14 ; i++) {
89
- animation.run (FRAME_MILLIS * (i + 1 ));
89
+ animation.run (FRAME_MICROS * ( long ) (i + 1 ));
90
90
TEST_ASSERT_EQUAL (exp[i - 5 ], lastPositions[2 ].positions [i - 5 ]);
91
91
}
92
92
}
93
93
94
94
void test_stop (void ) {
95
- Animation animation (FPS, 5 );
95
+ Animation animation (FPS, FRAMES );
96
96
Servo servos[] = {
97
97
Servo (0 , positionsA, move),
98
98
Servo (1 , positionsB, move),
@@ -102,22 +102,22 @@ void test_stop(void) {
102
102
TEST_ASSERT_EQUAL (Animation::MODE_DEFAULT, animation.getMode ());
103
103
animation.play ();
104
104
TEST_ASSERT_EQUAL (Animation::MODE_PLAY, animation.getMode ());
105
- animation.run (FRAME_MILLIS );
105
+ animation.run (FRAME_MICROS );
106
106
TEST_ASSERT_EQUAL (340 , lastPositions[0 ].positions [0 ]);
107
107
TEST_ASSERT_EQUAL (240 , lastPositions[1 ].positions [0 ]);
108
108
TEST_ASSERT_EQUAL (0 , lastPositions[2 ].positions [0 ]);
109
109
TEST_ASSERT_EQUAL (1 , animation.getFrame ());
110
110
animation.stop (0 );
111
111
112
112
for (int i = 0 ; i < 10 ; i++) {
113
- animation.run (FRAME_MILLIS * (i + 2 ));
113
+ animation.run (FRAME_MICROS * ( long ) (i + 2 ));
114
114
TEST_ASSERT_EQUAL (341 + i, lastPositions[0 ].positions [i + 1 ]);
115
115
TEST_ASSERT_EQUAL (241 + i, lastPositions[1 ].positions [i + 1 ]);
116
116
TEST_ASSERT_EQUAL (0 , lastPositions[2 ].positions [i + 1 ]);
117
117
TEST_ASSERT_EQUAL (Animation::MODE_STOP, animation.getMode ());
118
118
}
119
119
120
- animation.run (FRAME_MILLIS * 12 );
120
+ animation.run (FRAME_MICROS * ( long ) 12 );
121
121
TEST_ASSERT_EQUAL (Animation::MODE_DEFAULT, animation.getMode ());
122
122
TEST_ASSERT_EQUAL (0 , animation.getFrame ());
123
123
}
0 commit comments