diff options
Diffstat (limited to 'robot')
| -rw-r--r-- | robot/mode_scal.c | 17 | ||||
| -rw-r--r-- | robot/mode_spin.c | 3 | ||||
| -rw-r--r-- | robot/modes.c | 1 | ||||
| -rw-r--r-- | robot/readme.md | 8 | ||||
| -rw-r--r-- | robot/sercomm.c | 6 | 
5 files changed, 19 insertions, 16 deletions
| diff --git a/robot/mode_scal.c b/robot/mode_scal.c index f3178d7..53cbf67 100644 --- a/robot/mode_scal.c +++ b/robot/mode_scal.c @@ -1,19 +1,20 @@  #include "mode_scal.h" +#include "modes.h" +#include "orangutan_shim.h"  void w2_mode_scal() { -	// TODO ??? -	/* pololu_3pi_init(2000); +	pololu_3pi_init(2000);  	for (int counter = 0; counter < 80; counter++) {  		if (counter < 20 || counter >= 60) { -			g_w2_io.motor_left.speed  = 40; -			g_w2_io.motor_right.speed = -40; +			set_motors(40, -40);  		} else { -			g_w2_io.motor_left.speed  = -40; -			g_w2_io.motor_right.speed = 40; +			set_motors(-40, 40);  		}  		calibrate_line_sensors(IR_EMITTERS_ON); -		delay_ms(20); // TODO foei -	} */ +		delay_ms(20); +	} + +	w2_modes_call(W2_M_PREV);  } diff --git a/robot/mode_spin.c b/robot/mode_spin.c index 9145eb3..9ee83b0 100644 --- a/robot/mode_spin.c +++ b/robot/mode_spin.c @@ -1,3 +1,4 @@  #include "mode_spin.h" +#include "orangutan_shim.h" -void w2_mode_spin() {} +void w2_mode_spin() { set_motors(255, -255); } diff --git a/robot/modes.c b/robot/modes.c index 7decf47..fd062a8 100644 --- a/robot/modes.c +++ b/robot/modes.c @@ -22,7 +22,6 @@ void w2_modes_init() {  	g_w2_modes[W2_M_DIRC] = &w2_mode_dirc;  	g_w2_modes[W2_M_GRID] = &w2_mode_grid;  	g_w2_modes[W2_M_HALT] = &w2_mode_halt; -	g_w2_modes[W2_M_LCAL] = &w2_mode_lcal;  	g_w2_modes[W2_M_MAZE] = &w2_mode_maze;  	g_w2_modes[W2_M_SCAL] = &w2_mode_scal;  	g_w2_modes[W2_M_SPIN] = &w2_mode_spin; diff --git a/robot/readme.md b/robot/readme.md index f54af21..e8316e3 100644 --- a/robot/readme.md +++ b/robot/readme.md @@ -50,8 +50,7 @@ organizational and form more of a software 'skeleton', while the 'maze' and                                                            Maze ─┤                                                       Warehouse ─┤                                                  Emergency stop ─┤ -                        *logic modes* ->          Line finding ─┤ -                                                Charge station ─┤ +                          *logic modes* ->      Charge station ─┤                                                  Direct control ─┤                                                       Wet floor ─┤                                              Sensor calibration ─┘ @@ -74,11 +73,10 @@ what they're supposed to do:  |maze              |`mode_maze  `|done|Jorn & Abdullaahi| controls robot during maze portion of map; hands off control to warehouse module|  |warehouse         |`mode_grid  `|may 31|Loek| controls robot during warehouse portion of map; hands off control to maze module|  |emergency stop    |`mode_halt  `|done|Fiona| stops all execution until emergency mode is reset by software or user| -|line finding      |`mode_lcal  `|may 31|Fiona| find line by turning on own axis if lost|  |charge station    |`mode_chrg  `|may 31|Fiona| go to the charging station transition in the grid, and continue until a black circle is found|  |direct control    |`mode_dirc  `|done|Loek| respond to [DIRC](../protocol.md#DIRC) commands| -|wet floor         |`mode_spin  `|may 31|Fiona| spin uncontrollably (simulating wet floor??)| -|sensor calibration|`mode_scal  `|may 31|Jorn & Abdullaahi| calibrate underside uv sensors| +|wet floor         |`mode_spin  `|done|Fiona| spin uncontrollably (simulating wet floor??)| +|sensor calibration|`mode_scal  `|done|Jorn & Abdullaahi| calibrate underside uv sensors|  ## some standards diff --git a/robot/sercomm.c b/robot/sercomm.c index c50dd15..f52eb7e 100644 --- a/robot/sercomm.c +++ b/robot/sercomm.c @@ -99,7 +99,11 @@ void w2_cmd_ping_rx(w2_s_bin *data) { w2_sercomm_append_msg(data); }  void w2_cmd_mode_rx(w2_s_bin *data) {  	W2_CAST_BIN(w2_s_cmd_mode_rx, data, req); -	w2_modes_swap(req->mode); +	if (req->mode == W2_M_SCAL) { +		w2_modes_call(req->mode); +	} else { +		w2_modes_swap(req->mode); +	}  }  void w2_cmd_sped_rx(w2_s_bin *data) { return; } |