123D circuits – Symulacja arduino część 5 (transmisja UART)

Witam w prawdopodobnie ostatniej części cyklu artykułów o aplikacji webowej 123D circuits. W tej części pokarzę w jaki sposób wykorzystywać transmisje UART w arduino. Wydaje mi się, że będzie to jedna z łatwiejszych rzeczy w arduino, ponieważ naprawdę dobrze to dopracowali.

Komunikacja z komputerem przez USB

Jak wiadomo arduino ma wbudowany konwerter USB i możemy go wykorzystywać do komunikowania się z urządzeniem które jest hostem USB. Czyli z każdym współczesnym komputerem, oraz z wieloma telefonami komórkowymi typu smartfon. Żeby skomunikować się z komputerem nie potrzebujemy żadnych elementów dodatkowych, tylko samo arduino. Aby podczas symulacji w 123D Cirsuits nawiązać kontakt z arduino z poziomu komputera należy włączyć wirtualny terminal, nazywany Serial Monitor. Aby go uruchomić wchodzimy w edytor kodu a następnie klikamy w ikonę po prawej stronie. Pojawi nam się bardzo prosty terminal przypominający ten w standardowym Arduino IDE.

1

Oczywiście przed uruchomieniem Serial Monitora należy dodać arduino z biblioteki.

Poniżej przedstawiam prosty program który będzie nadawał wartość z przetwornika ADC, tylko wtedy kiedy zostanie o to poproszony.

int adc = 0;

void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
  if(Serial.available() > 0)
  {
    char a = Serial.read();
    Serial.print("Dziekuje za:");
    Serial.println(a);
    Serial.print("To dla Ciebie:");
    int sensorValue = analogRead(adc);
    Serial.println(sensorValue);
  }
}

Do obsługi komunikacji nie musimy dodawać żadnej biblioteki, ponieważ jest to już w głównej bibliotece arduino. Pierwszym nowym elementem będzie wywołanie funkcji begin() dla zmiennej Serial. Zmienna Serial jest już utworzona, więc nie musimy tego robić. Jako argument funkcji begin() podajemy szybkość transmisji jaką chcemy uzyskać. W tym przypadku standardowa 9600 bitów na sekundę. Trzeba pamiętać, że nie jest możliwe uzyskanie każdej możliwej szybkości transmisji, możemy korzystać tylko z tych zdefiniowanych. W funkcji loop() w warunku sprawdzamy funkcją available()  czy coś zostało wysłane do kontrolera, jeżeli tak to pobieramy wysłane dane przy pomocy funkcji read() i zapisujemy do zmiennej znakowej (char) a. W następnej linii wysyłamy do komputera fragment tekstu, a następnie wysyłamy naszą zmienną a. Wykorzystujemy funkcję println(), aby od razu wysłać znak nowej linii. Na koniec pobieramy wartość (losową, wejście wisi w powietrzu) z wejścia analogowego i wysyłamy do komputera.

Powyższy program zawiera podstawowe funkcję do obsługi transmisji szeregowej, na bazie tych funkcji można wykonać większość programów z wykorzystaniem tej transmisji.

Tym przykładem kończę ten cykl artykułów, chyba, że coś mi jeszcze w przyszłości do głowy przyjdzie to opiszę. Mam nadzieje, że zachęciłem do użytkowania aplikacji 123D Circuits i zapraszam do innych artykułów na mojej stronie. Zapraszam do komentowania, bo każda uwaga dla mnie jest cenna.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.