//OS permettant l'axxage de Hemisson face à un objet noir sur fond blanc et le suivi de celui ci#include "hemisson.h" //Inclusion de l'header permettant l'acces aux fonctions basiques de Hemisson#include "hemlincam.h" //Inclusion de l'header permettant l'acces aux fonctions de la caméravoid main(void){int i, DebutNoir = 0; // Initialisation du Hemisson hemisson_init(); // On arrète ci-dessous tous les fonctionnement par défaut inutile // Arrêt de la lecture automatique des IRs hemisson_config_auto_refresh_sensors(MANUAL); // Arrêt de la lecture automatique de la télécommande TV hemisson_config_auto_refresh_tv_remote(DISABLE); // Arrêt de la gestion par RS232 du robot hemisson_config_rs232_contro² l(DISABLE); // Arrêt de la gestion par télécommande du robot hemisson_config_tv_remote_control(DISABLE); // Initialisation module, attente apres la mise sous tension du robot HemLinCam_Init(); // On teste la presence du module HemLinCam sinon on sonne 2s if (HemLinCam_Read_Version() != 255) { // Procedure de reglage de la durée d'exposition // Placer un fond clair devant la caméra à 10cm HemLinCam_Set_Exposition_Time(1); while(1) { // Lecture des pixels HemLinCam_Read_Pixels(); DebutNoir = 0; // Recherche du début de la Zone noir for( i = 0 ; i < 34 ; i++ ) { if (HemLinCam_Pixels_Zone2[i] < 100) { DebutNoir = i;// printf("Pixel de debut zone noire : %d\r\n", DebutNoir); break; // on sort de for } } // Debut de la zone noire au centre de la caméra if ((DebutNoir >= 12) && (DebutNoir <= 20)) // Noir au centre { hemisson_led_frontright(1); hemisson_led_frontleft(1); hemisson_set_speed(0, 0); } // Sinon on tourne en fonction de la détection de cette zone noire else if (DebutNoir > 20) { hemisson_led_frontleft(0); hemisson_led_frontright(1); hemisson_set_speed(4, -4); } else if ((DebutNoir < 12) && (DebutNoir > 0)) { hemisson_led_frontright(0); hemisson_led_frontleft(1); hemisson_set_speed(-4, 4); } else { hemisson_set_speed(0, 0); } } } else // Module non détecté ? { hemisson_beep(1); // Buzzer On hemisson_delay_s(2); // Attendre 2s hemisson_beep(0); // Buzzer Off }}