Project

General

Profile

Revision 1205

Implemented single encoder testing
Cleaned up motor direction/wall direction naming

View differences:

trunk/code/projects/diagnostic_station/station/test_rangefinders.c
1 1
#include "test_rangefinders.h"
2 2
#include "global.h"
3 3

  
4
#include "hardware.h"
5

  
4 6
#include "comm_robot.h"
5 7

  
6
static char *direction_string (uint8_t direction)
7
{
8
	if (direction==1)
9
		return "out";
10
	else if (direction==2)
11
		return "in";
12
	else
13
		return "?";
14
}
15 8

  
16

  
17 9
void test_rangefinder (uint8_t num)
18 10
{
19 11
	if (num>4) return;
......
37 29
		usb_puts ("data rangefinder ");
38 30
		usb_puti (num);
39 31
		usb_puts (" ");
40
		usb_puts (direction_string (direction));
32
		usb_puts (wall_direction_string (direction));
41 33
		usb_puts (" 1/1 2/2 3/3 4/4 5/5 6/6 7/7 8/8" NL);
42 34
	}
43 35
}
trunk/code/projects/diagnostic_station/station/test_motors.c
11 11

  
12 12
static void test_motors_direction_velocity (uint8_t direction1, uint8_t direction2, uint8_t velocity)
13 13
{
14
	uint8_t velocity1=velocity, velocity2=velocity;
15
	
16 14
	robot_set_motors (direction1, velocity, direction2, velocity);
17 15
	delay_ms (vel_delay);
18 16

  
......
26 24
	//	}
27 25
}
28 26

  
29
static char *direction_string (uint8_t direction)
30
{
31
	if (direction==direction_forward)
32
		return "forward";
33
	else if (direction==direction_backward)
34
		return "backward";
35
	else if (direction==direction_off)
36
		return "off";
37
	else
38
		return "?";
39
}
40

  
41 27
static void test_motors_direction (uint8_t direction1, uint8_t direction2)
42 28
{
43 29
	// Use 16 bit variable for vel to avoid problems with overflow (if vel=250 and 10 is added, it would be 260-256=4
......
52 38
	{
53 39
		uint8_t direction=(i==1)?direction1:direction2;
54 40
		
55
		if (direction!=direction_off)
41
		if (direction!=motor_direction_off)
56 42
		{
57 43
			usb_puts ("data motor ");
58 44
			usb_puti (i);
59 45
			usb_puts (" ");
60
			usb_puts (direction_string (direction));
46
			usb_puts (motor_direction_string (direction));
61 47
			usb_puts (" increasing ");
62 48
			usb_puts (" 160/100 170/200 180/300 190/400 200/500 210/600 220/700" NL);
63 49
		}
......
73 59
	{
74 60
		uint8_t direction=(i==1)?direction1:direction2;
75 61

  
76
		if (direction!=direction_off)
62
		if (direction!=motor_direction_off)
77 63
		{
78 64
			usb_puts ("data motor ");
79 65
			usb_puti (i);
80 66
			usb_puts (" ");
81
			usb_puts (direction_string (direction));
67
			usb_puts (motor_direction_string (direction));
82 68
			usb_puts (" decreasing ");
83 69
			usb_puts (" 220/700 210/600 200/500 190/400 180/300 170/200 160/100" NL);
84 70
		}
......
92 78
{
93 79
	usb_puts("# Testing motors" NL);
94 80

  
95
	test_motors_direction (direction_forward, direction_backward);
96
	test_motors_direction (direction_backward, direction_forward);
81
	test_motors_direction (motor_direction_forward, motor_direction_backward);
82
	test_motors_direction (motor_direction_backward, motor_direction_forward);
97 83

  
98 84
	robot_set_motors_off ();
99 85

  
......
104 90
{
105 91
	if (num==1)
106 92
	{
107
		test_motors_direction (direction_forward, direction_off);
108
		test_motors_direction (direction_backward, direction_off);
93
		test_motors_direction (motor_direction_forward, motor_direction_off);
94
		test_motors_direction (motor_direction_backward, motor_direction_off);
109 95
	}
110 96
	else if (num==2)
111 97
	{
112
		test_motors_direction (direction_off, direction_forward);
113
		test_motors_direction (direction_off, direction_backward);
98
		test_motors_direction (motor_direction_off, motor_direction_forward);
99
		test_motors_direction (motor_direction_off, motor_direction_backward);
114 100
	}
115 101
}
trunk/code/projects/diagnostic_station/station/comm_robot.c
8 8
char finished = 0;
9 9
char data_received[10];
10 10

  
11
char *motor_direction_string (uint8_t direction)
12
{
13
	if (direction==motor_direction_forward)
14
		return "forward";
15
	else if (direction==motor_direction_backward)
16
		return "backward";
17
	else if (direction==motor_direction_off)
18
		return "off";
19
	else
20
		return "?";
21
}
22

  
23

  
11 24
static uint8_t motor_direction (uint8_t direction)
12 25
{
13
	if (direction==direction_backward)
26
	if (direction==motor_direction_backward)
14 27
		return BACKWARD;
15 28
	else
16 29
		return FORWARD;
......
18 31

  
19 32
static uint8_t motor_velocity (uint8_t direction, uint8_t velocity)
20 33
{
21
	if (direction==direction_off)
34
	if (direction==motor_direction_off)
22 35
		return 0;
23 36
	else
24 37
		return velocity;
......
65 78
	send_command_packet (station_robot_set_orbs, data, 6);
66 79
}
67 80

  
68
/** Direction is direction_off/direction_forward/direction_backward, not FORWARD/BACKWARD */
81
/** Direction is motor_direction_off/forward/backward, not FORWARD/BACKWARD */
69 82
void robot_set_motors (uint8_t direction1, uint8_t speed1, uint8_t direction2, uint8_t speed2)
70 83
{
71 84
	char data[4];
......
78 91
	send_command_packet (station_robot_set_motors, data, 4);
79 92
}
80 93

  
81
/** Direction is direction_off/direction_forward/direction_backward, not FORWARD/BACKWARD */
94
/** Direction is direction_off/forward/backward, not FORWARD/BACKWARD */
82 95
void robot_set_motors_time (uint8_t direction1, uint8_t speed1, uint8_t direction2, uint8_t speed2, uint16_t time_ms)
83 96
{
84 97
	char data[6];
trunk/code/projects/diagnostic_station/station/test_encoders.c
7 7
#define on_delay 500
8 8
#define off_delay 800
9 9

  
10
static char *direction_string (uint8_t direction)
11
{
12
	if (direction==direction_forward)
13
		return "forward";
14
	else if (direction==BACKWARD)
15
		return "backward";
16
	else
17
		return "?";
18
}
19

  
20 10
static void test_encoders_direction (uint8_t direction1, uint8_t direction2)
21 11
{
22 12
	// reset_encoders ();
......
46 36
	// Send data
47 37
	for (uint8_t i=1; i<=2; ++i)
48 38
	{
49
		usb_puts ("data encoder ");
50
		usb_puti (i);
51
		usb_puts (" ");
52
		usb_puts (direction_string (i==1?direction1:direction2));
53
		usb_puts (" 100/100 200/200 300/300 400/400 500/500 600/600 700/700" NL);
39
		uint8_t direction=(i==1)?direction1:direction2;
40
		
41
		if (direction!=motor_direction_off)
42
		{
43
			usb_puts ("data encoder ");
44
			usb_puti (i);
45
			usb_puts (" ");
46
			usb_puts (motor_direction_string (direction));
47
			usb_puts (" 100/100 200/200 300/300 400/400 500/500 600/600 700/700" NL);
48
		}
54 49
	}
55 50
}
56 51

  
......
58 53
{
59 54
	usb_puts("# Testing encoders" NL);
60 55

  
61
	test_encoders_direction (direction_forward, BACKWARD);
62
	test_encoders_direction (BACKWARD, direction_forward);
56
	test_encoders_direction (motor_direction_forward, motor_direction_backward);
57
	test_encoders_direction (motor_direction_backward, motor_direction_forward);
63 58

  
64 59
	usb_puts("# Testing encoders finished" NL);
65 60
}
66 61

  
67 62
void test_encoder (uint8_t num)
68 63
{
69
	if (!(num==1 || num==2)) return;
70
	
71
	// TODO implement single encoder testing
72
	test_encoder_all ();
64
	if (num==1)
65
	{
66
		test_encoders_direction (motor_direction_forward, motor_direction_off);
67
		test_encoders_direction (motor_direction_backward, motor_direction_off);
68
	}
69
	else if (num==2)
70
	{
71
		test_encoders_direction (motor_direction_off, motor_direction_forward);
72
		test_encoders_direction (motor_direction_off, motor_direction_backward);
73
	}
73 74
}
trunk/code/projects/diagnostic_station/station/comm_robot.h
3 3

  
4 4
void comm_robot_init (void);
5 5

  
6
char *motor_direction_string (uint8_t direction);
6 7

  
7 8
void robot_set_orbs (uint8_t red1, uint8_t green1, uint8_t blue1, uint8_t red2, uint8_t green2, uint8_t blue2);
8 9
void robot_set_motors (uint8_t direction1, uint8_t speed1, uint8_t direction2, uint8_t speed2);
......
11 12
char* robot_read_encoders (void);
12 13
void robot_station_receive(char type, int source, unsigned char* packet, int length);
13 14

  
14
#define direction_off 0
15
#define direction_forward 1
16
#define direction_backward 2
15
#define motor_direction_off 0
16
#define motor_direction_forward 1
17
#define motor_direction_backward 2
17 18

  
18 19

  
19 20
#endif
trunk/code/projects/diagnostic_station/station/hardware_wall.c
5 5
	// FIXME implement
6 6
}
7 7

  
8
char *wall_direction_string (uint8_t direction)
9
{
10
	if (direction==1)
11
		return "out";
12
	else if (direction==2)
13
		return "in";
14
	else
15
		return "?";
16
}
17

  
8 18
void wall_set_position (uint16_t position)
9 19
{
10 20
	usb_puts ("# Moving wall to position ");
trunk/code/projects/diagnostic_station/station/hardware_wall.h
10 10
void wall_set_position (uint16_t position);
11 11
uint16_t wall_get_position (void);
12 12

  
13
char *wall_direction_string (uint8_t direction);
13 14

  
15

  
14 16
#endif

Also available in: Unified diff