[Programmation] Module Emetteur-Récepteur Arduino LED
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Module Emetteur-Récepteur Arduino LED



  1. #1
    JS7777

    Module Emetteur-Récepteur Arduino LED


    ------

    Bonjour à tous,

    J'ai trouvé sur internet le code pour allumer une LED à distance avec un bouton avec des modules émetteur-récepteur :
    http://www.aliexpress.com/item/1Lot-.../968306683.htm

    Ce code permet d'allumer une LED quand on appuie sur le bouton et quand on relache la LED s'éteint :

    Code émetteur :

    Code:
    #include <VirtualWire.h> // librairie VirtualWire
    
    #define TxPin 12 // entrée de l'Arduino où est branché l'émetteur
    #define bouton1 2
    
    
    int Nombre;
    
    char Message[VW_MAX_MESSAGE_LEN]; 
    
    
    void setup()
    {
      vw_setup(2000);        // Bits par seconde
    
      pinMode(bouton1, INPUT); 
      digitalWrite(bouton1, HIGH);  // pull up interne
      
    
    
    
    }
    
    void loop()
    {  
      if (digitalRead(bouton1)){
        Nombre = 1;
      }
    
      else
      { 
        Nombre = 4;
      }
    
      // convertion de l'int en tableau de char 
      itoa(Nombre,Message,10);  // 10 car décimal
    
      vw_send((uint8_t *)Message, strlen(Message));
      vw_wait_tx(); // Wait until the whole message is gone
      delay(200); 
    
    }
    Code récepteur :

    Code:
    #include <VirtualWire.h>
    
    #define LED1 2
    
    int Nombre;
    
    char Message[VW_MAX_MESSAGE_LEN]; 
    
    void setup() {     
    
      vw_setup(2000);   // Bits par seconde   
    
      vw_rx_start();       
    pinMode(LED1, OUTPUT);     
    }
    
    void loop(){
      uint8_t buf[VW_MAX_MESSAGE_LEN];
      uint8_t buflen = VW_MAX_MESSAGE_LEN;
    
      if (vw_get_message(buf, &buflen)) 
      {
        int i;
    
        for (i = 0; i < buflen; i++)
        {               
          Message[i] = char(buf[i]);
        }
    
        Message[buflen] = '\0';
    
        // Conversion du tableau de chars en int:
        Nombre = atoi(Message);
    
        if (Nombre == 1){
          digitalWrite (LED1,HIGH);
        }
        
        if (Nombre == 4){
          digitalWrite (LED1,LOW);
        }
      }
    }
    J'aimerais modifier le code pour que quand on appuie sur le bouton la LED s'allume et quand on réappuie sur le même bouton la LED s'éteint.

    Je n'ai pas trouvé sur internet

    Si quelqu'un peut m'aider

    Merci d'avance

    -----
    Dernière modification par JS7777 ; 09/01/2016 à 15h20.
    Ce que les entreprises jettent : Du matériel neuf

  2. #2
    JS7777

    Re : Module Emetteur-Récepteur Arduino LED

    J'ai essayé avec ce code en l'incrustant dans le code de L'émetteur mais j'ai pas réussi :


    Code pour allumer une led avec un bouton, si on appuie une deuxième fois sur le même bouton la led s'éteint :

    Code:
    int switchPin = 10;
    int ledPin = 11;
    boolean lastButton = LOW;
    boolean currentButton = LOW;
    boolean ledOn = false;
    
    void setup()
    {
      pinMode(switchPin, INPUT);
      pinMode(ledPin, OUTPUT);
    }
    
    boolean debounce(boolean last)
    {
      boolean current = digitalRead(switchPin);
      if (last != current)
      {
        delay(5);
        current = digitalRead(switchPin);
      }
      return current;
    }
    
    void loop()
    {
      currentButton = debounce(lastButton);
      if (lastButton == LOW && currentButton == HIGH)
      {
        ledOn = !ledOn;
      }
      lastButton = currentButton;
      
      digitalWrite(ledPin, ledOn);
    
    }
    Dernière modification par JS7777 ; 10/01/2016 à 14h40.
    Ce que les entreprises jettent : Du matériel neuf

  3. #3
    Ikhar84
    Animateur Informatique

    Re : Module Emetteur-Récepteur Arduino LED

    Code:
    void loop()
    {  
      if (digitalRead(bouton1)){
        Nombre = 1;
      }
    
      else
      { 
        Nombre = 4;
      }
    
      // convertion de l'int en tableau de char 
      itoa(Nombre,Message,10);  // 10 car décimal
    
      vw_send((uint8_t *)Message, strlen(Message));
      vw_wait_tx(); // Wait until the whole message is gone
      delay(200); 
    
    }
    Cette partie de code envoi 1 a l'appui du bouton et 4 à son relachement, non?
    Si on cherche à detecter un deuxième appui, on peut ignorer le fait de relacher le bouton, je pense...

    Et tester la valeur envoyée précedemment et la changer...
    Code:
    #include <VirtualWire.h> // librairie VirtualWire
    
    #define TxPin 12 // entrée de l'Arduino où est branché l'émetteur
    #define bouton1 2
    
    
    int Nombre = 4; // led eteinte par défaut
    
    char Message[VW_MAX_MESSAGE_LEN]; 
    
    
    void setup()
    {
      vw_setup(2000);        // Bits par seconde
    
      pinMode(bouton1, INPUT); 
      digitalWrite(bouton1, HIGH);  // pull up interne
    }
    
    void loop()
    {  
      if (digitalRead(bouton1)){
         if Nombre == 1 {
             Nombre = 4;
         } else {
             Nombre = 1;
         }
         //ou la même en ternaire:
         // Nombre = (Nombre == 1) ? 4 : 1;
      }
    
      // convertion de l'int en tableau de char 
      itoa(Nombre,Message,10);  // 10 car décimal
    
      vw_send((uint8_t *)Message, strlen(Message));
      vw_wait_tx(); // Wait until the whole message is gone
      delay(200);
    Avec des constantes pour 1 et 4 ce serait même plus propre...
    Par contre pas j'ai pas tenté de compiler le code...

    (Désolé pour le déterrage... je viens de voir la date...)

  4. #4
    Ikhar84
    Animateur Informatique

    Re : Module Emetteur-Récepteur Arduino LED

    Et remonter le
    Code:
      vw_send((uint8_t *)Message, strlen(Message));
      vw_wait_tx(); // Wait until the whole message is gone
      delay(200);
    A l'intérieur (à la toute fin...) du
    Code:
    if (digitalRead(bouton1)){
    }
    De manière à n'envoyer un message au recepteur que en cas de changement d'etat...
    Sinon l'emetteur envoi la valeur de Nombre tant que la boucle loop() s'execute...

  5. A voir en vidéo sur Futura
  6. #5
    JS7777

    Re : Module Emetteur-Récepteur Arduino LED

    Bonjour,

    Merci, je testerai ce week-end si je retrouve l'émetteur et le récepteur
    Ce que les entreprises jettent : Du matériel neuf

Discussions similaires

  1. arduino - émetteur récepteur HF 433Mhz
    Par invite523c7600 dans le forum Électronique
    Réponses: 12
    Dernier message: 14/04/2015, 10h55
  2. Module recepteur/emetteur AM
    Par invite5d1bc976 dans le forum Électronique
    Réponses: 4
    Dernier message: 26/11/2008, 15h45
  3. HF:module emetteur recepteur
    Par invite8d759c41 dans le forum Électronique
    Réponses: 1
    Dernier message: 03/04/2007, 18h05
  4. Module émetteur récepteur
    Par invite3a83a595 dans le forum Électronique
    Réponses: 11
    Dernier message: 20/02/2007, 18h06
  5. Urgent : module émetteur/récepteur
    Par invitec55d8970 dans le forum Électronique
    Réponses: 5
    Dernier message: 29/01/2007, 21h08
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...