[055] Symulator Wokwi cz. 1

[055] Symulator Wokwi cz. 1

Ostatnio w krótkich wzmiankach opisywałem kilka symulatorów Arduino, obiecując że do tematu powrócę. Czas więc przyjrzeć się jednemu z nich, a konkretnie temu, który spodobał mi się najbarziej: Wokwi. Jednak zanim przejdziemy do rzeczy, kilka pytań na początek: czym jest Arduino? To platforma sprzętowo-programowa, która jest zgodna ze standardem określonym tą właśnie nazwą. Sprzętowo-programowa, a więc mamy tam elementy rzeczywiste, namacalne, jak te wszystkie płytki, shieldy i dołączane peryferia. Mamy także elementy niematerialne, czyli program, ale też łączność, czy to lokalną, czy powiązaną ze światową siecią.


Pierwsza grupa wymaga posiadania konkretnych rzeczy i jest istotą projektów. Coś mruga, coś się obraca, coś wyświetla napisy i obrazki. By zabrać się za nowy projekt, musimy zacząć od zestawienia tych elementów i dopiero gdy już wszystko podłączymy, możemy przejść do etapu programowania. Czy aby na pewno?

Wiadomą rzeczą jest, że na końcu będziemy chcieli posiąść urządzenie działające zgodnie z planem i namacalne. Lecz droga do tego nie musi wyglądać tak, jak ją opisałem. Etap ożywienia elementów możemy przesunąć na sam koniec, mając pewność, że to, nad czym spędziliśmy dużo nieraz czasu będzie działać bez niespodzianek. Jak to zrobić?

Zbudujmy urządzenie wirtualne! Zamiast kupować płytkę, wyświetlacz, przyciski i wszystko, czego będziemy potrzebować do zbudowania urządzenia, które siedzi nam w głowie, możemy takie urządzenie zbudować na niby, na ekranie komputera. To prawda, że takie „na niby” to trochę lipa. Ale nie to ma być celem, a tylko drogą. Etap budowania urządzenia materialnego będzie wtedy ostatnim. Jakie ma to zalety?

Po pierwsze: oszczędność pieniędzy. Dopóki rzecz nie wyjdzie poza ekran, nie wydamy ani grosza. Nasze urządzenie możemy modyfikować, zmieniać peryferia, dobierać płytki, marudzić, a nawet robić zwarcia i inne straszne rzeczy. Nic nie spalimy, co najwyżej tylko na niby, nic nie urwiemy, za nic nie zapłacimy.

Po drugie: oszczędność czasu. Nie musimy czekać na paczkę, ani iść do sklepu, ani szukać tego kabelka, co go przecież mieliśmy wczoraj, ale gdzieś przepadł. Klik – i co potrzeba, mamy natychmiast.

Po trzecie: jeszcze raz oszczędność czasu. Wirtualnymi urządzeniami możemy bawić się w łóżku, w samolocie, w tramwaju, wszędzie, gdzie możemy mieć ze sobą komputer, a nawet smartfon. Nic nam nie będzie dyndać z gniazdka USB i w każdej chwili będziemy mogli wrócić do przerwanej pracy. Mało tego, możemy sobie otworzyć nawet dziesięć projektów równocześnie, a każdy będzie zestawiony na wirtualnej płytce stykowej jak tylko będzie nam pasować, czekając cierpliwie na nasz czas.

No i po czwarte: znowu oszczędność czasu i pieniędzy. Projekt możemy dopracować, a nawet go porzucić i rozpocząć na nowo, lepiej. Że nie wspomnę o skończonej ilości programów, które możemy załadować do Arduino, bo żywotność pamięci też ma swoje ograniczenia.

Jakie są wady? Wiadomo, co na niby to nie naprawdę. Termometr w komputerze temperatury nie zmierzy, a fotokomórce na ekranie światłem w oko nie zaświecimy. W końcu trzeba będzie te projekty zbudować w świecie realnym. Wadą są także różnice między światem symulowanym, a rzeczywistym i możemy się z nimi spotkać. W końcu nie wszystko jest symulowane i czasem trzeba będzie zrezygnować z projektu, w którym siedzi biblioteka niewspierana. Bywa, że da to ominąć i o tym opowiem dziś na końcu.

Skoro już wiemy w czym idea, jak się do tego zabrać? Najpierw trzeba sobie znaleźć środowisko. Symulatorów jest trochę, lepszych i gorszych, ja wybrałem Wokwi, bo… jakieś trzeba było wybrać.

Zachęciła mnie strona startowa ze swoimi czterema rodzinkami: Arduino – i to aż w sześciu odsłonach, ale także ESP, STM no i Malinka w wersji Pico. Więc już na początek możemy sobie wybierać wśród czterech dużych grup urządzeń.

Na chwilę zejdźmy niżej – zobaczymy tu znacznie więcej dobra, głównie związanego z tak zwanym internetem rzeczy, ale nie czas dziś na to.

Jeszcze niżej znajdziemy przykłady na zachętę, więc czym prędzej wróćmy na górę i zalogujmy się. I tu od razu informacja: symulator wirtualnego Arduino sam jest wirtualny, czyli pracuje w przeglądarce. Kto tego nie lubi i boi się, że ktoś mu zhakuje program do migania diodą, będzie musiał poszukać sobie symulatora offline. Ja się nie boję, konto stworzyłem i mogę zabrać się do zabawy.

Po podaniu danych – mail może być jakikolwiek, byle istniał i potwierdzeniu z poczty faktu rejestracji, wchodzimy do okna projektów. Pusto tu na razie, ale zaraz się to zmieni. Jeśli będzie nam lepiej z polskim interfejsem, włączmy go sobie z małego menu podręcznego.

Kliknijmy w nowy projekt. Dopiero teraz widać jakie to fajne. Samych płytek Arduino mamy sześć, a wszystkich w ogóle – 17. To chyba najbardziej rozbudowany symulator, jeśli wziąć pod uwagę zasoby. Wybierzmy zatem najpopularniejsze Arduino Uno.

To co, może jakiś prosty program na początek? Pomigamy diodą. Ale tak troszkę mądrzej niż w słynnym pierwszym programie początkującego arduinowca. Zrobimy tak: użyjemy potencjometru, będziemy mierzyć napięcie wychodzące ze ślizgacza i to napięcie będzie argumentem funkcji delay.

Najpierw zgromadźmy bazę elementów. W tym celu klikniemy w plusik. Wybierzemy: diodę świecącą, rezystor i potencjometr.

Na razie leży to na kupie, ale każdy element można przesuwać. W przypadku niektórych można je obracać oraz deklarować wartości. Zatem zmieńmy wartość rezystora na 220 omów.

W przypadku diody świecącej możemy zmienić jej kolor. Połączmy teraz wszystko wirtualnymi przewodami. W tym celu klikamy na wyprowadzenie Arduino – pojawi się przewód i ciągniemy go do rezystora. Następnie z rezystora – do anody diody świecącej, a jej katodę połączymy z masą.

Zostawmy jeszcze potencjometr wolny i napiszmy program, który włączy diodę, by sprawdzić czy to w ogóle działa. Trzeba ją zatem zadeklarować, a następnie zadeklarować warunki pracy portu diody i wysłać tam wysoki stan. Po kliknięciu w ikonę uruchamiającą symulację dioda się zaświeci.

Zanim program stanie się odrobinę mądrzejszy, posprzątajmy tu trochę. Na początek włączmy siatkę i powiększmy zawartość okna. Teraz złapmy diodę i rezystor, i przesuńmy je tak, by całość wyglądała ładnie. Klikając na przewodzie, możemy zmienić jego kolor oraz wymusić przełamanie go w punktach oznaczonych fioletowymi kołami. Tutaj nie będzie to użyteczne, ale gdy będziemy ciągnąć wiązki kabelków, przyda się z pewnością.

Dobrze przyjąć zasadę kolorów: czarny – masa, czerwony – zasilanie, a reszta zgodnie z widzimisię. Podłączmy potencjometr. Niestety potencjometru nie obrócimy, więc trzeba będzie jakoś poprzesuwać przewody. Tutaj esteci będą mieli prawdziwy problem, nad układaniem kabelków można spędzić wiele czasu.

Gdy już wszystko zostanie połączone, dopiszemy sobie stosowne linie odpowiedzialne za analizę potencjometru. Oprócz deklaracji portu, do którego dołączymy ślizgacz, wprowadzimy dwie linie: pierwsza będzie wysyłała na port diody jej zaprzeczony poprzedni poziom. Druga – będzie opóźniać ów proceder o liczbę milisekund będącą wartością zmierzoną na porcie analogowym. Czyli w skrajnym lewym położeniu potencjometru zmiany będą niezauważalne, a w prawym – dioda będzie migać z częstotliwością nieco powyżej sekundy.

Włączamy symulację i możemy sobie teraz kręcić potencjometrem – za pomocą myszy oczywiście – obserwując zmiany migania diody.

I to na tyle, w kolejnym artykule spróbujemy przenieść w świat wirtualny któryś z większych projektów już przeze mnie kiedyś publikowanych i zajmiemy się bardzo małym Arduino. A jeśli ktoś chciałby pobawić się symulatorem z programeme tu przedstawionym, poniżej znajduje się listing:

const byte dioda = 2;          // Adres diody świecącej.
const byte potencjomert = A0;  // Adres potencjometru.

void setup() {
  pinMode(dioda, OUTPUT);  // Deklaruj port diody.
}

void loop() {
  digitalWrite(dioda, !digitalRead(dioda));  // Zamień poziom na porcie sterującym diodą.
  delay(analogRead(potencjomert));           // Zaczekaj proporcjonalnie do wartości napięcia na wejściu przetwornika A/D
}

Powiązane tematy

Płytka edukacyjna TME-EDU-ARD-2Płytka edukacyjna TME-EDU-ARD-2Sprawdź tutaj

Przeczytaj również

Nasi partnerzy

TMETech Master EventTME EducationPoweredby
Copyright © 2024 arduino.pl