Commit db0bdba2403451e2f7ba770fac857cb1e21629b4
1 parent
48fa7247
boutons+joy OK
Showing
1 changed file
with
55 additions
and
44 deletions
Show diff stats
1 | #include <avr/io.h> // for the input/output register | 1 | #include <avr/io.h> // for the input/output register |
2 | +#include <util/delay.h> | ||
2 | 3 | ||
3 | // For the serial port | 4 | // For the serial port |
4 | 5 | ||
5 | #define CPU_FREQ 16000000L // Assume a CPU frequency of 16Mhz | 6 | #define CPU_FREQ 16000000L // Assume a CPU frequency of 16Mhz |
7 | +#define tempo 25 | ||
8 | +#define debit 9600 //débit liaison série en bauds | ||
6 | 9 | ||
7 | void init_serial(int speed) | 10 | void init_serial(int speed) |
8 | { | 11 | { |
@@ -49,23 +52,26 @@ return ADCH; | @@ -49,23 +52,26 @@ return ADCH; | ||
49 | 52 | ||
50 | // For the I/O | 53 | // For the I/O |
51 | void output_init(void){ | 54 | void output_init(void){ |
52 | -DDRB |= 0b00111111; // PIN 8-13 as output | 55 | +DDRB |= 0b00111111; // PIN 8-13 as output (LED) |
53 | } | 56 | } |
54 | 57 | ||
58 | +/* | ||
55 | void output_set(unsigned char value){ | 59 | void output_set(unsigned char value){ |
56 | if(value==0) PORTB &= 0xfe; else PORTB |= 0x01; | 60 | if(value==0) PORTB &= 0xfe; else PORTB |= 0x01; |
57 | } | 61 | } |
62 | +*/ | ||
58 | 63 | ||
59 | void input_init(void){ | 64 | void input_init(void){ |
60 | -DDRD |= 0b01111100; // PIN 2-6 as input (Bouton Joystick + boutons) | ||
61 | -DDRC |= 0x03; // PIN 0-1 analogiques comme input (x et y joystick analogique) | 65 | + DDRD &= 0b10000011; // PIN 2-6 as input (Bouton Joystick + boutons) |
66 | + PORTD |= 0x7C; // Pull up de 0 à 1 | ||
67 | + //DDRC &= 0b11111100; // PIN 0-1 analogiques comme input (x et y joystick) | ||
62 | } | 68 | } |
63 | 69 | ||
64 | -/* | 70 | + |
65 | unsigned char input_get(void){ | 71 | unsigned char input_get(void){ |
66 | return ((PIND&0x04)!=0)?1:0; | 72 | return ((PIND&0x04)!=0)?1:0; |
67 | } | 73 | } |
68 | -*/ | 74 | + |
69 | 75 | ||
70 | /* Commande des LED */ | 76 | /* Commande des LED */ |
71 | void commande_leds(){ | 77 | void commande_leds(){ |
@@ -92,84 +98,89 @@ void commande_leds(){ | @@ -92,84 +98,89 @@ void commande_leds(){ | ||
92 | } | 98 | } |
93 | 99 | ||
94 | /* Récupération de la valeur des boutons et mise en forme */ | 100 | /* Récupération de la valeur des boutons et mise en forme */ |
95 | -int get_buttons(void){ | ||
96 | - unsigned boutons = ((PIND & 0x7C)>>2) | 0b00100000; | ||
97 | - return(boutons); | 101 | +unsigned char get_buttons(void){ |
102 | + //unsigned char boutons = (((PIND & 0x7C)>>2) &0x3f) | 0b00100000; | ||
103 | + unsigned char boutons = PIND; | ||
104 | + boutons = boutons >>2; | ||
105 | + boutons = boutons & 0b00111111; | ||
106 | + boutons = boutons | 0b00100000; | ||
107 | + | ||
108 | + return boutons; | ||
98 | } | 109 | } |
99 | 110 | ||
100 | /* Met en forme l'octet de l'axe pos du joystick */ | 111 | /* Met en forme l'octet de l'axe pos du joystick */ |
101 | -int shape_joy(unsigned char pos){ | ||
102 | - pos = (pos >> 3) | 0b00100000; | ||
103 | - return(pos); | 112 | +unsigned char shape_joy(unsigned char pos){ |
113 | + //pos = ((pos >> 3) | &0b00111111) 0b00100000; | ||
114 | + pos = pos >>3; | ||
115 | + pos = pos & 0b00111111; | ||
116 | + pos = pos | 0b00100000; | ||
117 | + return pos; | ||
104 | } | 118 | } |
105 | 119 | ||
106 | /* Récupération de la valeur de l'axe du joystick sur la chaîne channel du CAN */ | 120 | /* Récupération de la valeur de l'axe du joystick sur la chaîne channel du CAN */ |
107 | -int get_joystick(int channel){ | 121 | +unsigned char get_joystick(int channel){ |
108 | unsigned char axis; | 122 | unsigned char axis; |
109 | ad_init(channel); | 123 | ad_init(channel); |
110 | axis = ad_sample(); | 124 | axis = ad_sample(); |
111 | - shape_joy(axis); | ||
112 | - return(axis); | 125 | + axis = shape_joy(axis); |
126 | + return axis; | ||
113 | } | 127 | } |
114 | 128 | ||
115 | /* Dummy main */ | 129 | /* Dummy main */ |
116 | int main(void){ | 130 | int main(void){ |
117 | - init_serial(9600); | 131 | + |
132 | + //INITIALISATIONS | ||
133 | + unsigned char boutons, boutons_anc; | ||
134 | + unsigned char joystick_x=0x10, joystick_x_anc=0x10; | ||
135 | + unsigned char joystick_y=0x10, joystick_y_anc=0x10; | ||
136 | + | ||
137 | + init_serial(debit); | ||
118 | output_init(); | 138 | output_init(); |
119 | input_init(); | 139 | input_init(); |
120 | - | ||
121 | - unsigned char boutons, boutons_anc; | ||
122 | - unsigned char joystick_x, joystick_x_anc; | ||
123 | - unsigned char joystick_y, joystick_y_anc; | ||
124 | 140 | ||
125 | //Récupération des valeurs des boutons et joystick, et mise en forme | 141 | //Récupération des valeurs des boutons et joystick, et mise en forme |
126 | boutons = get_buttons(); | 142 | boutons = get_buttons(); |
127 | - joystick_x = get_joystick(1); | ||
128 | - joystick_y = get_joystick(0); | ||
129 | - | ||
130 | - //send_serial(boutons); | 143 | + joystick_x = get_joystick(0); |
144 | + joystick_y = get_joystick(1); | ||
131 | 145 | ||
132 | while(1){ | 146 | while(1){ |
133 | - | ||
134 | boutons_anc = boutons; | 147 | boutons_anc = boutons; |
135 | joystick_x_anc = joystick_x; | 148 | joystick_x_anc = joystick_x; |
136 | joystick_y_anc = joystick_y; | 149 | joystick_y_anc = joystick_y; |
137 | 150 | ||
138 | //Récupération des valeurs des boutons et joystick, et mise en forme | 151 | //Récupération des valeurs des boutons et joystick, et mise en forme |
139 | boutons = get_buttons(); | 152 | boutons = get_buttons(); |
140 | - joystick_x = get_joystick(1); | ||
141 | - joystick_y = get_joystick(0); | ||
142 | - | ||
143 | - | ||
144 | - send_serial(boutons+2); | ||
145 | - //retour chariot | ||
146 | - send_serial(0x0a); | ||
147 | - send_serial(0x0d); | 153 | + joystick_x = get_joystick(0); |
154 | + _delay_ms(tempo); | ||
155 | + joystick_y = get_joystick(1); | ||
156 | + | ||
148 | 157 | ||
149 | - //Cas où aucun caractère n'est reçu | 158 | + //Port série libre |
150 | if ((UCSR0A & (1<<RXC0)) == 0){ | 159 | if ((UCSR0A & (1<<RXC0)) == 0){ |
151 | 160 | ||
152 | //if (boutons_anc != boutons){ | 161 | //if (boutons_anc != boutons){ |
162 | + //if (joystick_x_anc != joystick_x){ | ||
153 | //if (joystick_y_anc != joystick_y){ | 163 | //if (joystick_y_anc != joystick_y){ |
154 | - //if ((boutons_anc != boutons) || (joystick_x_anc != joystick_x) || (joystick_y_anc != joystick_y)){ | ||
155 | - //send_serial(boutons); | ||
156 | - //send_serial(joystick_y); | ||
157 | - //send_serial(joystick_y); | 164 | + if ((boutons_anc != boutons) || (joystick_x_anc != joystick_x) || (joystick_y_anc != joystick_y)){ |
165 | + send_serial(boutons); | ||
166 | + //if ((joystick_x > 126) || (joystick_x <33)) send_serial('e'); | ||
167 | + send_serial(joystick_x); | ||
168 | + send_serial(joystick_y); | ||
158 | 169 | ||
159 | //send_serial('r'); | 170 | //send_serial('r'); |
160 | 171 | ||
161 | //retour chariot | 172 | //retour chariot |
162 | - //send_serial(0x0a); | ||
163 | - //send_serial(0x0d); | ||
164 | - //} | ||
165 | - } | 173 | + send_serial(0x0a); |
174 | + send_serial(0x0d); | ||
175 | + } | ||
166 | 176 | ||
177 | + } | ||
178 | + | ||
179 | + //Port série occupé | ||
167 | else{ | 180 | else{ |
168 | - //Cas où un caractère attent d'être reçu | ||
169 | commande_leds(); | 181 | commande_leds(); |
170 | } | 182 | } |
171 | - } | ||
172 | - | 183 | + } |
173 | return 0; | 184 | return 0; |
174 | } | 185 | } |
175 | 186 |