Liczba postów: 356
Liczba wątków: 5
Dołączył: Aug 2019
Reputacja:
28
Powiem krótko nie zrozumiałeś co napisałem. Ciągle popełniasz te same błędy. Nie przeczytałeś podstaw programowania. Dalej chcesz uruchomić jednocześnie dwa SoftwareSerial a tak się nie da. Ciągle operujesz na danych lokalnych. Zapisz długość, szerokość, temperaturę i wilgotność do zmiennych globalnych. Będziesz je miał dostępne z każdego miejsca programu, a nie jak trzeba wysłać, to pytasz ponownie GPSa i czujnik o dane i tu chcesz mieć uruchomione jednocześnie właśnie dwa SoftwareSerial.
Spróbuj najpierw wysłać dane SMSem zaraz po ich odczycie mając je zapisane tak jak pisałem do zmiennych globalnych.
Liczba postów: 356
Liczba wątków: 5
Dołączył: Aug 2019
Reputacja:
28
Dodam jeszcze, że przerwania trzeba używać z rozwagą. W przerwaniu wykonuje się kilka operacji a nie całe bloki instrukcji . Przerwania zatrzymują czas systemowy więc millis nie działa. W funkcji przerwania możesz skierować program na inne tory czyli zmieniasz zwrotnice i program, po dokończeniu tego co mu przerwałeś, pojedzie inną drogą. Z tego wniosek, że program musi być napisany tak aby zawierał warianty działania czyli "podprogramy" które wywołuje się w zależności od sytuacji. Np przyjdzie ring od gsm więc można zmienić w przerwaniu wartość jakiejś zmiennej np z 0 na 1 można to nazwać flagą. Program co obieg pętli LOOP sprawdza wartość tej zmiennej i reaguje na jej zmianę.
Sklejanie programu z kilku przykładów nie jest takie proste, trzeba wiedzieć co jest co w programie i z głową to modyfikować i sklejać. Nie na zasadzie a dopiszę jedno po drugim albo wsadzę to tu bo mi tak się wydaje, że tak będzie działać.
Nawet doświadczony programista, stary wyjadacz, niejednokrotnie może się naciąć na tym, że coś przeoczył i program poszedł w krzaki.
Liczba postów: 819
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
39
po prostu użyj sprzętowych rs.... mega ma ich aż 4
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 356
Liczba wątków: 5
Dołączył: Aug 2019
Reputacja:
28
W mega są, tak pisze Jarewa0606, cztery sprzętowe. Serial, Serial1, Serial2 i Serial3. Serial zostaw sobie do SerialPrint czyli do wyświetlania na konsolę, a pozostałe do pozostałych zastosowań. Popatrz gdzie są wyjścia poszczególnych Seriali i tam podłącz odpowiednio urządzenia. W kodzie trzeba je odpowiednio nazwać, czyli Serlial1 iSerial2 itd.