Generator sygnału, port szeregowy i… Arduino

W poprzednim tekście o niewielkim generatorze przebiegów prostokątnych pisałem o możliwości konfigurowania go przez port szeregowy. Pokazałem, jak to można zrobić przez konsolę szeregową, np. Putty. Oczywiście nic nie stoi na przeszkodzie, żeby sterować nim z… Arduino.

Co więcej – GND, RX i TX generatora można wpiąć bezpośrednio do gniazd portów Arduino – GND, D13 i D12. Pozostaje podłączyć zasilanie VIN Arduino do VIN+ generatora… i gotowe!

Arduino może sterować generatorem. Najpierw, do nowego szkicu dodajcie bibliotekę SoftwareSerial. Zainicjalizujcie port szeregowy – zmienna „ss”:

Zwróćcie uwagę:

  • Oprócz standardowego portu szeregowego (sprzętowego, „Serial”) – tworzę dodatkowy „ss”, obsługiwany programowo; port sprzętowy „Serial” będzie mi służył do wysyłania statusu po kabu USB do połączenia,
  • Nowy port „ss” podpięty jest pod piny D12 (RX) i D13 (TX),
  • Obydwa porty ustawiam na szybkość 9600.

Teraz dodam funkcję wysyłającą dane do generatora i sprawdzającą jego odpowiedź:

Zwróćcie uwagę:

  • s.listen() jest konieczne do odbierania danych z portu programowego,
  • niewielkie opóźnienie delay(100) zapewnia, że generator nadąży z odbieraniem danych,
  • po wysłaniu literki polecenia sprawdzam czy generator czegoś nie zwrócił (s.peek()),
  • jeżeli na linii pojawi się literka „F” (początek wyrazu FAIL) – zwracam „false” – gdyż wysyłanie zakończyło się porażką,
  • w innym przypadku zwracam „true” – sukces.

W loop() można dodać kilka testów:

Pierwsze polecenie („S3F100T”) powinno skończyć się porażką – generator nie ma trzech kanałów.

Chociaż w ostatecznej implementacji lepiej by było np.:

Powyższy kod próbuje wysłać komendę ustawiającą 200Hz na wyjściu PWM1. Robi to do uzyskania poprawnego wyniku lub 3 razy.

Cały kod:

Źródła

Generator sygnału – z komunikacją po porcie szeregowym?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *