• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Błąd w kodzie z nrf24l01
#1
Cześć, udało mi się sterować joystickiem silnik i teraz chciałem pójść lvl wyżej i sterować nim przez moduł radiowy nrf24l01.
Napisałem kod i wg. Arduino IDE wszystko jest ok jednak silnik nie pracuje. Popełniłem gdzieś błąd w przesyłaniu danych tylko jeszcze nie wiem gdzie, może ktoś z Was ma bystrzejsze oko do nrfów.

Kod:
//kod odbiornika

#include <SPI.h>                            
#include <nRF24L01.h>                       
#include <RF24.h>

const uint64_t pipe = 0x1CF8361637LL;
//silnik ustawiam na piny 2 i 4
int in1 =4;
int in2 =2;

RF24 radio(9,10);

int msg[1];//wiadomość którą odbieram
int odczyt;//odczyt
void setup()

{
  //ustawiam silniki jako wyjścia
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);

  radio.begin();                            //uruchom moduł
  radio.openReadingPipe(1,pipe);            //zacznij odczyt z kanału o danym kodzie
  radio.startListening();                   //"nasłuchuj"
}

void loop()
{
if (radio.available())radio.read(msg, 1);  
if (msg[0] < 507) // jeśli odebrana wartość jest mniejsza niż 507 to:
{
  analogWrite(in1, LOW);
    odczyt = map(odczyt, 506, 0, 0, 255);
    analogWrite(in2, odczyt);
}
else if(msg[0] > 511)//jeśli odebrana wartość jest większa niż 511 to:
  {
    analogWrite(in2, LOW);
    odczyt = map(odczyt, 512, 1023, 0, 255);
    analogWrite(in1, odczyt);
  }

else // w przeciwnym wypadku silnik się nie kręci
  {
  analogWrite(in2, LOW);
  analogWrite(in1, LOW);
  }
}
  

Kod:
//kod nadajnika
#include <SPI.h>                            
#include <nRF24L01.h>                       
#include <RF24.h>

const uint64_t pipe = 0x1CF8361637LL;   

const int joystick = A0;
RF24 radio(9,10);
int odczyt;
int msg[1];

void setup()
{
  pinMode(joystick, INPUT);
  delay(50);
  radio.begin();                           
  radio.openWritingPipe(pipe);      
}

void loop()
{
  odczyt=analogRead(joystick);
  msg[0] = odczyt;
  radio.write(msg, 1);
}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości