Skocz do zawartości

Sterowanie kierunkowskazami do roweru


Rumuru

Pomocna odpowiedź

Jestem tu nowy. Chce zrobić do roweru trójkołowego  kierunkowskazy i stop. Próbuję na symulatorze , na razie bez kodu. Jak podłączyć 3 przyciski aby  załączą lewy lub prawy kierunkowskaz albo stop?

Fantabulous Albar-Sango.png

Link do komentarza
Share on other sites

@Rumuru witam na forum 🙂 Chętnie pomogę, ale podaj trochę więcej szczegółów. Jakie masz doświadczenie z elektroniką i programowaniem? Na czym dokładnie polega Twój problem - nie wiesz jak wykonać takie połączenie od strony elektronicznej, czy jak obsłużyć to w programie? Robiłeś już kiedyś coś na Arduino?

Link do komentarza
Share on other sites

38 minut temu, Treker napisał:

@Rumuru witam na forum 🙂 Chętnie pomogę, ale podaj trochę więcej szczegółów. Jakie masz doświadczenie z elektroniką i programowaniem? Na czym dokładnie polega Twój problem - nie wiesz jak wykonać takie połączenie od strony elektronicznej, czy jak obsłużyć to w programie? Robiłeś już kiedyś coś na Arduino?

Z elektroniką to jestem na niskim poziomie. Co prawda raz wymieniłem kondensatory w tunerze sat. Rozpoznaje rezystory , diody , Ledy i inne części. Z programowaniem to zero. Z elektroniki to 1 z skali 1 do 10. No może 2.Chcę żeby przycisk  po lewej stronie kierownicy zapałał w lewo  pomarańczowe Ledy a po prawej w prawo. Hamowanie zapalało by czerwone Ledy czyli stop. Myślę też o światłach awaryjnych- migają wszystkie Ledy.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Zrobiłem lewy kierunkowskaz. Działa. Nie potrafię zrobić prawego i stop.

void setup() {

//Lewy

  pinMode(8, OUTPUT); //Dioda jako wyjście
  pinMode(7, INPUT_PULLUP); //Przycisk jako wejście
  digitalWrite(8, LOW); //Wyłączenie diody
}

//Prawy
//Stop
//Awaryjne

void loop()
{
  if (digitalRead(7) == LOW) { //Jeśli przycisk wciśnięty
    digitalWrite(8, HIGH); //Włącz diodę
    delay(5000); //Czekamy 5 sekund
    digitalWrite(8, LOW); //Wyłączamy diodę
  }
}

Błędy wyskakują. Jak to zrobić?  Prawy?_  Przycisk  pin 6 a diody  pin 9.

Link do komentarza
Share on other sites

18 godzin temu, Rumuru napisał:

Nie potrafię zrobić prawego i stop.

Powiedz coś więcej, na czym polegają te problemy? Skoro jeden działa tak jak chciałeś to z kolejnymi nie powinno być problemu. Jakie błędy otrzymujesz?

Link do komentarza
Share on other sites

1 godzinę temu, Treker napisał:

Powiedz coś więcej, na czym polegają te problemy? Skoro jeden działa tak jak chciałeś to z kolejnymi nie powinno być problemu. Jakie błędy otrzymujesz?

Dzisiaj spróbuje na nowo.  Ustawić przycisk lewy na 5 prawy na 7 a stop na 6. Początkujący jestem. Na razie robiłem porządki w domu.

Link do komentarza
Share on other sites

Pokaż cały kod, który nie działa.
Sam się uczę, ale mam wrażenie, że albo dublujesz loopa, albo coś z klamrami w warunkach mieszasz. 🤔

Bo dla prawego dajesz analogiczne instrukcje jak dla lewego, a do stopa if else jak się nie mylę, żeby na pewno zgasić diodę.

I wtrącę dla pewności, bo masz dużo diod na tym schemacie, a jak prześledzisz tutejszy kurs, to się dowiesz, jakie ograniczenia prądowe ma Arduino. 😉

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)
44 minuty temu, Danyeru napisał:

Pokaż cały kod, który nie działa.
Sam się uczę, ale mam wrażenie, że albo dublujesz loopa, albo coś z klamrami w warunkach mieszasz. 🤔

Bo dla prawego dajesz analogiczne instrukcje jak dla lewego, a do stopa if else jak się nie mylę, żeby na pewno zgasić diodę.

I wtrącę dla pewności, bo masz dużo diod na tym schemacie, a jak prześledzisz tutejszy kurs, to się dowiesz, jakie ograniczenia prądowe ma Arduino. 😉

const int przycisk1 = 5;  // Definicja pinu do którego podłączony jest przycisk LEWY
const int przycisk2 = 6;  // Definicja pinu do którego podłączony jest przycisk PRAWY
const int przycisk3 = 7;  // Definicja pinu do którego podłączony jest przycisk STOP
const int dioda1 =  8;   // Definicja pinu do którego podłączona jest dioda LEWY
const int dioda2 =  9;   // Definicja pinu do którego podłączona jest dioda PRAWY
const int dioda3 =  10;   // Definicja pinu do którego podłączona jest dioda STOP

void setup() {

//Lewy  

  pinMode(przycisk1, INPUT_PULLUP);

  pinMode(dioda1, OUTPUT); //Dioda jako wyjście
  pinMode(przycisk1, INPUT_PULLUP); //Przycisk jako wejście
  digitalWrite(dioda1, LOW); //Wyłączenie diody
}

{
//Prawy


  pinMode(przycisk2, INPUT_PULLUP);

  pinMode(dioda2, OUTPUT); //Dioda jako wyjście
  pinMode(przycisk2, INPUT_PULLUP); //Przycisk jako wejście
  digitalWrite(dioda2, LOW); //Wyłączenie diody
}


 

//Stop
//Awaryjne

void loop()
{
  if (digitalRead(przycisk1) == LOW) { //Jeśli przycisk wciśnięty
    digitalWrite(dioda1, HIGH); //Włącz diodę
    delay(10000); //Czekamy 10 sekund
    digitalWrite(dioda1, LOW); //Wyłączamy diodę
  }
  {
  if (digitalRead(przycisk2) == LOW) { //Jeśli przycisk wciśnięty
    digitalWrite(dioda2, HIGH); //Włącz diodę
    delay(10000); //Czekamy 10 sekund
    digitalWrite(dioda2, LOW); //Wyłączamy diodę
  }
}

C:\Users\Orion\Documents\Arduino\2\2.ino:18:1: error: expected unqualified-id before '{' token
 {
 ^
C:\Users\Orion\Documents\Arduino\2\2.ino: In function 'void loop()':
C:\Users\Orion\Documents\Arduino\2\2.ino:48:1: error: expected '}' at end of input
 }
 ^

exit status 1

Compilation error: expected unqualified-id before '{' token

Jak mam napisane do pierwszego przycisku  to działa a jak dopiszę drugi to wyskakuje błąd jak powyżej. Pomocy, plis. Mam 5 diod Led na lewy 5 na prawy i 20 na stop. minimum 3,10,3.

Edytowano przez Rumuru
Link do komentarza
Share on other sites

Czemu zmienna a nie etykieta do pinów? 🤔
 

#define przyciskLewy 5
#define diodaLewy 8

W void setup() Otwierasz i zamykasz klamrę dwukrotnie. Zrób to raz.

 

void setup() {
//Lewy  
pinMode(diodaLewy, OUTPUT); //Dioda jako wyjście
pinMode(przyciskLewy, INPUT_PULLUP); //Przycisk jako wejście
digitalWrite(diodaLewy, LOW); //Wyłączenie diody

//Prawy  
pinMode(diodaPrawy, OUTPUT); //Dioda jako wyjście
pinMode(przyciskPrawy, INPUT_PULLUP); //Przycisk jako wejście
digitalWrite(diodaPrawy, LOW); //Wyłączenie diody
}


W loop znowu masz zbyt wiele klamr. 
Pusta funkcja wygląda tak:
 

void loop() {
}

A Ty otwierasz dodatkową klamrę przed drugą instrukcją, stąd kompilator pierwsze co, to o klamry krzyczy.
 

void loop()
{
  if (digitalRead(przyciskLewy) == LOW) { //Jeśli przycisk wciśnięty
    digitalWrite(diodaLewy, HIGH); //Włącz diodę
    delay(10000); //Czekamy 10 sekund
    digitalWrite(diodaLewy, LOW); //Wyłączamy diodę
  }
  if (digitalRead(przyciskPrawy) == LOW) { //Jeśli przycisk wciśnięty
    digitalWrite(diodaPrawy, HIGH); //Włącz diodę
    delay(10000); //Czekamy 10 sekund
    digitalWrite(diodaPrawy, LOW); //Wyłączamy diodę
  }
}


Przeglądnij lekcje od początku, nie tylko o przyciskach. 😄

Co do diod, taka ilość to nie z Arduino. Można je za pomocą ardu sterować np. przez tranzystory, ale nie zasilać bezpośrednio.

Edytowano przez Danyeru
Link do komentarza
Share on other sites

7 minut temu, ethanak napisał:

A gdzie tam masz zmienną?

Dzisiejszy post sponsoruje słowo const

No stała zmienna, czyli w sumie stała. 😅

Link do komentarza
Share on other sites

Już doczytałem, że można użyć const, w lekcjach i przykładach się nie spotkałem.

Ale się nie czepiam, tylko dopytuję właśnie. 🙃

Link do komentarza
Share on other sites

1 godzinę temu, Danyeru napisał:

w lekcjach i przykładach się nie spotkałem

Bo lekcje i przykłady nie obejmują całego materiału - to zresztą by było niemożliwe (podręczniki do C++ mają po kilkaset stron, a w większości jeden to za mało). Następnym razem jak zobaczysz coś z czym się nie spotkałeś to postaraj się spotkać 🙂

A jako ciekawostkę powiem, że kiedyś tu analizowaliśmy kod wygenerowany przez kompilator dla oby wersji (const i define), był taki sam...

Pamiętać tylko trzeba, że obie te konstrukcje oznaczają coś innego i nie zawsze mogą być stosowane zamiennie.

Dobra, już się nie wtrącam 🙂

 

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.