• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odwołanie się do innej funkcji w funkcji loop()

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
901 wizyt
pytanie zadane 30 sierpnia 2016 w Mikrokontrolery przez Marceltck Nowicjusz (160 p.)

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
}

 

komentarz 30 sierpnia 2016 przez niezalogowany
popracuj nad wcięciami
komentarz 30 sierpnia 2016 przez Michał Kazula Pasjonat (19,540 p.)
Jaka wartość ma zmienna sspeed?
komentarz 30 sierpnia 2016 przez Marceltck Nowicjusz (160 p.)
Nie wiem jak to dokładnie wytłumaczyć ale zmienna sspeed ma być jakoś połączona z enablePin czyli z regulacją prędkości. np.: analog Write(enablePin, sspeed). Jestem początkujący w programowaniu i nie wiem jeszcze z czym to się je:p
komentarz 30 sierpnia 2016 przez Marceltck Nowicjusz (160 p.)
Wydaje mi się że kod jest bardzo czytelny poza pętlą void loop() która i tak jest zła i jest do zmiany.
1
komentarz 30 sierpnia 2016 przez Michał Kazula Pasjonat (19,540 p.)

Brak podstawowej wiedzy widzę.

Ustaw tak:

int sspeed = 20;

 

komentarz 30 sierpnia 2016 przez Marceltck Nowicjusz (160 p.)
Skoro napisałem że jestem początkujący w tych tematach to dziwne by było gdybym wszystko potrafił.

Kolega w linku poniżej też nie zadeklarował żadnej wartości do sspeed i wszstko działało więc wygląda na to że Tobie także widza uleciała.

https://majsterkowo.pl/robot-inspekcyjny-sterowany-przy-pomocy-modulow-nrf24l01/

i po trzecie jakbyś czytał ze zrozumieniem to doczytałbyś że potrzebuje pomocy w funkcji loop. Możesz sobie schować w kieszeń takie cwaniackie komentarze:)
komentarz 31 sierpnia 2016 przez Michał Kazula Pasjonat (19,540 p.)
edycja 31 sierpnia 2016 przez Michał Kazula

W zasadzie za takie potraktowanie osoby która chce Ci pokazać gdzie jest błąd oraz naprowadza Cię na rozwiązanie nie powinienem nic więcej pisać.

Roszczeniowe zachowanie dzisiejszej młodzieży (już kiedyś to pisałem) nic pozytywnego nie przyniesie ...

Wracając do mojego braku wiedzy.

  1. Nie podałeś źródła na samym początku!
  2. Łączysz w jednym kodzie dwa oddzielne kody (nadajnik oraz odbiornik) i to w dodatku nieumiejętnie!
  3. W podanym przez Ciebie źródle autor nie definiuje wartości zmiennej "sspeed" ponieważ ją przekazuje przy pomocy RF - kto ma problemy z czytaniem ze zrozumieniem przypomnij?

Nadajnik:

val_1 = analogRead(potpin_1); val_1 = map(val_1, 0, 1023, 101, 200); msg[0] = val_1; radio.write(msg, 1);  
val_2 = analogRead(potpin_2); val_2 = map(val_2, 0, 1023, 0, 100); msg[0] = val_2; radio.write(msg, 1); 
val_3 = analogRead(potpin_3); val_3 = map(val_3, 0, 1023, 201, 255); msg[0] = val_3; radio.write(msg, 1);

Odbiornik:

if (msg[0] >55 && msg[0] <100){data = msg[0]; sspeed = map(data, 100, 55, 255, 50); left(sspeed);} 

Dla utrwalenia, przypisanie wartości do zmiennej "sspeed" - odbiornik:

sspeed = map(data, 100, 55, 255, 50);

 

Może się przyda:

Arduino - Built-In Examples

Arduino - Map 

Forbot - kurs Arduino

ARDUINO - podstawy języka - funkcje

 

Przepraszam że chciałem pomóc.

 

Znalezione dzisiaj rano - link. Kolega Krapi pięknie Ci podsumował!

komentarz 31 sierpnia 2016 przez Marceltck Nowicjusz (160 p.)
Bardzo mi miło że mnie Pan odmładza do młodieży ale to Pan na początku zaczął wywyższając że nie mam podstawowej wiedzy bo fakt nie mam jej (robie to od kilkunastu dni), ale chyba zapomniał wół jak cielęciem był. Jakbym potrafił programować to bym się tutaj nie zgłaszał z takim błachym problemem. Poza tym Pański komentarz zgodnie z regulaminem nic nie wniósł do mojego problemu. Rozwiązałem sobie już samodzielnie problem i wszystko mi fajnie działa więc jednak mimo że jest Pan programistą z niesamoiwitą wiedzą nie potrafił pan mi pomóc.

Ps. dziękuje za podane linki może coś wyciągne z nich dla siebie.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 278 wizyt
pytanie zadane 19 maja 2022 w Offtop przez JacekWacekPlacek Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 138 wizyt
pytanie zadane 18 listopada 2020 w Sprzęt komputerowy przez manager96 Bywalec (2,050 p.)

93,191 zapytań

142,206 odpowiedzi

322,042 komentarzy

62,518 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 3053p. - dia-Chann
  2. 2998p. - Łukasz Piwowar
  3. 2993p. - Łukasz Eckert
  4. 2970p. - CC PL
  5. 2930p. - Tomasz Bielak
  6. 2907p. - Łukasz Siedlecki
  7. 2890p. - rucin93
  8. 2584p. - Adrian Wieprzkowicz
  9. 2536p. - Mikbac
  10. 2485p. - Marcin Putra
  11. 2461p. - Michał Telesz
  12. 2418p. - Michal Drewniak
  13. 2156p. - Anonim 3619784
  14. 1733p. - rafalszastok
  15. 1650p. - Mariusz Fornal
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...