Bonjour à la communauté,
je suis bloqué depuis quelques heures sur un problème. En effet, je souhaite commander par microprocesseur, la vitesse d'un moteur et un temps de marche avec une LED et une couleur affecté par mode ( Ex LED rouge correspond à grande vitesse et 4 min en ON). Le choix des modes doit se faire par bouton poussoir. J'ai su gérer l'interruption mais j'ai deux soucis :
- Lors de l'appui sur le bouton poussoir, les 4 choix (indiqué par la couleur de la led) défilent trop vite, et je tombe au hasard sur une couleur lors du relachement. Le moteur se lance, et je dois attendre le temps.
-Le second problème découle du second, lorsqu'un mode est lancé, j'aimerai pouvoir après appui sur mon bouton changer de mode.
Je remercie beaucoup par avance ceux qui prendront le temps de m'aider. J'espère avoir été clair. Je vous mets le morceau de code correspondant à l'interruption ci dessous: ( StatoIn==0 correspond à une détection de l'appui bouton)
Code:if(StatoIn1==0){ if(mode>4)mode=0; switch (mode){ case 1: for(d=0;d<20000;d++){ //20000 -> 1 secondes GPIO_WriteHigh(GPIOB,GPIO_PIN_1); GPIO_WriteHigh(GPIOC,GPIO_PIN_1); } GPIO_WriteLow(GPIOB,GPIO_PIN_1); GPIO_WriteLow(GPIOC,GPIO_PIN_1); break; case 2: for(d=0;d<20000;d++){ //20000 -> 1 secondes GPIO_WriteHigh(GPIOB,GPIO_PIN_2); GPIO_WriteHigh(GPIOC,GPIO_PIN_1); } GPIO_WriteLow(GPIOB,GPIO_PIN_2); GPIO_WriteLow(GPIOC,GPIO_PIN_1); break; case 3: for(d=0;d<20000;d++){ //20000 -> 1 secondes GPIO_WriteHigh(GPIOB,GPIO_PIN_3); GPIO_WriteHigh(GPIOC,GPIO_PIN_1); } GPIO_WriteLow(GPIOB,GPIO_PIN_3); GPIO_WriteLow(GPIOC,GPIO_PIN_1); break; case 4: for(d=0;d<20000;d++){ //20000 -> 1 secondes GPIO_WriteHigh(GPIOB,GPIO_PIN_1); GPIO_WriteHigh(GPIOB,GPIO_PIN_2); GPIO_WriteHigh(GPIOB,GPIO_PIN_3); GPIO_WriteHigh(GPIOC,GPIO_PIN_1); } GPIO_WriteLow(GPIOB,GPIO_PIN_1); GPIO_WriteLow(GPIOB,GPIO_PIN_2); GPIO_WriteLow(GPIOB,GPIO_PIN_3); GPIO_WriteLow(GPIOC,GPIO_PIN_1); break; }//StatoIn1==1; } }
-----