Witam, posiadam program podany poniżej i mam z nim pewien problem. Włączam monitor portu szeregowego i pokazuje 0 - tak powinno byc, potem wychylam joystick w kazda strone i te wartosci takze są poprawne, ale gdy juz wroce do ,,środka'' joysticka to nie wysyła 0 tylko wartości 0 wymieszane z jakąś inna liczbą z przedziału kiedy wychyliłem joystick. Nie wiem czemu tak jest, jakby poprzedni warunek sie zawiesił i sie dalej wykonuje. Nie wiem jak zrobic by w środku działał tylko warunek by wysyłało 0 a inne warunki przestały. Chciałbym by ktoś poprawił mój program i nieco wyjaśnił czemu nie działa poprawnie.
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 9
#define CSN_PIN 10
const uint64_t pipe = 0xE8E8F0F0E1LL;
RF24 radio(CE_PIN, CSN_PIN);
int joystick[2];
int Throttle ;
int Steering;
int speeed;
void setup()
{
Serial.begin(250000);
delay(1000);
Serial.println("Nrf24L01 Receiver Starting");
radio.begin();
radio.setDataRate(RF24_250KBPS);
radio.openReadingPipe(1, pipe);
radio.startListening();
}//--(end setup )-
void loop()
{
if ( radio.available() )
{
radio.read( joystick, sizeof(joystick) );
Throttle = map(joystick[0], 0, 1023, 0, 100);
Steering = map(joystick[1], 0, 1023, 101, 200);
if(Throttle > -1 && Throttle < 45)
{
speeed = map(Throttle, 0, 45, 255, 50);
right(speeed);
}
if(Throttle > 55 && Throttle < 100)
speeed = map(Throttle, 99, 55, 255, 50);
left(speeed);
if(Steering > 101 && Steering < 145)
{
speeed = map(Steering, 101, 145, 255, 50);
gora(speeed);
}
if(Steering > 155 && Steering < 200)
{
speeed = map(Steering, 200, 155, 255, 50);
dol(speeed);
}
if((Throttle > 45 && Throttle < 55) && (Steering > 145 && Steering < 155))
{
stopp();
}
}
}
void right(int speeed)
{
Serial.println(speeed);
}
void left(int speeed)
{
Serial.println(speeed);
}
void stopp()
{
Serial.println(0);
}
void gora(int speeed)
{
Serial.println(speeed);
}
void dol(int speeed)
{
Serial.println(speeed);
}