Arduino uno + rf 433 PROBLEM

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
ODPOWIEDZ
akon1111
Młodszy majsterkowicz
Posty: 23
Rejestracja: 12 sie 2016, 21:53

Arduino uno + rf 433 PROBLEM

Post autor: akon1111 » 12 sie 2016, 22:02

Witam,
chciałem stworzyć kod do arduino uno który pozwoli mi na przesłanie za pomocą rf 433 zmiennych do drugiego arduino uno. Chciałem stworzyć kilka zmiennych, z których każda będzie miała wartość 0/1 i wrzucić je do tablicy, a następnie wysłać ją do drugiego arduino. Stworzyłem kod, który kompiluje się, ale w odbieranym arduino każda zmienna ma wartość 0 lub też losowo pojawia się 1 (nie na tym pinie co powinnno). Gdzie robię błąd ? Czy może powinienem podejść do tego inaczej ? Poniżej wrzucam kod. Z góry dziękuję za pomoc.

KOD NADAJNIKA

Kod: Zaznacz cały

#include <VirtualWire.h>

int k = 0; //deklaracja zmiennej
int l = 1; //deklaracja zmiennej
int m = 0; //deklaracja zmiennej

int tab[3] = {k,l,m}; //deklaracja tablicy ze zmiennymi

void setup()
{
    vw_set_tx_pin(11);               // nadajnik RF podłączamy do pinu 12
    vw_setup(2000);                  // ustawiamy prędkość transmisji
 }
 
 
void loop()
{  
   vw_send((uint8_t *)tab, 3);      //wysylamy w postaci znaków 8-bitowych zawartosc tablicy wl o wielkosci 2
   vw_wait_tx();                   // poczekaj az cala zawartosc tablicy zostanie wyslana
   delay(1000);                    //odczekaj 1s 
}
KOD ODBIORNIKA

Kod: Zaznacz cały

#include <VirtualWire.h>

boolean stanz = false;                        // tworzymy zmienną boolowską stanz o wartość początkowej false
boolean stancz = false;                       // tworzymy zmienną boolowską stancz o wartość początkowej false
int tab[3]; // tworzymy pustą tablicę

int a; //deklaracja zmiennej
int b; //deklaracja zmiennej
int c; //deklaracja zmiennej

void setup()

{  
   Serial.begin(9600);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);

  
vw_set_rx_pin(11);                        // odbiornik podłączamy do pinu 11
vw_setup(2000);                       // ustawiamy transmisję danych
vw_rx_start();                            // Rozpoczynamy odbiór danych

}
 
void loop()
{
 
    uint8_t buf[VW_MAX_MESSAGE_LEN];          //definicja buforu odbioru danych
    uint8_t buflen = VW_MAX_MESSAGE_LEN;      //oraz dlugości otrzymanych danych
  
    if (vw_get_message(buf, &buflen))         // jeżeli do buforu danych dotarły dane oraz
                                               // transmisja została zakończona i długość danych nie przekracza 8-bitów
      {
      int i;                                  //utwórz zmienną i
      String dane;                            //utwórz zmienną string dane  
    
      for (i = 0; i < buflen; i++)            //jeżeli wartość i < 0 to odbieraj znaki
          {
        
          a = char(buf[0]);                
          b = char(buf[1]); 
          c = char(buf[2]); 
          }

      }

          if (a == 1)
              {  
                digitalWrite(4, HIGH);   // turn the LED on (HIGH is the voltage level) 
              }
              else
              {
                digitalWrite(4, LOW);
              }
    
    
              if (b==1)
              {  
                digitalWrite(5, HIGH);   // turn the LED on (HIGH is the voltage level)
              }
              else
              {
                digitalWrite(5, LOW);
              }

    
              if (c==1)
              {  
                digitalWrite(6, HIGH);   // turn the LED on (HIGH is the voltage level)
              }
              else
              {
                digitalWrite(6, LOW);
              }  
              Serial.println(a); 
              Serial.println(b);
              Serial.println(c);
}

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


ODPOWIEDZ

Strony partnerskie: