Arduino + ATtiny85 via virtualWire.

Bonjour,

Je voudrais pouvais allumée une LED à distance et sans fil en passant par la librairie virtualWire. J’ai déjà tous le matériel nécessaire.
Du coté émetteur j’ai mon Arduino et un émetteur 433 Mhz.
Du coté récepteur j’ai un ATtiny85, un récepteur 433Mhz et une LED.

Je n’arrive pas a allumé ma LED, voici les codes.

Emetteur :

#include <VirtualWire.h>
 
void setup()
{
    Serial.begin(9600);
     
    vw_setup(100);          
     
}
 
void loop()
{
     
  if(Serial.available()){
   char test = Serial.read();
    
   if (test == '1'){
    Serial.println("Sending ...");
    send("on");
    delay(1000);
   Serial.println("on");
   }
   else{
     Serial.println("Sending ...");
    send("off");
    delay(1000);
     Serial.println("off");
   }
    
  }
}
 
void send (char *message)
{
  vw_send((uint8_t *)message, strlen(message));
  vw_wait_tx();
}

Récepteur :

#include <VirtualWire.h>
 
int led = 1;
 
byte message[VW_MAX_MESSAGE_LEN];   
byte msgLength = VW_MAX_MESSAGE_LEN;
 
 
void setup()
{
     
    pinMode(led, OUTPUT),
     
    vw_setup(2000);            
    vw_set_rx_pin(0);
    vw_rx_start();             
}
 
void loop()
{
    if (vw_get_message(message, &msgLength))
    {
       
      if(strcmp("on", (char*)message) == 0){
        digitalWrite(led, HIGH);}
       else if(strcmp("off", (char*)message) == 0){
         digitalWrite(led, LOW);}
         
     
     
    }
}

J’ai déjà fait d’autre test mais avec l’ATtiny en émetteur et l’Arduino en récepteur et sa fonctionnait (je fessais juste passer un texte de l’ATtiny vers l’Arduino).

Pouvez-vous m’aider à trouver le problème qui fait que ma LED ne s’allume pas ?

Thibaut.

Le premier code est pour écouter si on a reçu 1 ou 0 (donc pour le récepteur)

Il écoute sur le moniteur série en en fonction de ce qu’il reçoit du moniteur série (1 ou 0) et envoi via l’émetteur la commande (en autre du texte). Donc il me semble que le premier code va bien avec l’émetteur. Corriger-moi si je me trompe.

Thibaut.

OK. De ce côté, ça, m'a l'air tout bon.

D’ou vient le problème dans ce cas.

Thibaut.

Personne ?

int led = 1

Les pins 0 et 1 servent à Tx et Rx, essaye une autre broche

C’est bon sa fonctionne je ne sais pas d’où sa venait mais ça fonctionne, peut-être du pin que vous m’avez dit de modifier, des commentaires que j’ai enlevé ou des commandes qui transit via radio que j’ai modifié (j’ai fait des tests et j’ai remarqué que le deuxième « f » de off je s’envoyais pas).

Voici les codes final qui fonctionne, coté émetteur :

#include <VirtualWire.h>
 
void setup()
{
    Serial.begin(9600);
     vw_set_rx_pin(12);
    vw_setup(100);          
     
}
 
void loop()
{
     
  if(Serial.available()){
   char test = Serial.read();
    
   if (test == '1'){
    Serial.println("Sending ...");
    send("on");
    delay(1000);
   Serial.println("on");
   }
   else{
     Serial.println("Sending ...");
    send("of");
    delay(1000);
     Serial.println("off");
   }
    
  }
}
 
void send (char *message)
{
  vw_send((uint8_t *)message, strlen(message));
  vw_wait_tx();
}

Récepteur :

#include <VirtualWire.h>
 
int led = 4;
 
byte message[VW_MAX_MESSAGE_LEN];   
byte msgLength = VW_MAX_MESSAGE_LEN;
 
 
void setup()
{
     
    pinMode(led, OUTPUT),
     
    vw_setup(2000);            
    vw_set_rx_pin(0);
    vw_rx_start();             
}
 
void loop()
{
    if (vw_get_message(message, &msgLength))
    {
       
      if(strcmp("on", (char*)message) == 0){
        digitalWrite(led, HIGH);}
       else if(strcmp("of", (char*)message) == 0){
         digitalWrite(led, LOW);}
         
     
     
    }
}

Thibaut.