Skip to content

Commit 1386f14

Browse files
committed
adding idle
1 parent f452899 commit 1386f14

File tree

3 files changed

+58
-10
lines changed

3 files changed

+58
-10
lines changed

src/Arduino_Alvik.cpp

Lines changed: 54 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,15 @@ void Arduino_Alvik::reset_hw(){
4444
delay(100);
4545
}
4646

47+
void Arduino_Alvik::wait_for_ack(){
48+
while(last_ack != 0x00){
49+
delay(20);
50+
}
51+
}
52+
4753
int Arduino_Alvik::begin(){
54+
pinMode(LED_RED, OUTPUT);
55+
pinMode(LED_GREEN, OUTPUT);
4856

4957
last_ack = 0;
5058

@@ -120,26 +128,23 @@ int Arduino_Alvik::begin(){
120128
uart->flush();
121129

122130

123-
pinMode(CHECK_STM32, INPUT_PULLUP);
131+
pinMode(CHECK_STM32, INPUT_PULLDOWN);
124132
pinMode(RESET_STM32, OUTPUT);
133+
pinMode(NANO_CHK, OUTPUT);
134+
digitalWrite(NANO_CHK, LOW);
125135

126-
if (digitalRead(CHECK_STM32)==0){
127-
return -1;
136+
if (!is_on()){
137+
delay(1000);
138+
idle();
128139
}
129140

130141
//begin_update_thread();
131142
xTaskCreatePinnedToCore(this->update_thread, "update", 10000, this, 1, &update_task, 0);
132143

133144
delay(100);
134145
reset_hw();
135-
delay(1000);
136146

137-
138-
while (last_ack!=0x00){
139-
delay(20);
140-
}
141-
142-
delay(2000);
147+
wait_for_ack();
143148

144149
set_illuminator(true);
145150
set_behaviour(BEHAVIOUR_ILLUMINATOR_RISE);
@@ -151,13 +156,52 @@ void Arduino_Alvik::stop(){
151156
set_wheels_speed(0,0);
152157
}
153158

159+
bool Arduino_Alvik::is_on(){
160+
if (digitalRead(CHECK_STM32)==0){
161+
return false;
162+
}
163+
return true;
164+
}
165+
166+
void Arduino_Alvik::idle(){
167+
digitalWrite(NANO_CHK, HIGH);
168+
delay(500);
169+
while(!is_on()){
170+
//read battery value
171+
/*
172+
pinMode(A4, OUTPUT);
173+
pinMode(A5, OUTPUT);
174+
digitalWrite(A4, HIGH);
175+
digitalWrite(A5, HIGH);
176+
delay(100);
177+
digitalWrite(A4, LOW);
178+
digitalWrite(A5, LOW);
179+
delay(100);
180+
Wire.begin();
181+
*/
182+
digitalWrite(LED_GREEN, HIGH);
183+
delay(1000);
184+
digitalWrite(LED_GREEN, LOW);
185+
delay(1000);
186+
}
187+
}
188+
154189

155190
//-----------------------------------------------------------------------------------------------//
156191
// update //
157192
//-----------------------------------------------------------------------------------------------//
158193

159194
void Arduino_Alvik::update(const int delay_value){ //it is private
160195
while (update_task != NULL){
196+
if (!is_on()){
197+
idle();
198+
reset_hw();
199+
uart->flush();
200+
delay(1000);
201+
wait_for_ack();
202+
set_illuminator(true);
203+
set_behaviour(BEHAVIOUR_ILLUMINATOR_RISE);
204+
}
161205
if (read_message()){
162206
parse_message();
163207
}

src/Arduino_Alvik.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class Arduino_Alvik{
8080

8181

8282
void reset_hw(); // reset the robot
83+
void wait_for_ack();
8384

8485
bool read_message(); // return first available packet
8586
int parse_message(); // robot commands logic
@@ -155,6 +156,8 @@ class Arduino_Alvik{
155156

156157
int begin();
157158
void stop();
159+
bool is_on();
160+
void idle();
158161

159162

160163
uint8_t get_ack();

src/definitions.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#define CHECK_STM32 A6
1919
#define BOOT_STM32 D2
2020
#define RESET_STM32 D3
21+
#define NANO_CHK D4
2122
#define UART 0
2223
#define UART_BAUD_RATE 460800
2324

0 commit comments

Comments
 (0)