Spisu treści:

Rejestrator danych Arduino: 8 kroków (ze zdjęciami)
Rejestrator danych Arduino: 8 kroków (ze zdjęciami)

Wideo: Rejestrator danych Arduino: 8 kroków (ze zdjęciami)

Wideo: Rejestrator danych Arduino: 8 kroków (ze zdjęciami)
Wideo: Przyciski | #25 [Arduino] 2024, Lipiec
Anonim
Rejestrator danych Arduino
Rejestrator danych Arduino
Rejestrator danych Arduino
Rejestrator danych Arduino

W tym samouczku stworzymy prosty rejestrator danych przy użyciu Arduino. Chodzi o to, aby nauczyć się podstaw używania Arduino do przechwytywania informacji i drukowania na terminalu. Możemy użyć tej podstawowej konfiguracji do wykonania szeregu zadań.

Zaczynać:

Będziesz potrzebował konta Tinkercad (www.tinkercad.com). Udaj się i zarejestruj się za pomocą poczty e-mail lub konta w mediach społecznościowych.

Logowanie przeniesie Cię do pulpitu nawigacyjnego Tinkercad. Kliknij „Obwody” po lewej stronie i wybierz „Utwórz nowy tor”. Zacznijmy!

Możesz znaleźć kompletny plik na TInkercad Circuits - Dziękujemy za sprawdzenie!

Krok 1: Dodaj kilka komponentów

Dodaj niektóre komponenty
Dodaj niektóre komponenty
Dodaj niektóre komponenty
Dodaj niektóre komponenty
Dodaj niektóre komponenty
Dodaj niektóre komponenty

Będziesz potrzebować kilku podstawowych komponentów. Obejmują one:

  • Płytka Arduino
  • Deska do krojenia chleba

Dodaj je, wyszukując je i przeciągając je do środkowego obszaru.

Umieść płytkę stykową nad Arduino. Ułatwia późniejsze przeglądanie połączeń.

Krok 2: Uwaga o deskach do krojenia chleba

Uwaga o deskach do krojenia chleba
Uwaga o deskach do krojenia chleba

Płytka prototypowa to bardzo pomocne urządzenie do szybkiego prototypowania. Używamy go do łączenia komponentów. Kilka rzeczy do zapamiętania.

  1. Kropki są połączone pionowo, ale linia pośrodku oddziela to połączenie od górnej i dolnej kolumny.
  2. Kolumny nie są połączone od lewej do prawej, jak w rzędzie. Oznacza to, że wszystkie komponenty powinny być połączone w poprzek kolumn, a nie w pionie.
  3. Jeśli potrzebujesz użyć przycisków lub przełączników, połącz je w poprzek przerwy pośrodku. Odwiedzimy to w późniejszym samouczku.

Krok 3: Dodaj dwa czujniki

Dodaj dwa czujniki
Dodaj dwa czujniki

Dwa używane przez nas czujniki to czujnik światłoczuły i czujnik temperatury.

Czujniki te oceniają światło i temperaturę. Używamy Arduino do odczytania wartości i wyświetlenia jej na monitorze Serial na Arduino.

Wyszukaj i dodaj dwa czujniki. Upewnij się, że są umieszczone w poprzek kolumn na płytce stykowej. Umieść między nimi wystarczająco dużo miejsca, aby łatwiej było je zobaczyć.

Krok 4: Czujnik światłoczuły

Czujnik światłoczuły
Czujnik światłoczuły
Czujnik światłoczuły
Czujnik światłoczuły
Czujnik światłoczuły
Czujnik światłoczuły
Czujnik światłoczuły
Czujnik światłoczuły
  1. W przypadku czujnika światłoczułego dodaj przewód z pinu 5V w Arduino do tej samej kolumny co prawa noga części w płytce stykowej. Zmień kolor przewodu na czerwony.
  2. Podłącz lewą nogę za pomocą pinu w tej samej kolumnie do pinu A0 (A-zero) w Arduino. To jest pin analogowy, którego użyjemy do odczytania wartości z czujnika. Pokoloruj ten przewód na żółto lub coś innego niż czerwony lub czarny.
  3. Umieść rezystor (wyszukaj i kliknij i przeciągnij) na płytce. To kończy obwód i chroni czujnik i pin.

    • Odwróć go tak, aby przechodził przez kolumny.
    • Podłącz jedną nogę do prawej kolumny nóg na płytce stykowej
    • Umieść przewód z drugiego końca rezystora do ziemi

      Zmień kolor przewodu na czarny

  4. Dokładnie sprawdź wszystkie połączenia. Jeśli coś nie jest we właściwym miejscu, to nie będzie działać poprawnie.

Krok 5: Uruchom kod

Uruchom kod
Uruchom kod
Uruchom kod
Uruchom kod
Uruchom kod
Uruchom kod

Spójrzmy na kod tego komponentu.

Najpierw spójrz na trzeci obraz w tym kroku. Zawiera kod z dwiema funkcjami:

pusta konfiguracja()

pusta pętla()

W C++ wszystkie funkcje dostarczają swój typ zwracany, potem nazwę, a następnie dwa okrągłe nawiasy klamrowe, których można użyć do przekazania argumentów, zwykle jako zmiennych. W takim przypadku zwracanym typem jest void lub Nothing. Nazwa jest ustawiona, a funkcja nie przyjmuje żadnych argumentów.

Funkcja konfiguracji uruchamia się raz podczas rozruchu Arduino (po podłączeniu lub podłączeniu baterii).

Funkcja pętli działa w stałej pętli od milisekundy zakończenia funkcji konfiguracji.

Wszystko, co umieścisz w funkcji pętli, będzie działać podczas działania Arduino. Wszystko na zewnątrz, które będzie działać tylko po wywołaniu. Tak jakbyśmy zdefiniowali i wywołali inną funkcję poza pętlą.

Zadanie

Otwórz panel Kod za pomocą przycisku w Tinkercad. Zmień listę rozwijaną Bloki na Tekst. Zgadzam się z wyświetlonym ostrzeżeniem. Teraz usuń wszystko, co widzisz, z wyjątkiem tekstu na trzecim obrazie w tym kroku.

Zmienne

Aby rozpocząć, musimy przypisać kilka zmiennych, dzięki czemu nasz kod będzie naprawdę wydajny.

Zmienne są jak wiadra, które mogą pomieścić tylko jeden obiekt (C++ jest tym, co nazywamy zorientowanym obiektowo). Tak, mamy tablice, ale są to zmienne specjalne i porozmawiamy o nich później. Kiedy przypisujemy zmienną, musimy określić jej typ, a następnie nadać jej wartość. To wygląda tak:

int jakaśVar = A0;

Tak więc przypisaliśmy zmienną i nadaliśmy jej typ int. Int to liczba całkowita lub całkowita.

"Ale nie użyłeś całego numeru!", słyszę, jak mówisz. To prawda.

Arduino robi dla nas coś specjalnego, więc możemy użyć A0 jako liczby całkowitej, ponieważ w innym pliku definiuje A0 jako liczbę całkowitą, więc możemy użyć stałej A0, aby odnieść się do tej liczby całkowitej, nie wiedząc, co to jest. Gdybyśmy po prostu wpisali 0, odwołalibyśmy się do pinu cyfrowego na pozycji 0, co nie działałoby.

Tak więc dla naszego kodu napiszemy zmienną dla czujnika, który dołączyłem. Chociaż polecam nadanie mu prostej nazwy, to zależy od Ciebie.

Twój kod powinien wyglądać tak:

int lightSensor = A0;

void setup() { } void loop() { }

Teraz powiedzmy Arduino, jak obsługiwać czujnik na tym pinie. Uruchomimy funkcję wewnątrz setupu, aby ustawić tryb pinów i powiedzieć Arduino, gdzie go szukać.

int lightSensor = A0;

void setup() { pinMode(lightSensor, INPUT); } void loop() { }

funkcja pinMode informuje Arduino, że pin (A0) będzie używany jako pin INPUT. Zwróć uwagę na camelCaseUsed (patrz każda pierwsza litera jest wielką, ponieważ ma garby, stąd… camel…!) dla zmiennych i nazw funkcji. To konwencja i dobrze się do niej przyzwyczaić.

Na koniec użyjmy funkcji analogRead, aby uzyskać trochę danych.

int lightSensor = A0;

void setup() { pinMode(lightSensor, INPUT); } void loop() { int czytanie = analogRead(lightSensor); }

Zobaczysz, że zapisaliśmy odczyt w zmiennej. Jest to ważne, ponieważ musimy to wydrukować. Użyjmy biblioteki Serial (biblioteka to kod, który możemy dodać do naszego kodu, aby przyspieszyć pisanie, po prostu wywołując ją zgodnie z definicją), aby wydrukować to na monitorze szeregowym.

int lightSensor = A0;

void setup() { // Ustaw tryby pinów pinMode(lightSensor, INPUT); // Dodaj bibliotekę szeregową Serial.begin(9600); } void loop() { // Odczytaj czujnik int reading = analogRead(lightSensor); // Wydrukuj wartość na monitorze Serial.print("Light: "); Serial.println(odczyt); // opóźnij następną pętlę o 3 sekundy delay(3000); }

Kilka nowych rzeczy! Najpierw zobaczysz te:

// To jest komentarz

Używamy komentarzy, aby poinformować innych ludzi, co robi nasz kod. Powinieneś ich często używać. Kompilator nie odczyta ich i nie przekonwertuje na kod.

Teraz dodaliśmy również bibliotekę Serial z linią

Serial.początek(9600)

To jest przykład funkcji, która przyjmuje argument. Nazwałeś bibliotekę Serial, a następnie uruchomiłeś funkcję (wiemy, że jest to funkcja z powodu okrągłych nawiasów klamrowych) i przekazałeś liczbę całkowitą jako argument, ustawiając funkcję Serial tak, aby działała z prędkością 9600 bodów. Nie martw się dlaczego - po prostu wiedz, że na razie działa.

Następną rzeczą, którą zrobiliśmy, było wydrukowanie na monitorze szeregowym. Wykorzystaliśmy dwie funkcje:

// Ten drukuje do numeru seryjnego bez łamania wiersza (enter na końcu)

Serial.print("Światło: "); // Ten wstawia podział wiersza, więc za każdym razem, gdy czytamy i piszemy, przechodzi do nowego wiersza Serial.println(reading);

Ważne jest, aby zobaczyć, że każdy ma inny cel. Upewnij się, że w ciągach znaków użyto podwójnych cudzysłowów i że po dwukropku zostawisz spację. Pomaga to w czytelności dla użytkownika.

Na koniec użyliśmy funkcji opóźnienia, aby spowolnić naszą pętlę i sprawić, by była odczytywana tylko raz na trzy sekundy. To jest zapisane w tysiącach sekund. Zmień go na odczyt tylko raz na 5 sekund.

Świetny! W drogę!

Krok 6: Symulacja

Symulacja
Symulacja
Symulacja
Symulacja
Symulacja
Symulacja

Zawsze sprawdzaj, czy wszystko działa, uruchamiając symulację. W przypadku tego obwodu musisz również otworzyć symulator, aby sprawdzić, czy działa i sprawdzić swoje wartości.

Uruchom symulację i sprawdź monitor szeregowy. Zmień wartość czujnika światła, klikając go i zmieniając wartość za pomocą suwaka. Powinieneś zobaczyć zmianę wartości również na monitorze szeregowym. Jeśli tak się nie stanie lub jeśli po naciśnięciu przycisku Rozpocznij symulację pojawiają się błędy, ostrożnie wróć i sprawdź cały kod.

  • Skoncentruj się na liniach wskazanych w czerwonym oknie debugowania, które zostaną Ci przedstawione.
  • Jeśli twój kod jest poprawny, a symulacja nadal nie działa, sprawdź okablowanie.
  • Odśwież stronę - możesz mieć niepowiązany błąd systemu/serwera.
  • Potrząśnij pięścią w komputer i sprawdź ponownie. Wszyscy programiści to robią. Wszystko. Ten. Czas.

Krok 7: Podłącz czujnik temperatury

Podłącz czujnik temperatury
Podłącz czujnik temperatury

Zakładam, że jesteś teraz na dobrej drodze. Śmiało i podłącz czujnik temperatury, jak sugeruje zdjęcie. Zwróć uwagę na umieszczenie przewodów 5V i GND w tej samej przestrzeni, co przewody światła. To jest wporządku. Jest jak obwód równoległy i nie powoduje problemów w symulatorze. W rzeczywistym obwodzie powinieneś użyć płytki zaciskowej lub osłony, aby zapewnić lepsze zarządzanie energią i połączenia.

Teraz zaktualizujmy kod.

Kod czujnika temperatury

To trochę trudniejsze, ale tylko dlatego, że musimy trochę policzyć, aby przekonwertować odczyt. Nie jest aż tak źle.

int lightSensor = A0;

wewn czujnik temp = A1; void setup() { // Ustaw tryby pinów pinMode(lightSensor, INPUT); // Dodaj bibliotekę szeregową Serial.begin(9600); } void loop() { // czujnik temp // tworzenie dwóch zmiennych w jednej linii - oh wydajnosc! // Zmienna zmiennoprzecinkowa przechowująca dziesiętne napięcie zmiennoprzecinkowe w stopniach C; // Odczytaj wartość pinu i przekonwertuj ją na odczyt z zakresu 0 - 5 // Zasadniczo napięcie = (5/1023 = 0,004882814); napięcie = (analogRead(tempSensor) * 0,004882814); // Konwertuj na stopnie C stopnieC = (napięcie - 0.5) * 100; // Drukuj do monitora szeregowego Serial.print("Temp: "); Serial.print(stopnie C); Serial.println("oC"); // Odczytaj czujnik int read = analogRead(lightSensor); // Wydrukuj wartość na monitorze Serial.print("Light: "); Serial.println(odczyt); // opóźnij następną pętlę o 3 sekundy delay(3000); }

Wprowadziłem kilka aktualizacji kodu. Przejdźmy przez nie indywidualnie.

Najpierw dodałem linię

wewn czujnik temp = A1;

Podobnie jak lightSensor, muszę przechowywać wartość w zmiennej, aby później było łatwiej. Gdybym musiał zmienić lokalizację tego czujnika (jak przepięcie płytki) to musiałbym zmienić tylko jedną linię kodu, nie przeszukiwać całej bazy kodu, aby zmienić A0 lub A1 itp.

Następnie dodaliśmy linię do przechowywania odczytu i temperatury w postaci zmiennoprzecinkowej. Zwróć uwagę na dwie zmienne w jednym wierszu.

napięcie pływaka, stopnie C;

Jest to bardzo pomocne, ponieważ zmniejsza liczbę wierszy, które muszę napisać, i przyspiesza kod. Jednak znalezienie błędów może być trudniejsze.

Teraz dokonamy odczytu i zapiszemy go, a następnie przekonwertujemy na naszą wartość wyjściową.

napięcie = (analogRead(tempSensor) * 0,004882814);

stopnie C = (napięcie - 0,5) * 100;

Te dwie linie wyglądają na trudne, ale w pierwszej bierzemy odczyt i mnożymy go przez 0,004… ponieważ konwertuje 1023 (odczyt analogowy zwraca tę wartość) na odczyt z 5.

Drugi wiersz mnoży ten odczyt przez 100, aby przesunąć punkt dziesiętny. To daje nam temperaturę. Schludny!

Krok 8: Testowanie i sprawdzanie

Testowanie i sprawdzanie
Testowanie i sprawdzanie

Wszystko zgodnie z planem, powinieneś mieć działający obwód. Przetestuj, uruchamiając symulację i używając monitora szeregowego. Jeśli masz błędy, sprawdź, sprawdź jeszcze raz i potrząśnij pięścią.

Zrobiłeś to? Podziel się i opowiedz nam swoją historię!

To jest ostateczny układ wbudowany dla Ciebie, dzięki czemu możesz grać/testować ostateczną kreację. Dziękujemy za ukończenie samouczka!

Zalecana: