Allumage LED
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Allumage LED



  1. #1
    inviteafdba76f

    Allumage LED


    ------

    Bonjour,
    je souhaite détection un appui sur un bouton poussoir afin d'incrémenter une variable ( choix), la valeur de la variable correspondant à une couleur de LED.
    En clair, un appui, allumage LED verte , 2 ème appui, allumage LED rouge etc...
    Lors de l'appui je passe de 5V à 0, puis de 0 à 5V. Quelle type de détection dois je construire ?
    Pour l'instant j'ai construit mon code tel quel : (Mais si je suis là c'est parce qu'il ne fonctionne pas et que je ne comprends pas mes erreurs). Merci donc à ceux qui m'aideront.
    Code:
    int detection_front_montant(void){
    	static u16 old_state = 0;
    	static int choix; 
    	
    
    u16 new_state = GPIO_ReadInputPin(GPIOD,GPIO_PIN_7);
    if (old_state ==0 && new_state == 1)
        {
        choix++;
        }
    old_state = new_state;
    return choix;		
      }
    
    void main(void)
      {	
    	int d=0;
    	bool i = FALSE;
      CLK_Config();   
    	GPIO_Config();
    	TIM1_Config(); 
    	TIM4_Config();  
    	enableInterrupts();
      
       
    	//wfi();
     detection_front_montant(); 
    
    	if(choix>2)choix=0;
    		switch (choix)
    		{
    		case 0:	 
    		for (d=0;d<2000;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 1:
    		for (d=0;d<2000;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 2: 
    		for (d=0;d<2000;d++){
    				GPIO_WriteHigh(GPIOC,GPIO_PIN_1);
    				GPIO_WriteHigh(GPIOB,GPIO_PIN_3);
    			  GPIO_WriteLow(GPIOB,GPIO_PIN_2);
    			  GPIO_WriteLow(GPIOB,GPIO_PIN_1);
    		  	} break;
    		
    		} 
    	
    	}

    -----

  2. #2
    invite1c6b0acc

    Re : Allumage LED

    Déjà, évite les doublons : ça va être super difficile si tu ouvres en parallèle différentes discussions pour parler des différentes modifs de ton programme ...

    Je n'ai absolument rien compris a tes modifications :
    Tu as supprimé la boucle du main(). Donc il va s'exécuter une fois et s'arrêter.
    Tu regardes une seule fois s'il y a un front montant, mais tu ne fait rien du résultat.
    A quoi peut-il bien servir qu'une fonction retourne une valeur, si tu ne t'en sers pas ?

    Tu devrais commencer par écrire clairement l'algorithme que tu essaies de développer, dans un langage que tu maîtrises (français, pseudo-code ou chinois littéraire, peu importe). Comme ça, tu sauras déjà ce que tu VEUX faire. Après tu pourras voir COMMENT le faire.

    Mais faire des motifs au hasard en espérant que ça tombe en marche ... disons que ça a très peu de chances d'aboutir.

  3. #3
    inviteafdba76f

    Re : Allumage LED

    "Tu as supprimé la boucle du main()" C'est à dire?
    Je croyai avoir compris que la fonction allait être rappellée à chaque nouvel appui, incrémentant choix de 1, et donc passant dans une autre mode. Je pensai donc faire quelquechose du résultat.
    Merci Charnur

  4. #4
    inviteafdba76f

    Re : Allumage LED

    En effet, j'avais supprimé la boucle while. Elle doit comporter la fonction d'interruption, et l'allumage des LEDS en fonction du nombre d'appui, non ?

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Réponses: 13
    Dernier message: 29/03/2013, 23h36
  2. allumage ht
    Par invite190f5a69 dans le forum Électronique
    Réponses: 0
    Dernier message: 17/01/2012, 20h01
  3. [Blanc] Pas d'allumage TV JVC
    Par invite908e7269 dans le forum Dépannage
    Réponses: 0
    Dernier message: 14/11/2009, 18h18
  4. pb allumage pc
    Par inviteddae56c8 dans le forum Matériel - Hardware
    Réponses: 4
    Dernier message: 27/09/2007, 08h04
  5. allumage led une à une
    Par invite5d8dbc3d dans le forum Électronique
    Réponses: 22
    Dernier message: 25/10/2006, 21h27