• 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
Jak w pętli loop() odnieść się do innych pętli.
#1
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(). Czyli w prostych słowach jak w funkcji loop() odowałać się do innych pętli. Jak to ustawić? Może są jakieś spece od joysticków Big Grin   dodam że moja funkcja loop jest totalnie źle napisana więc do zmiany :p
Kod:
const int joystick_x =0;
int val = 0;


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()
{
 val=analogRead(joystick_x);
 val=map(val,0,1023,101,200);
 speed
 



}
//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
}
 
Odpowiedź
#2
Kod:
void loop()
{
val=analogRead(joystick_x);
val=map(val,0,1023,101,200);
speed
if (val<140 && val>50){
  forward();
}



}
Tu masz przyklad.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości