• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sterowanie przekaźnikiem za pomocą SMS (Arduino UNO + moduł GSM)
#10
Nie jestem programistą, więc mi chleba nie odbierasz ucząc się programować Big Grin. A tak na prawdę po prostu to nie jest popularne hobby, a to to nie jedyna strona w sieci.
Jak będziesz chciał zrobić coś więcej to musisz sobie zdobyć/poukładać wiedzę, przeczytać jakiś książki/poradniki od A do Z o c, c++, AVR, Arduino. Ja Ci odpowiem na te 5 pytań, ale nie wiesz, że powinieneś znać odpowiedzi na kolejnych kilkuset?
Do switch case można wykorzystywać liczby całkowite, więc nie może to być tablica, element tablicy już tak. Znak/char jest o tyle szczególny, że jest to liczba całkowita wielkości 1 bajta. Można sobie pokierować funkcją np. w 4 znaku SMS wysyłając znak sterujący i podać go SMS[3] do switch case, pod tym elementem będzie char '1', '2' lub '3'. Może też być użyty typ wyliczeniowy, który pod przyjaznymi nazwami kryje po prostu liczby.
Dałem Ci link wcześniej, a tam cały dział o napisach, pewnie nie wyczerpujący informacji - jest mnóstwo funkcji. Kopiowanie, obcinanie, konwersja na napisy liczb i odwrotnie. Arduino ma na stronie cały dział poświęcony String i kolejne funkcje specyficzne dla Arduino/C++.
Tablica jest zafiksowana, w sensie jej wielkość jest deklarowana jawnie [] lub ilością elementów, char *dane to namiastka stringa, ale faktycznie dalej tablica znaków o wielkości przypisanego napisu. Nie wiem jak działa mechanizm, wolę nie zmieniać zawartości *napis bo skoro jest to tablica a przypiszę większy napis to pojadę po losowych komórkach pamięci za tablicą. Robiłem testy i nic nigdy się takiego nie działo, może kompilator robi z tego jakąś dynamiczną tablicę?
F() to funkcja, makro, specyficzna dla Arduino, które nakazuje pozostawić napis we flash, zobacz jak zmienia się wolne miejsce RAM po kompilacji, gdy użyjesz F() do napisu i gdy go nie użyjesz. Normalnie każdy użyty napis jest po uruchomieniu wczytany do RAM i zajmuje tam miejsce. W Arduino/AVR są specjalne polecenia/funkcje deklarujące napisy i inne zmienne jako przeznaczone do przechowywania we flash i specjalne funkcje do odwoływania się do nich do flesh przed użyciem. Normalnie jest to upierdliwe, a makro F() to bardzo ułatwia. Jak się robi rozbudowany system komunikatów to można szybko zjeść dostępną pamięć i jest to jedyne wyjście - trzymać napisy we flash. Oczywiście jest też wolniejszy dostęp do takich danych.
While działa tak długo, jak warunek wewnątrz jest różny od 0, char to liczba, koniec stringa to 0. Tu akurat jest ważne co wpadło do zmiennej c, czy jest to jakiś znak czy 0.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Sterowanie przekaźnikiem za pomocą SMS (Arduino UNO + moduł GSM) - przez kaczakat - 16-02-2018, 18:00

Skocz do:


Przeglądający: 1 gości