Tutorial 08: komunikacja analogRead() i portu szeregowego

komunikacja analogRead() i portu szeregowego

wiedza, czy coś jest włączone, czy wyłączone, może być niezwykle przydatna, ale często będziesz chciał wiedzieć więcej. Jak jasne jest światło?

jak szybko porusza się Satelita? Tego typu odpowiedzi są często analogowe-obejmują duży zakres wartości, nie tylko włączonych lub wyłączonych.

Arduino obsługuje wejścia analogowe z 6 dedykowanymi pinami, oznaczonymi od A0 do A5. Piny te mają dostęp do konwertera analogowo-cyfrowego, który pobiera zakres wartości wejściowych i tworzy wersję cyfrową, przecinając Zakres na małe kawałki. Wszystko to odbywa się za kulisami-wszystko, co musisz zrobić, to użyć bardzo prostych funkcji, a otrzymasz to, czego potrzebujesz.

będziesz potrzebował

  1. potencjometru (dowolny zakres oporu będzie działał)
  2. Przewody Zworki – co najmniej 3
  3. opona rowerowa

instrukcje krok po kroku

  1. umieść potencjometr do twojej deski do chleba.
  2. Uruchom przewód zworki od 5-woltowego pinu Arduino do jednego z zewnętrznych pinów potencjometru.
  3. Uruchom kolejny przewód zworki z jednego ze szpilek uziemienia na Arduino (oznaczony GND) do drugiego zewnętrznego pinu potencjometru.
  4. Uruchom ostatni przewód zworki ze sworznia A0 na Arduino do środkowego sworznia potencjometru.
  5. podłącz Arduino do komputera.
  6. Otwórz Arduino IDE.
  7. Otwórz szkic dla tej sekcji.
  8. kliknij przycisk zweryfikuj w lewym górnym rogu ekranu. Zmieni kolor na pomarańczowy, a następnie z powrotem na niebieski po zakończeniu.
  9. kliknij przycisk Prześlij (obok przycisku zweryfikuj). Zmieni kolor na pomarańczowy, a następnie z powrotem na niebieski po zakończeniu.
  10. na pasku menu Przejdź do Narzędzia > Monitor szeregowy – otworzy się okno Monitor szeregowy – powinieneś zobaczyć liczby zwijające się po tym ekranie.
  11. teraz wyreguluj pokrętło potencjometru i obserwuj okno monitora szeregowego. Liczby powinny się zmieniać w zakresie od 0 do 1023.

Korzystanie z funkcji Arduino analogread i map z potencjometrem na pin A0

Ten obraz składa się z Fritzing.

kod Arduino

/* AnalogReadSerial Reads an analog input on pin 0, prints the result to the serial monitor. Graphical representation is available using serial plotter (Tools > Serial Plotter menu) Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. This example code is in the public domain.*/// the setup routine runs once when you press reset:void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600);}// the loop routine runs over and over again forever:void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // print out the value you read: Serial.println(sensorValue); delay(1); // delay in between reads for stability}

omów szkic

ten szkic zaczyna się od wielowierszowego komentarza opisującego szkic i obwód. Prawdopodobnie zauważysz, że pierwszym blokiem kodu jest funkcja setup () – nie deklarujemy ani nie inicjujemy żadnych zmiennych na początku tego szkicu-zamiast tego zrobimy to wewnątrz funkcji loop (), jak w ostatnim przykładzie. Wewnątrz nawiasów klamrowych setup() ponownie odwiedzamy bibliotekę szeregową i używamy funkcji szeregowy.begin().

void setup() {// initialize serial communication at 9600 bits per second:Serial.begin(9600);}

jeśli pamiętasz z ostatniej lekcji, Serial.begin przyjmuje jako argument szybkość transmisji (prawie zawsze będzie to 9600). Ta funkcja pozwala na ustawienie kanału komunikacji między komputerem a Arduino. Jak być może już wiesz, setup() działa tylko raz, a następnie przechodzimy do następnego bloku kodu.

ale czekaj! Czy nie musimy ustawiać trybu Pina, którego będziemy używać? Słuszna Uwaga!

to, co robi Arduino, domyślnie ustawia wszystkie piny na płycie jako wejścia, chyba że powiesz mu inaczej. Tak więc w wielu przypadkach nie musisz jawnie ustawiać Pina jako wejścia za pomocą funkcji pinMode (). To powiedziawszy-i tak mam w zwyczaju to robić-bo to dla mnie jasne-i to jest tego warte w przestrzeni i wysiłku.

więc Wyzywam cię, ustaw tryb pinu za pomocą funkcji pinMode (A0, INPUT) wewnątrz nawiasów klamrowych setup ()– nie pożałujesz.

przechodząc do funkcji loop (), zaczynamy od deklaracji i inicjalizacji zmiennej.

int sensorValue = analogRead(A0);

deklarujemy zmienną o nazwie sensorValue i inicjujemy ją na wyjście nowej funkcji. Nową funkcją jest efektowna funkcja analogRead (). Zgadnijcie więc, co robi ta nowa funkcja analogRead (). Odczytuje on wartość na wybranym przez Ciebie pinie analogowym-w tym przypadku jest to pin analogowy A0, do którego podłączony jest środkowy pin potencjometru. Napięcie na pinie A0 zostanie odwzorowane na liczbę między 0 a 1023, a wartość ta zostanie przypisana do zmiennej sensorValue.

jeśli przypomnisz sobie z góry, rzeczywiste napięcie na pinie A0 będzie wynosić od 0 do 5 woltów, w zależności od tego, gdzie ustawiony jest potencjometr-wartość ta jest mapowana do zakresu 0-1023 za pomocą przetwornika analogowo-cyfrowego. Mamy więc zmienną, która zapisała wartość na naszym potencjometrze – co dalej? Spójrzmy na wartość. Aby to zrobić, musimy wydrukować go z Arduino na nasz komputer – i zgadłeś, użyjemy funkcji biblioteki szeregowej println (), aby to zrobić…

Serial.println(sensorValue);

nie ma tu większych niespodzianek-jako argument wysyłamy zmienną sensorValue do funkcji szeregowej.println () i nasze okno Monitor szeregowy wyświetli wynikowe wartości.

aby zakończyć szkic, wywołujemy funkcję delay() na jedną milisekundę, aby upewnić się, że nasz następny odczyt jest stabilny i ponownie zaczynamy od góry loop (). Zapisujemy nową wartość za pomocą metody analogRead (), zapisujemy ją do zmiennej sensorValue, a następnie drukujemy na komputerze.

to wszystko jest dobre i dobrze, może się zastanawiacie, ale co potencjometr ma wspólnego z czujnikami? Potencjometr niczego nie wyczuwa! Masz rację – ale co ciekawe, wiele czujników działa na tej samej zasadzie, co potencjometr-regulując opór. Weźmy na przykład Rezystor fotograficzny – można go użyć do wyczuwania światła-ponieważ Rezystor zmienia się w zależności od jasności światła, na które jest wystawiony-ta zmiana rezystancji dostosuje ilość napięcia, którą otrzyma pin na końcu odbiorczym. Więc teraz piłka jest na Twoim boisku-do czego możesz użyć analogRead ()?

spróbuj samodzielnie

  • Zmień PIN analogowy na A2. Dokonaj korekt w kodzie i obwodzie.
  • spróbuj innego potencjometru w obwodzie, czy wpływa to na zakres wyświetlanych wartości?

Czytaj dalej

  • analogRead ()
  • analogowe piny wejściowe
  • potencjometr tutorial-to jest dobre

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.