Bonjour à tous,
je cherche à créer un programme pour passer de "mode en mode". (Un mode constituant une couleur de LED , un moteur allumé pendant un temps propre au mode choisit).
Maintenant,je souhaite intégré un second bouton qui "force l'arrêt" de ces modes. Seulement, je n'arrive pas à établir de priorité.
GPIOD7-> bouton 1
GPIOD6-> bouton 2
Il s'avère que lors des appuis sur le bouton 1, je passe bien de mode en mode. En revanche lors de l'appui sur le deuxième bouton, je n'arrive pas à tout éteindre. L'idéal, le top du top, serait de tout arrêter lors d'un appui d'au moins 3 secondes sur le bouton1, afin de me passer d'un deuxième bouton.
Voici le code que j'ai écris:
Code:void main (void) { int d=0; bool i = FALSE; int mode; static int StatoIn; int choix=0; CLK_Config(); GPIO_Config(); TIM1_Config(); TIM4_Config(); enableInterrupts(); while(1){ if(GPIO_ReadInputPin(GPIOD, GPIO_PIN_7) == FALSE){ choix++; if(choix>4)choix=0; switch(choix) { case 1: for (d=0;d<20000;d++){ GPIO_WriteHigh(GPIOB,GPIO_PIN_1); GPIO_WriteHigh(GPIOC,GPIO_PIN_1); GPIO_WriteLow(GPIOB,GPIO_PIN_2); GPIO_WriteLow(GPIOB,GPIO_PIN_3); }break; case 2: for (d=0;d<20000;d++){ GPIO_WriteHigh(GPIOC,GPIO_PIN_1); GPIO_WriteHigh(GPIOB,GPIO_PIN_2); GPIO_WriteLow(GPIOB,GPIO_PIN_1); GPIO_WriteLow(GPIOB,GPIO_PIN_3); }break; case 3: for (d=0;d<20000;d++){ GPIO_WriteHigh(GPIOC,GPIO_PIN_1); GPIO_WriteHigh(GPIOB,GPIO_PIN_3); GPIO_WriteLow(GPIOB,GPIO_PIN_1); GPIO_WriteLow(GPIOB,GPIO_PIN_2); }break; case 4: for (d=0;d<20000;d++){ GPIO_WriteHigh(GPIOC,GPIO_PIN_1); GPIO_WriteHigh(GPIOB,GPIO_PIN_3); GPIO_WriteHigh(GPIOB,GPIO_PIN_1); GPIO_WriteHigh(GPIOB,GPIO_PIN_2); }break; } } if(GPIO_ReadInputPin(GPIOD, GPIO_PIN_6) == FALSE){ GPIO_WriteLow(GPIOC,GPIO_PIN_1); GPIO_WriteLow(GPIOB,GPIO_PIN_1); GPIO_WriteLow(GPIOB,GPIO_PIN_2); GPIO_WriteLow(GPIOB,GPIO_PIN_3); } } }
-----