Wykorzystanie portów analogowych

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
jokeer
Młodszy majsterkowicz
Posty: 4
Rejestracja: 20 gru 2013, 00:48

Wykorzystanie portów analogowych

Post autor: jokeer » 20 gru 2013, 00:56

Witam, dopiero zaczynam swoją zabawę z arduino więc zaczynam od prostych ćwiczeń i mam taki problem:
Chciałbym sterować diodami (czerwona i żółta) przyciskiem i za pomocą wejść analogowych (z cyfrowymi sobie poradziłem). program poniżej nie działa tzn świeci się tylko dioda czerwona. A program ma działać tak że jak przycisk jest nie wciśnięty to świeci się żółta i czerwona jest wył. a jak przycisk jest wciśnięty to na odwrót

int czerwona = 8;
int zolta = 9;
int przycisk = A1;



void setup()
{
pinMode(czerwona, OUTPUT);
pinMode(zolta, OUTPUT);
pinMode(przycisk, INPUT_PULLUP);
analogWrite(przycisk, HIGH);
}
void loop()
{
int potPin = analogRead(przycisk);
if (potPin == HIGH)
{
digitalWrite(zolta, HIGH);
digitalWrite(czerwona, LOW);
}
else
{
digitalWrite(zolta, LOW);
digitalWrite(czerwona, HIGH);
}

}

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


Awatar użytkownika
rafalzaq
Majsterkowicz
Posty: 180
Rejestracja: 2 maja 2013, 23:57

Re: Wykorzystanie portów analogowych

Post autor: rafalzaq » 20 gru 2013, 01:09

Wejścia analogowe działają inaczej. Nie mają dwóch stanów (wysokiego i niskiego) tylko zamieniają przyłożone do nich napięcie na liczbę. Liczba ta zależy od rozdzielczości. W arduino (nie wiem czy wszystkich) jest to 10 bitów czyli 1024 wartości. Czyli odczytując wejście analogowe otrzymamy liczbę z przedziału 0-1023. Musisz wiedzieć, że napięcie nie jest idealnie stałe (zakłócenia itp.) dlatego nie możesz sprawdzać czy odczytana wartość równa się 1023 (co by odpowiadało 5 V czyli stan wysoki). W wejściach cyfrowych stan wysoki też zaczyna się powyżej jakiegoś konkretnego napięcia.
W tym przypadku możesz zamienić potPin == HIGH na potPin > 800 i powinno działać tak jak chcesz.
Awatar użytkownika
Maxik
Starszy majsterkowicz
Posty: 405
Rejestracja: 6 lip 2012, 18:27
Lokalizacja: Gdańsk
Kontakt:

Re: Wykorzystanie portów analogowych

Post autor: Maxik » 20 gru 2013, 15:39

Albo używasz portu jak cyfrowego albo jak analogowego. W kodzie masz to pomieszane. Zmień analogRead na digitalRead i wywal to analogWrite z setup(). Jak już ustawiasz pin jako INPUT_PULLUP, to nic nie trzeba więcej robić. We wcześniejszych wersjach Arduino IDE trzeba było dać tryb na INPUT, a potem ustawić na nim stan wysoki, to załączało rezystor podciągający.
ODPOWIEDZ

Strony partnerskie: