For Contest
Dependencies: BLE_API HCSR04 X_NUCLEO_IDB0XA1 mbed
Fork of contest_IOT6 by
Diff: main.cpp
- Revision:
- 3:6bcdaa2636ec
- Parent:
- 2:35466dfc81fe
- Child:
- 4:ed21ec4a79ad
--- a/main.cpp Sun Oct 11 11:18:29 2015 +0000 +++ b/main.cpp Wed Oct 14 08:58:18 2015 +0000 @@ -1,13 +1,10 @@ #include "mbed.h" -#include "hcsr04.h" -#include "contest.h" -#include <math.h> +#include "HCSR04.h" -#define ECHO_1 PB_9 -#define ECHO_2 PA_5 -#define TRIG_1 PB_8 -#define TX PA_2 -#define RX PA_3 +#define ECHO_1 PA_8 +#define ECHO_2 PB_4 +#define TRIG_1 PB_10 +#define TRIG_2 PB_5 #define PUSH USER_BUTTON //PC_13 #define LED_1 LED1 @@ -17,45 +14,117 @@ //------------------------------------ -Serial pc(TX, RX); //UART +Serial pc(USBTX, USBRX); //UART DigitalOut led(LED_1); //Led d'état InterruptIn button(PUSH); //Bouton d'interruption -HCSR04 sensor(TRIG_1, ECHO_1); -Control ctrl; +HCSR04 sensor1(TRIG_1, ECHO_1); +HCSR04 sensor2(TRIG_2, ECHO_2); + +void pong_init(){ -void changeEtat(){ - pc.printf("\033[2J"); //Efface la console - ctrl.marcheArret(); + pc.printf("\033[2J"); //Efface la console + pc.printf("\033[?25l"); //Cache le curseur + + for(int i=0; i <= 128 ; i++){ + pc.printf("\033[0;%dH",i); //Place le curseur à 0:0 + pc.printf("X"); //Place le curseur à 0:0 + pc.printf("\033[32;%dH",i); //Place le curseur à 0:0 + pc.printf("X"); //Place le curseur à 0:0 + } + + for(int i=0; i <= 32 ; i++){ + pc.printf("\033[%d;0H",i); //Place le curseur à 0:0 + pc.printf("X"); //Place le curseur à 0:0 + pc.printf("\033[%d;128H",i); //Place le curseur à 0:0 + pc.printf("X"); //Place le curseur à 0:0 + } + } -float distancePrec=0; - - int main() { - float distance; - pc.printf("\033[2J"); //Efface la console - pc.printf("\033[0;0H"); //Place le curseur à 0:0 - pc.printf("\033[?25l"); //Cache le curseur - //pc.printf("\033[?25h"); //Affiche le curseur - pc.printf("Initialisation... "); + int distance1; + int distance2; + int pos1prec[30]; + int pos2prec[30]; + int pos1[30]; + int pos2[30]; + + pc.baud(115200); + pong_init(); + wait(1); + //Initialisation de l'interruption : en appuyant sur le bouton bleu de la carte, le programme change d'état - //Initialisation de l'interruption : en appuyant sur le bouton bleu de la carte, le programme change d'état - button.fall(&changeEtat); - - pc.printf("Ready !\n\r"); //Boucle d'exécution du programme while(1) { - if(ctrl.isActive()){ led=1; - distance = sensor.distance(); //Mesure de la distance - print_distance(distance, distancePrec); //Affichage à l'écran - distancePrec=distance; //Mise en mémoire - }else{ - led=0; - } - wait(0.001); + for(int i=0; i<=29; i++){ + pos1prec[i]= pos1[i]; + pos2prec[i]= pos2[i]; + pos1[i]= 0; + pos2[i]= 0; + } + distance1 = sensor1.distance(1); //Mesure de la distance + distance2 = sensor2.distance(1); //Mesure de la distance + + if(distance1 <= 10){ + for(int i=0;i<=5;i++){ + pos1[i] = 1; + } + } + else if(distance1 >= 34){ + for(int i=24;i<=29;i++){ + pos1[i] = 1; + } + } + else{ + for(int i=(distance1-10);i<=(distance1-4);i++){ + pos1[i] = 1; + } + } + + + if(distance2 <= 10){ + for(int i=0;i<=5;i++){ + pos2[i] = 1; + } + } + else if(distance2 >= 34){ + for(int i=24;i<=29;i++){ + pos2[i] = 1; + } + } + else{ + for(int i=(distance2-10);i<=(distance2-4);i++){ + pos2[i] = 1; + } + } + + for(int i=0;i<=29;i++){ + if( pos1[i] != pos1prec[i] ){ + if(pos1[i] == 1){ + pc.printf("\033[%d;3H",i+2); //Place le curseur à 0:0 + pc.printf("X"); //Place le curseur à 0:0 + } + else{ + pc.printf("\033[%d;3H",i+2); //Place le curseur à 0:0 + pc.printf(" "); //Place le curseur à 0:0 + } + } + if( pos2[i] != pos2prec[i] ){ + if(pos2[i] == 1){ + pc.printf("\033[%d;126H",i+2); //Place le curseur à 0:0 + pc.printf("X"); //Place le curseur à 0:0 + } + else{ + pc.printf("\033[%d;126H",i+2); //Place le curseur à 0:0 + pc.printf(" "); //Place le curseur à 0:0 + } + } + } + wait(0.1); } } + \ No newline at end of file