• 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
Arduino i 3 buttony
#1
Witam
Buduje podstawkę obrotowa i utknąłem na niby prostym elemencie. O tuż założenie jest takie.  Silnik krokowy napędza talerz obrotowy, A na panelu sterującym mam 3 przyciski (w Lewo, STOP, w prawo) oczywiście odpowiadające pracy silnika. Przyciski typu "Tact Switch"
- przyciśniecie przycisku w lewo powoduje ciągłą prace silnika w lewo
- przyciśniecie przycisku w prawo powoduje ciągłą prace silnika w prawo
- przyciśniecie przycisku STOP powoduje zatrzymanie silnika.

poniżej same przyciski. aktualnie przycisk w prawo. Zmian stanu przycisku miała powodowac zmiane "kierunek" odpowiedzialna za prace silnika. ale działa tylko w momęcie trzymania cisnietego przycisku.
Co robie zle albo czy moj tok myslenia nie jest poprawny. Proszę o  pomoc.
Kod:
int buttonR=A2; //przycisk w prawo
int buttonL=A4; //przycisk w lewo
int buttonS=A3; //przycisk stop
int kierunek = 0;

void setup() {
  Serial.begin(9600);
  pinMode(buttonR,INPUT_PULLUP);
  pinMode(buttonL,INPUT_PULLUP);
  pinMode(buttonS,INPUT_PULLUP);
}

void loop() {
    Serial.print("kierunek: ");
    Serial.print(kierunek);
        int buttonStateR = digitalRead(buttonR); // czyta stan
    Serial.print("  Stan ");
    Serial.println(buttonStateR);

if (buttonStateR == LOW ) {        // włączone
    digitalWrite(buttonR, HIGH);
    kierunek = 1;
  }
  else
  if (buttonStateR == HIGH) {     // wyłączone
    digitalWrite(buttonR, LOW); 
    kierunek = 3;
  }
}
 
Odpowiedź
#2
Tak, zacznij od kursu, bo się miotasz i jak nie zdobędziesz, a potem nie poukładasz sobie zdobytej wiedzy to będzie takie walenie głową w mur.
Ustawiłeś wejścia dla przycisków, podciągnąłeś je do VCC, potem w loop sprawdzasz ich stan, a potem próbujesz coś do wejścia zapisać. Zapisuje się na wyjście, zapis na wejście robi to co INTPUT_PULLUP lub to wyłącza, czyli podciąga do VCC lub zostawia w stanie nieustalonym. Wpisanie jedynki jak robisz zwarcie do GND nic nie zmienia, bo zwarcie ma większą siłę niż podciągnięcie do VCC przez rezystor 20-100k, wpisanie LOW tym bardziej, bo wtedy w ogóle nie wpływasz kodem na stan wejścia.
Przerób cały kurs Arduino zanim zaczniesz pisać własne użytkowe programy, nawet jeśli Ci się wydaje, że czegoś nie potrzebujesz do swojego projektu, to są tam pokazane różne techniki, które trzeba znać.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości