Cześć, chciałbym sterować czterema silnikami za pomocą joysticka tylko nie potrafię napisać poprawnie w funkcji loop żeby np: Jeśli joystick zostanie przesunięty w górę to odwoła się do funkcji void forward(), a jeśli w dół to do funkcji void backward(). Jak to ustawić? Może są jakieś spece od joysticków :D
#define joystick_x A0
const int motor11 = 2; //silnik lewy przód
const int motor12 = 4;
const int motor21 = 7; //silnik lewy tył
const int motor22 = 8;
const int motor31 = 12; //silnik prawy przód
const int motor32 = 13;
const int motor41 = 3; //sinik prawy tył
const int motor42 = 6;
const int enablePin = 5; //pin do zmiany prędkości
int sspeed;
int odczyt_x;
void setup()
{
Serial.begin(9600);
//ustawiam silniki jako wyjścia
pinMode(motor11, OUTPUT);
pinMode(motor12, OUTPUT);
pinMode(motor21, OUTPUT);
pinMode(motor22, OUTPUT);
pinMode(motor31, OUTPUT);
pinMode(motor32, OUTPUT);
pinMode(motor41, OUTPUT);
pinMode(motor42, OUTPUT);
}
void loop()
{
odczyt_x = analogRead(joystick_x);
if(odczyt_x < 507)
{
stopp();
}
if(odczyt_x > 511)
{
forward(sspeed);
}
}
//pętla dla pojazdu w bezruchu
void stopp()
{
digitalWrite(motor11, LOW);
digitalWrite(motor12, LOW);
digitalWrite(motor21, LOW);
digitalWrite(motor22, LOW);
digitalWrite(motor31, LOW);
digitalWrite(motor32, LOW);
digitalWrite(motor41, LOW);
digitalWrite(motor42, LOW);
}
//pętla dla pojazdu jadącego do przodu
void forward(int sspeed)
{
digitalWrite(motor11, HIGH);
digitalWrite(motor12, HIGH);
digitalWrite(motor21, LOW);
digitalWrite(motor22, LOW);
digitalWrite(motor31, HIGH);
digitalWrite(motor32, HIGH);
digitalWrite(motor41, LOW);
digitalWrite(motor42, LOW);
analogWrite(enablePin, sspeed); //pin do zmiany prędkości
}
//pętla dla pojazdu jadącego do tyłu
void backward(int speed)
{
digitalWrite(motor11, LOW);
digitalWrite(motor12, LOW);
digitalWrite(motor21, HIGH);
digitalWrite(motor22, HIGH);
digitalWrite(motor31, LOW);
digitalWrite(motor32, LOW);
digitalWrite(motor41, HIGH);
digitalWrite(motor42, HIGH);
analogWrite(enablePin, sspeed); //pin do zmiany prędkości
}