Przyciski i Arduino

Masz problem z Arduino? Tutaj możesz szukać pomocy.
wiz3ard
Młodszy majsterkowicz
Posty: 17
Rejestracja: 3 sie 2012, 20:06

Przyciski i Arduino

Post autor: wiz3ard » 3 sie 2012, 20:09

Witam wszystkich - jest to mój pierwszy post ;P Tak więc ... Zakupiłem dzisiaj sobie arduino i od razu przystąpiłem do zabawy. Poradziłem sobie z diodami bez problemu, następnie chciałem zrobić diodę na przycisk - ale tu jest problem. Bo raz mi się udało, ale potem chciałem złożyć to jeszcze raz i du*a, próbowałem z godzinę. Ciagle dioda się pali, a powinna być zgaszona oraz zapalić się po naciśnięciu. Kodu nie podaję bo mam dobry - proszę tylko o to, aby wytłumaczyć mi jak podłączyć ten button. Z góry dzięki ;)

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
Łukasz
Administrator
Posty: 667
Rejestracja: 12 lis 2011, 09:42
Lokalizacja: Zielona Góra
Kontakt:

Re: Przyciski i Arduino

Post autor: Łukasz » 3 sie 2012, 20:30

Jak dioda się pali, to nie jest to wina złego podłączenia buttona :) Podłączasz diodą przez rezystor?

I przy okazji - witamy na forum :)
Życie jest za krótkie, żeby nie majsterkować...
wiz3ard
Młodszy majsterkowicz
Posty: 17
Rejestracja: 3 sie 2012, 20:06

Re: Przyciski i Arduino

Post autor: wiz3ard » 3 sie 2012, 20:40

Tak diodę podłączam pod rezystor - tzn. pod uziemienie (GND). Możecie mi wysłać jakieś zdjęcie/schemat jak podłączyć tego buttona ;P ?

PS. Buttona podłączam pod digital.
Awatar użytkownika
kamiltbg
Majsterkowicz
Posty: 67
Rejestracja: 5 cze 2012, 22:32
Kontakt:

Re: Przyciski i Arduino

Post autor: kamiltbg » 3 sie 2012, 23:40

http://arduino.cc/it/Tutorial/Button
Połączenie z masą jest po to, żeby to wejście nie "wisiało w powietrzu", a sam rezystor, żeby przy przyciśnięciu nie połączyć 5V bezpośrednio z GND, bo będzie zwarcie - przynajmniej sam tak rozszyfrowałem konieczność użycia rezystora.
Łukasz się nabija, bo dioda się nie pali, tylko świeci :P
wiz3ard
Młodszy majsterkowicz
Posty: 17
Rejestracja: 3 sie 2012, 20:06

Re: Przyciski i Arduino

Post autor: wiz3ard » 4 sie 2012, 00:29

Dzięki za pomoc - jutro sprawdzę ;). Hehe - pali, świeci, jedno i to samo.

A i jeszcze jedno pytanie. Nie ma chyba różnicy, jak podłącze, rezystor pod kabel od pinu, czy od GND, bo jak to robiłem, to tu i tu działało i nic się nie zjarało ;P
Awatar użytkownika
kamiltbg
Majsterkowicz
Posty: 67
Rejestracja: 5 cze 2012, 22:32
Kontakt:

Re: Przyciski i Arduino

Post autor: kamiltbg » 4 sie 2012, 01:04

Nie ma znaczenia.
Awatar użytkownika
mika9521
Młodszy majsterkowicz
Posty: 28
Rejestracja: 16 cze 2012, 20:52

Re: Przyciski i Arduino

Post autor: mika9521 » 4 sie 2012, 08:01

Bo trzeba podłączyć buttona pod analog a nie pod digital :)
Awatar użytkownika
Łukasz
Administrator
Posty: 667
Rejestracja: 12 lis 2011, 09:42
Lokalizacja: Zielona Góra
Kontakt:

Re: Przyciski i Arduino

Post autor: Łukasz » 4 sie 2012, 08:51

mika9521 pisze:Bo trzeba podłączyć buttona pod analog a nie pod digital :)
Bez różnicy - można i tutaj i tutaj. Lepiej nawet pod digital, bo sobie po prostu sprawdzasz, czy na wejściu jest stan wysoki, czy niski.

Generalnie to, co podesłał kamiltbg powinno działać bezproblemowo. Jak nie działa, to znaczy że coś źle podpinasz ;)

I jeszcze w kwestii palenia i świecenia, to mi się dowcip przypomniał:
- Mamo, mamo - choinka się pali!
- Słoneczko, nie mówi się pali, tylko świeci.
- Acha. Mamo - firanki też się świecą!


;)
Życie jest za krótkie, żeby nie majsterkować...
wiz3ard
Młodszy majsterkowicz
Posty: 17
Rejestracja: 3 sie 2012, 20:06

Re: Przyciski i Arduino

Post autor: wiz3ard » 4 sie 2012, 11:05

Bez różnicy - można i tutaj i tutaj. Lepiej nawet pod digital, bo sobie po prostu sprawdzasz, czy na wejściu jest stan wysoki, czy niski.
Przecież przy digital, też można sprawdzić czy jest LOW czy HIGH - low oznacza że jest wciśnięty button, jeśli dobrze mówie ?'

@Edit

Już sobie poradziłem dioda się ŚWIECI - po wciśnięciu, a po ponownym gasi ;)
qwe
Młodszy majsterkowicz
Posty: 4
Rejestracja: 28 lip 2012, 12:05

Re: Przyciski i Arduino

Post autor: qwe » 4 sie 2012, 11:32

Przycisk podłączasz jedną nóżką pod GND drugą pod cyfrowy pin arduino. W programie włączasz rezystor podciągający na ten pin:

Kod: Zaznacz cały

pinMode(buttonPin, INPUT_PULLUP);
i potem sobie sprawdzasz:

Kod: Zaznacz cały

byte buttonState = digitalRead(buttonPin);
if(buttonState == LOW)
{
// przysisk wcisniety
}
else
{
// przycisk puszczony
}
Awatar użytkownika
rasqba
Młodszy majsterkowicz
Posty: 29
Rejestracja: 11 cze 2012, 18:22

Re: Przyciski i Arduino

Post autor: rasqba » 5 sie 2012, 20:00

Czy do każdego pinu można włączyć programowo taki rezystor-pullup?
wiz3ard
Młodszy majsterkowicz
Posty: 17
Rejestracja: 3 sie 2012, 20:06

Re: Przyciski i Arduino

Post autor: wiz3ard » 5 sie 2012, 20:07

Zdaje mi się, że tak - tylko nie do V5 ^^^
qwe
Młodszy majsterkowicz
Posty: 4
Rejestracja: 28 lip 2012, 12:05

Re: Przyciski i Arduino

Post autor: qwe » 5 sie 2012, 20:53

rasqba pisze:Czy do każdego pinu można włączyć programowo taki rezystor-pullup?
Tak
wiz3ard
Młodszy majsterkowicz
Posty: 17
Rejestracja: 3 sie 2012, 20:06

Re: Przyciski i Arduino

Post autor: wiz3ard » 7 sie 2012, 21:34

Witam - otóż sposób który mi podał qwe nie chce działać.

Kod :

Kod: Zaznacz cały

int led = 4;
int led2 = 3;
int led3 = 2;
int b1 = 5;
int b2 = 6;


void setup(){
  pinMode(led,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(b1,INPUT_PULLUP);
  pinMode(b2,INPUT_PULLUP);
  digitalWrite(led,HIGH);
  delay(200);
  digitalWrite(led,LOW);
}

void loop(){
  if(digitalRead(b1) == LOW)
  {
    digitalWrite(led,HIGH);
  }
}
Podłączenie:

Zrobiłem zdjęcie, ale niestety nie mogę znaleźć kabel usb. Tak więc, przycisk jest postawiony poziomo i z jednej strony podłączam GND a z drugiej pin - oczywiście pod GND podłączam rezystor 10k. Mimo dioda ciągle się świeci.
qwe
Młodszy majsterkowicz
Posty: 4
Rejestracja: 28 lip 2012, 12:05

Re: Przyciski i Arduino

Post autor: qwe » 7 sie 2012, 21:48

wiz3ard pisze:Witam - otóż sposób który mi podał qwe nie chce działać.

Kod :

Kod: Zaznacz cały

int led = 4;
int led2 = 3;
int led3 = 2;
int b1 = 5;
int b2 = 6;


void setup(){
  pinMode(led,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(b1,INPUT_PULLUP);
  pinMode(b2,INPUT_PULLUP);
  digitalWrite(led,HIGH);
  delay(200);
  digitalWrite(led,LOW);
}

void loop(){
  if(digitalRead(b1) == LOW)
  {
    digitalWrite(led,HIGH);
  }
}
Podłączenie:

Zrobiłem zdjęcie, ale niestety nie mogę znaleźć kabel usb. Tak więc, przycisk jest postawiony poziomo i z jednej strony podłączam GND a z drugiej pin - oczywiście pod GND podłączam rezystor 10k. Mimo dioda ciągle się świeci.
Podłącz tak jak tutaj: http://arduino.cc/en/uploads/Tutorial/i ... Button.png
Awatar użytkownika
Łukasz
Administrator
Posty: 667
Rejestracja: 12 lis 2011, 09:42
Lokalizacja: Zielona Góra
Kontakt:

Re: Przyciski i Arduino

Post autor: Łukasz » 7 sie 2012, 22:40

Kiepski pomysł. Wiszące "w powietrzu" wejście cyfrowe ma stan nieokreślony - tzn. może się na nim pojawić zarówno LOW, jak i HIGH. Jak już, to trzeba by to podłączyć tak:
2012-08-07_223944.jpg
Dzięki temu na wejściu będzie domyślnie HIGH, a po wciśnięciu przycisku LOW - bez żadnych stanów nieokreślonych.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Życie jest za krótkie, żeby nie majsterkować...
Awatar użytkownika
Maxik
Starszy majsterkowicz
Posty: 405
Rejestracja: 6 lip 2012, 18:27
Lokalizacja: Gdańsk
Kontakt:

Re: Przyciski i Arduino

Post autor: Maxik » 7 sie 2012, 22:51

Właśnie po to jest Pullup. ATMega ma wbudowane rezystory podciągające 20k.

W Arduino <=1.0:

Kod: Zaznacz cały

pinMode(3, INPUT);
digitalWrite(3, HIGH);
W Arduino >=1.0.1:

Kod: Zaznacz cały

pinMode(3, INPUT_PULLUP);
Awatar użytkownika
Łukasz
Administrator
Posty: 667
Rejestracja: 12 lis 2011, 09:42
Lokalizacja: Zielona Góra
Kontakt:

Re: Przyciski i Arduino

Post autor: Łukasz » 7 sie 2012, 23:03

O proszę - kolejna rzecz, której nie wiedziałem ;) Dobra - przepraszam w takim razie za sianie zamieszania :)
Życie jest za krótkie, żeby nie majsterkować...
henri
Młodszy majsterkowicz
Posty: 1
Rejestracja: 4 lip 2014, 22:09

Re: Przyciski i Arduino

Post autor: henri » 4 lip 2014, 22:12

Witam, a jak mogłbym zrobić aby pin arduino wisiał w powietrzu, bez żadnego stanu, a po jakiejś akcji następowało chwilowe zwarcie do masy?

Zdrówko
lolodn
Młodszy majsterkowicz
Posty: 20
Rejestracja: 17 gru 2014, 14:48

Re: Przyciski i Arduino

Post autor: lolodn » 17 gru 2014, 19:47

Na wstępie witam wszystkich.
Na początku chciałbym się przywitać. Trochę czytam forum i bardzo mi się podobna, że są tu użytkownicy którzy tak chętnie pomagają.
Też zakupiłem Arduino i rozpoczynam zabawę. Jako, że jestem kompletnym laikiem w programowaniu a wiedzę na temat elektroniki mam skromną też zapewne będę potrzebował pomocy.

Na tę chwilę uczę się programować i mój pierwszy projekt bedzie polegał na tym aby jednym przyciskiem sterować dwoma przekaźnikami w taki sposób:
1. Nacisnę pierwszy raz przycisk (1) - załączy się przekaźnik 1
2. Nacisnę drug raz przycisk (1) - rozłączy się przekaźnik 1
3. Nacisnę trzeci raz przycisk (1) - załączy przekaźnik 2
4. Nacisnę czwarty raz przycisk (1) - rozłączy przekaźnik 2

Taki chcę osiągnąć efekt. Nie chcę gotowego programu bo sam się chcę nauczyć ale liczę na pewną pomoc w przyszłości.

Pozdrawiam wszystkich rozpoczynających swoją przygodę z arduino.
davk
Młodszy majsterkowicz
Posty: 2
Rejestracja: 19 gru 2014, 22:18

Re: Przyciski i Arduino

Post autor: davk » 19 gru 2014, 22:32

lolodn

moją propozycją rozwiązania twojego problemu jest stworzenie zmiennej która będzie zawierała 4 stany.

Powiedzmy, że będzie zawierać liczby od 0 do 3 gdzie :
0 - znaczy włącz 1 przekaźnik
1 - znaczy wyłącz 1 przekaźnik
2 - znaczy włącz 2 przekaźnik
3 - znaczy wyłącz 2 przekaźnik

Naciskając guzik zwiększasz stan zmiennej o 1 (lub kiedy stan =3 wtedy zamieniasz na 0).
Na końcu sprawdzasz jaki jest stan i wykonujesz polecenie włączenia lub wyłączenia odpowiedniego przekaźnika na odpowiednim pinie.
lolodn
Młodszy majsterkowicz
Posty: 20
Rejestracja: 17 gru 2014, 14:48

Re: Przyciski i Arduino

Post autor: lolodn » 20 gru 2014, 00:44

Faktycznie jest to lepsze rozwiązanie.

Otworzyłem w tej kwestii nowy temat na forum. Rozwijam temat dzięki dwóm forumowiczom. Wiele dzięki nim zrozumiałem. Może się przyłączysz?
mghjaatgkktuejdj
Majsterkowicz
Posty: 134
Rejestracja: 12 lut 2016, 16:35

Re: Przyciski i Arduino

Post autor: mghjaatgkktuejdj » 16 mar 2016, 12:31

Witam!

Zaciekawiło mnie to zdanie, bo jeżeli to prawda to w moim projekcie mogę spalić układ.
Łukasz pisze: Kiepski pomysł. Wiszące "w powietrzu" wejście cyfrowe ma stan nieokreślony - tzn. może się na nim pojawić zarówno LOW, jak i HIGH..
W związku z powyższym czy prawdą jest, że jeżeli ustawię
pinMode(2, INPUT);
to pinie 2 może pojawić się zarówno LOW (0V), jak i HIGH (5V)?
Awatar użytkownika
Marhef
Złota rączka
Posty: 1236
Rejestracja: 18 lis 2011, 02:18

Re: Przyciski i Arduino

Post autor: Marhef » 16 mar 2016, 13:08

Tak, może się tak zdarzyć. Żeby temu zaradzić są dwie możliwości:
1) sprzętowa: podłączasz przycisk przez rezystor do Vcc (5V) lub GND (0V), a w programie sprawdzasz ten drugi stan. Czyli jeśli podłączysz przycisk do Vcc, to w pętli sprawdzasz, czy stan na przycisku jest LOW, a jeśli podłączysz do GND, to sprawdzasz, czy stan jest HIGH
2) deklarujesz wejście jako
pinMode(2,INPUT_PULLUP)
i sprawdzasz, czy stan przycisku jest LOW. W tym przypadku nie masz możliwości sprawdzić, czy stan przycisku jest HIGH
Awatar użytkownika
Slawek
Starszy majsterkowicz
Posty: 448
Rejestracja: 29 mar 2015, 15:05

Re: Przyciski i Arduino

Post autor: Slawek » 16 mar 2016, 13:50

Ale przez else osiagnie to samo, czyli wszystko inne niz LOW. Dodam, ze w przypadku pullup, podlaczasz przycisk do pinu cyfrowego i masy.
ODPOWIEDZ

Strony partnerskie: