/* David Delfieu : squelette de programme TP1 SETR (01/2022) */ #include #include #include #include #include //usleep #define DELAY 1000 /*Définition des PINs GPIO du Raspberry*/ #define PIN1 2 //wiringPi 2 correspond physiquement à pin 13 et GPIO 27 #define PIN2 5 //wiringPi 5 correspond physiquement à pin 18 et GPIO 24 #define PIN3 6 //wiringPi 6 correspond physiquement à pin 22 et GPIO 25 #define PIN4 25 //wiringPi 25 correspond physiquement à pin 37 et GPIO 26 /* Entetes des fonctions du fichier */ extern int usleep(); int init(); int ecrit(int val); int question1(void); int menu(); int tourner(); void test2threads(); void *fils1(void *arg); void *fils2(void *arg); /* variables globales */ int tabBinaire[16][4]= {{0,0,0,0},{0,0,0,1},{0,0,1,0},{0,0,1,1},{0,1,0,0},{0,1,0,1},{0,1,1,0},{0,1,1,1},{1,0,0,0},{1,0,0,1},{1,0,1,0},{1,0,1,1},{1,1,0,0},{1,1,0,1},{1,1,1,0},{1,1,1,1}}; int pasEntier[4]= {1,2,4,8}; int demiPAS[8]= {1,3,2,6,4,12,8,9}; int S=0,V=0,Q=0; void scan(int *x) { char b; scanf("%d",x); b=getchar(); } void scanc(char *x) { char b; *x =getchar(); b=getchar(); } /********************************************************/ /* Fonction initialisation carte Raspberry Pi4 */ /********************************************************/ int init() { wiringPiSetup(); pinMode(PIN1, OUTPUT); pinMode(PIN2, OUTPUT); pinMode(PIN3, OUTPUT); pinMode(PIN4, OUTPUT); } /**************Main******************/ int main(void) { init(); return(0); } /***********Sous programmes************/ /* Fonction d'écriture sur les pins GPIOs */ int ecrit(int val) { digitalWrite(PIN1,tabBinaire[val][0]); digitalWrite(PIN2,tabBinaire[val][1]); digitalWrite(PIN3,tabBinaire[val][2]); digitalWrite(PIN4,tabBinaire[val][3]); } int question1(void) { /* utiliser la fonction ecrit pour ecrire sur le port GPIO : ecrit(5) allume la led 0 et la led 4 */ /* usleep fonction en micro-secondes et sa tempo minimale est 15 millisecondes */ } /************** Exemple d'application a 2 threads *****************/ /* a tester dans le main avant de passer à la question 2 */ void test2threads() { int i; pthread_t pid1,pid2; printf("fils1\n"); pthread_create(&pid1, NULL, fils1,NULL); pthread_create(&pid2, NULL, fils2,NULL); for (i=0; i