04-09-2016, 19:03
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.
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);
}