equal
deleted
inserted
replaced
33 SWITCH_HORN2 = 0b00100000, |
33 SWITCH_HORN2 = 0b00100000, |
34 |
34 |
35 SWITCH_MASK = 0b00111100, |
35 SWITCH_MASK = 0b00111100, |
36 }; |
36 }; |
37 |
37 |
|
38 #include "adxl345.h" |
38 #include "debug.h" |
39 #include "debug.h" |
39 #include "relay.h" |
40 #include "relay.h" |
40 #include "serial.h" |
41 #include "serial.h" |
|
42 #include "spi.h" |
41 #include "switch.h" |
43 #include "switch.h" |
42 #include "timer.h" |
44 #include "timer.h" |
43 |
45 |
44 int main (void) |
46 int main (void) |
45 { |
47 { |
|
48 adxl345_init(); |
46 debug_init(); |
49 debug_init(); |
47 relay_init(RELAY_PINS); |
50 relay_init(RELAY_PINS); |
48 serial_init(SERIAL_BAUD_9600, SERIAL_PARITY_N, SERIAL_STOPBITS_1); |
51 serial_init(SERIAL_BAUD_9600, SERIAL_PARITY_N, SERIAL_STOPBITS_1); |
|
52 spi_init(); |
49 switch_init(); |
53 switch_init(); |
50 timer_init(); |
54 timer_init(); |
51 |
55 |
52 // init |
56 // init |
53 char c = '.'; |
57 unsigned char c = '.'; |
54 byte s; |
58 byte s; |
55 unsigned short timeout = 8000; |
59 unsigned short timeout = 8000; |
|
60 int16_t adxl; |
56 |
61 |
57 debug_set(); |
62 debug_set(); |
58 sei(); |
63 sei(); |
59 |
64 |
|
65 adxl345_setup(); |
|
66 |
60 // start |
67 // start |
61 while (true) { |
68 while (true) { |
62 c = s = 0; |
69 c = s = 0; |
|
70 adxl = 0; |
63 |
71 |
64 if (timer_sleep(timeout)) { |
72 if (timer_sleep(timeout)) { |
65 c = '.'; |
73 c = 0; |
66 } else if ((c = serial_read())) { |
74 } else if ((c = serial_read())) { |
67 switch (c) { |
75 switch (c) { |
68 case 'L': relay_open(RELAY_LEFT); break; |
76 case 'L': relay_open(RELAY_LEFT); break; |
69 case 'R': relay_open(RELAY_RIGHT); break; |
77 case 'R': relay_open(RELAY_RIGHT); break; |
70 case 'B': |
78 case 'B': |
76 case 'r': relay_toggle(RELAY_RIGHT); break; |
84 case 'r': relay_toggle(RELAY_RIGHT); break; |
77 case 'b': |
85 case 'b': |
78 relay_close(RELAY_DOWN1); |
86 relay_close(RELAY_DOWN1); |
79 relay_close(RELAY_DOWN2); |
87 relay_close(RELAY_DOWN2); |
80 break; |
88 break; |
|
89 |
|
90 case 'd': c = adxl345_read_devid(); break; |
|
91 case 'x': adxl = adxl345_read_x(); break; |
|
92 case 'y': adxl = adxl345_read_y(); break; |
|
93 case 'z': adxl = adxl345_read_z(); break; |
81 |
94 |
82 default: |
95 default: |
83 c = '!'; |
96 c = '!'; |
84 break; |
97 break; |
85 } |
98 } |
104 } |
117 } |
105 |
118 |
106 // out |
119 // out |
107 debug_toggle(); |
120 debug_toggle(); |
108 |
121 |
109 serial_write(c); |
122 if (c == 'x' || c == 'y' || c == 'z') { |
|
123 int8_t v = adxl / 255; |
|
124 |
|
125 /* |
|
126 if (adxl > 0) |
|
127 serial_write('+'); |
|
128 else if (adxl < 0) |
|
129 serial_write('-'); |
|
130 else |
|
131 serial_write(' '); |
|
132 */ |
|
133 serial_write(v); |
|
134 } else if (c) { |
|
135 serial_write(c); |
|
136 } |
110 } |
137 } |
111 } |
138 } |