Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

BASCOM Alarm SMS-GSM na atmega8a i sim800L z dualną czujką PIR i MW

dobo_28 26 Lis 2017 22:29 1575 24
  • #1 26 Lis 2017 22:29
    dobo_28
    Poziom 11  

    Witam, próbuje zmontować alarm z powiadomieniem za pomocą SMSa.

    Części składowe to:
    - Atmega8a
    - moduł GSM SIM800L
    - czujki PIR HC-SR501
    - czujki MW HFS-DC06
    - moduł 2 przekaźników
    - przycisk reset - wyłączenie syreny (tymczasowo bo będę chciał to robić za pomocą SMS)

    Działanie polega na wykryciu ruchu przez dwie czujki (PIR i MW, które są w jednej obudowie) wtedy załącza się przekaźnik i następuje ciągłe wysyłanie wiadomości SMS - ALARM !!!.

    Jak zrobić by nie wysyłał ciągle tego SMSa by wysłał go tylko raz gdy przekaźnik zostanie włączony do czasu jego zresetowania (wyłączenia alarmu).

    [code]

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0 24
  • Pomocny post
    #2 26 Lis 2017 23:07
    Plumpi
    Specjalista - systemy grzewcze

    Trzeba zrobić detekcję zbocza np. poprzez użycie dodatkowej zmiennej- flagi
    Zmienna ta ustawiana byłaby np. na 1 po wysłaniu SMS-a, a wejście do podprogramu wysyłającego SMS pod warunkiem, że ta zmienna = 0

    If Pir_1 = 0 And Mw_1 = 0 And Flaga = 0 Then
    ....... (program wysyłający SMS)
    Flaga = 1
    En If

    Gdzieś w głównym programie

    If Pir_1 = 1 And Mw_1 = 1 Then
    Flaga = 0
    End If

    Tak swoją drogą to Twój program jest mało elegancki.
    O wiele lepiej by było, gdyby procedura wysyłania SMS-a była wykonywana jako obsługa przerwania.

    0
  • #3 28 Lis 2017 22:43
    dobo_28
    Poziom 11  

    Działa :)

    Jeden problem odhaczony teraz jeszcze funkcje aktywacja i dezaktywacja, reset alarmu oraz załączanie dodatkowych Przekaźników za pomocą SMS.

    Domyślam się, że kod programu nie jest piękny ale na tyle mnie stać. Opieram się na tym co znajdę w sieci i jestem w stanie zrozumieć na obecnym moim etapie oraz zaimplementować to u siebie.

    Jestem zadowolony z tego co udało mi się już zrobić, a dzięki Twojej podpowiedzi nie wysyła mi już ciągle SMS-ów co by wyczerpało ich limit na karcie SIM.

    Obsługa przerwania nie mam pojęcia?

    Poniżej jak to teraz wygląda.
    Oczywiście pozostaje rozpisać wszystko dla pozostałych czujek ale to na zasadzie kopiuj wklej i zamień nazwy.



    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • #4 01 Gru 2017 21:18
    dobo_28
    Poziom 11  

    Komenda Print jest łatwa do zastosowania ale jak odebrać dane?
    Znalazłem, że odpowiada za to Input

    zrobiłem tak

    Input = +CMTI: "SM",1 then
    Print "AT+CMGR=1" ; Chr(13) ;
    Input = (jeśli w odebranej wiadomości występuje OFF) then
    Pk_syrena = 0
    Print "AT+CMGD=1" ; Chr(13) ;


    ale nie działa "Print "AT+CMGR=1" ; Chr(13) ;" po odczycie "Input = +CMTI: "SM",1 then"
    więc nawet nie zabrałem się za kombinowanie z "Input = (jeśli w odebranej wiadomości występuje OFF) then
    Pk_syrena = 0
    Print "AT+CMGD=1" ; Chr(13) ;"


    Proszę o pomoc


    Próbuję coś z tej strony wygrzebać ale nie czaje gdzie jest odczyt tego co przychodzi.

    Potrzebuje coś łopatologicznego jak z PRINT

    Dodano po 5 [godziny] 27 [minuty]:







    Udało mi się coś takiego. Po wysłaniu OFF dioda, która na obecną chwilę zastępuje Pk_syerna gaśnie.
    Choć jest problem natury sprzętowej (zakłócenia) związane z odbieraniem wiadomości powodują reakcję na czujce PIR i MW co powoduje ponowne załączenie alarmu i wysłanie SMS - ALARM!!! a nawet paru SMSów.

    Czy w części odbierającej trzeba coś jeszcze poprawić - usunąć.
    Skopiowałem z innego projektu wszystko choć nie wiem czy wszystko jest potrzebne.
    Nie bardzo rozumiem działanie kodu odbierającego SMSy ale ważne, że działa :) choć wolał bym wiedzieć dlaczego tak to ma wyglądać.

    Problemem może być jeśli przyjdzie SMS z sieci bo będzie on na pozycji 1, a moja wiadomość na pozycji np. 2 czy 3 wtedy będzie lipa :(

    Może znajdzie się dobra duszyczka by mi to wytłumaczyć :)



    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
    [/code]

    0
  • #5 05 Gru 2017 17:20
    dobo_28
    Poziom 11  

    Ma ktoś pomysł na wyeliminowanie zakłóceń między modułami. Jak czujnik mikrofalowy ustawię na max odległość to reaguje na załączanie i wyłączanie się czujki PIR rozkręconej na max (ok 7m)

    BASCOM Alarm SMS-GSM na atmega8a i sim800L z dualną czujką PIR i MW

    BASCOM Alarm SMS-GSM na atmega8a i sim800L z dualną czujką PIR i MW

    0
  • #6 09 Gru 2017 21:13
    dobo_28
    Poziom 11  

    Rozbudowałem program o dodatkowe funkcje
    Aktywacja alarmu
    Dezaktywacja alarmu
    Jak by jeden rodzaj czujek powodował problem można je wyłączyć - sterowanie tranzystorem zasilającym czujki - można też programowo będę nad tym pracował - dużo pisania i kombinowania :)
    Reset alarmu po przypadkowym wykryciu ruchu
    Włączanie i wyłączanie przekaźników 4 sztuki

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • #7 23 Gru 2017 14:59
    MAREK MRK
    Poziom 18  

    Witam, albo mi się wydaje albo widzę poważny problem. Po odebraniu sms z pamięci 1 jest sprawdzany ciąg znaków, jeśli się zgadza to jest coś tam wykonywane i kasowany sms z pozycji 1. Przyjmijmy że ktoś się pomyli i wyśle jakikolwiek sms, który zapełni pozycję 1. Program sprawdzając ciąg znaków nie wykryje ciągu, nic nie zrobi i nie usunie sms z pozycji 1? Instrukcję kasowania trzeba by przenieść przed instrukcję If...Then

    Code:
    If Odb_sms > 0 Then
    .

    0
  • #8 23 Gru 2017 22:27
    dobo_28
    Poziom 11  

    będę wstawiał komendę AT+CMGL="ALL"
    a potem AT+CMGD=1, AT+CMGD=2, AT+CMGD=3, AT+CMGD=4
    ale mam inny problem
    na terminalu ale na atmega8a wszystko działa prawidłowo
    natomiast po zmontowaniu z modułem SIM800 już nie bardzo
    czasem wysyła te same SMSy
    jak by nie łapał komendy AT+CMGD=1 i nie kasował SMSa
    komendy do czyszczenia bufora "_rs_head_ptr0 = 0 _rs_tail_ptr0 = 0" tak jak by nie działały i nie czyściły bufora co powoduje, że jak moduł ma mi wysłać "Alarm zresetowany" to jak by ponownie do bufora trafiał string i wyciągany był by z niego "reset" i się zapętla. Podobnie wysyłam "wlacz" aktywuje się alarm wysyła "Alarm wlaczony" i znowu wyciąga z niego string "wlacz"

    dwa najważniejsze problemy to kasowanie wiadomości i bufora choć jak nie będzie wiadomości to i może z buforem nie będzie problemu.

    podsłuchane dane w terminalu między atmega i SIM800
    wysłałem 1on - załącz przekaźnik 1 przekaźnik został załączony ale skąd mu się wzięło "Alarm zresetowany"

    Kod: text
    Zaloguj się, aby zobaczyć kod



    Kod został przepisany na atmega32a natomiast Bascom ma tylko atmega32 może tu jest problem?
    może problemy sprawia moja wersja Bascom i źle kompiluje nie jestem pewien czy mam demo czy full
    kompiluje i pokazuje 29% wgrywa i nie wywala błędu
    obecny kod

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • #9 24 Gru 2017 10:20
    miro340
    Poziom 12  

    No cóż, jeśli korzysta się ze starej, szczepionej, wersji Bascoma to będą dostępne tylko stare procesory. Proponuję postarać się o legalną wersję Bascoma lub poprostu przejść na C i wtedy nie będzie problemu z legalnością oprogramowania, no i nic to nie będzie kosztować :-)

    0
  • #10 24 Gru 2017 13:41
    MAREK MRK
    Poziom 18  

    Nie wiem jak w sim800 bo ja używam najczęściej Q2687. Wstępnie konfiguruję go między innymi na tryb tekstowy a później komendą zapisuję to w pamięci. Nie muszę w programie tego zawierać. Wtedy pozostaje nam tylko odbiór kasowanie i wysyłanie sms.

    0
  • #11 26 Gru 2017 21:55
    dobo_28
    Poziom 11  

    Już głupieje co jest nie tak w terminalu wszystko działa prawidłowo i widzę ze wysyła komendę do kasowanie SMSa "AT+CMGD=1"
    Odsyłane są również stany, że przekaźnik nr 1 został włączony lub wyłączony czy alarm został aktywowany czy dezaktywowany lub zresetowany.
    Natomiast jak podepnę SIM800 i w programie w części dotyczącej odczytu SMS przestawię na aktywną komendę do odczytu "Print "AT+CMGR=1" ; Chr(13) ;" daje 1 sekundę na odczytanie.
    po przejściu do Xdane to już wolna amerykanka.

    Obecny kod testowy na atmega8a (kompilacja 85%) na razie pozostawiłem odczyt wiadomości z pozycji 1, a nie ALL

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    Pomocy bo już nie wiem w czym jest problem.
    Dodano po 5 [godziny] 25 [minuty]:
    Z wiadomościami z czujek jakoś sobie radzi ale wysyłaniem stanu z przekaźników i włącz wyłącz jest problem
    Rozwiązać chcę go w ten sposób
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    wygląda jakby cały czas wiadomość była na karcie sim i nie została skasowana dlatego proces jest zapętlony i wysyła ciągle wiadomości.

    Już mi pomysłów brakuje :evil:

    0
  • #12 27 Gru 2017 12:40
    MAREK MRK
    Poziom 18  

    Niech kolega próbuje usunąć wszystkie wiadomości z pamięci (jedną komendą AT), u mnie wysyłam

    Code:
    AT+CMGD=0,4
    i usuwa wszystkie wiadomości z pamięci sim. U kolegi powinna być jakaś podobna jeśli nie taka sama komenda (ja używam innego modułu GSM). Warto dodać w fazie testowej kontrolki led które będą nas informować co się faktycznie dzieje w programie, docelowo można je wtedy usunąć. To bardzo pomocna rzecz. Ja często robię prototyp testowy na większym procku jeśli mam za mało pinów, a później docelowo przepisuję bez dodatkowyk kontrolek, ale wiem jak się będzie zachowywał program. Może troszkę roboty, ale mam 100% pewności że wszystko będzie tak jak się należy. Można oczywiście zostawić procka większego już docelowo w dzisiejszych czasach to nie wielka różnica w cenie.
    EDIT:
    Niech kolega napisze program tylko do odbierania sms, po odebraniu włączyć led, a innym sms'm wyłączyć led. Wg. mnie jest coś nie tak z porównaniem danych odebranych z tymi zapisanym w programie. Wgrałem testowo ten program i zadzwoniłem na modem (wysyła do procka RING). Oczywiście gdyby działało dobrze nie powinno się nic dziać bo nie poznaje odebranych danych RING, niestety wszystko szalało.

    0
  • #13 28 Gru 2017 02:06
    dobo_28
    Poziom 11  

    Znalazłem, że na SIM800 jest to komenda AT+CMGDA="DEL ALL" więc ją wstawię do kasowania z karty wszystkich wiadomości SMS, a do odczytu będzie AT+CMGL="ALL".
    Przetestowałem na razie czujki w terminalu i wszystko jest OK

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Dodano po 3 [godziny] 3 [minuty]:

    Ok więc zauważyłem, że jak zwiększę oczekiwanie (waitms) po wysłaniu wiadomości zwrotnej na 4000 (4 sekundy) to zaczyna łapać komendę z kasowaniem wiadomości choć nie zawsze czasem jak wyślę kolejną komendę to wykona się kasowanie. Widocznie przy wysyłaniu wiadomości zwrotnej trzeba chwilę poczekać z wysłaniem kolejnej komendy do modułu SIM
    Poprawiłem 1 funkcję z wyłączaniem danej czujki Pir lub Mw jeśli wyłączyłem np Pir1 i Mw1 to nieważne na której pojawił się symulowany ruch to załączał się alarm z dualnej czujki zrobiły się 2 osobne czujki (a nie o to mi chodziło choć nie powiem, że takie rozwiązanie może się też kiedyś przydać - pomyślę nad tym).

    Teraz mam problem inny jak wysyła mi SMSa "ALARM !!! " Czujka Pir1 i Mw1" to program wychwytuje tą wiadomość wysyłaną do mnie i myśli, że została ona wysłana do modułu SIM i interpretuje są sobie jako Pir1 czyli wyłączenie wskazanej czujki podobnie z Mw1 rozwiązaniem jest zmiana nazewnictwa albo wysyłanej wiadomości czyli wstawienie spacji w wysyłanej wiadomości w ten sposób "ALARM !!! " Czujka Pir 1 i Mw 1" mam jeszcze komendę Pir_1234, która wyłącza / włącza wszystkie czujki Pir i podobnie z czujkami Mw - to już w miarę ogarnąłem.
    Zobaczę opcję z czyszczeniem bufora po wysłaniu SMSa zwrotnego "Print" bo tu wydaje mi się, że jest problem bo zostaje coś w buforze i wyszukuje czy jest coś znajomego do działania.

    0
  • #14 02 Sty 2018 09:13
    MAREK MRK
    Poziom 18  

    Jeśli chodzi o kasowanie wiadomości niech kolega spróbuje zamiast

    Code:
    Odb_sms = Instr(odb_txt , Alarm_sms) 'sprawdź czy w odebranym ciągu znaków nie ma "Alarm"
    
    If Odb_sms > 0 Then 'jeżeli jest to
    Sms = 0 'flaga blokująca SMSa "ALARM !!!" - by nie wysyłał tej wiadomosci non stop
    Alarm_pk = 1
    Dopisz_sms = " Reczne zalaczenie" 'załącz syrenę alarmową
    Print "AT+CMGD=1" ; Chr(13) ; 'Delete SMS 1 z SIM w celu odebrania ponownie pod tą samą pozycją nr 1 kolejnego SMSa
    End If

    spróbuje zrobić tak:
    Code:
    Odb_sms = Instr(odb_txt , Alarm_sms) 'sprawdź czy w odebranym ciągu znaków nie ma "Alarm"
    
    Print "AT+CMGDA="DEL ALL" ; Chr(13) ; 'Delete SMS
    If Odb_sms > 0 Then 'jeżeli jest to
    Sms = 0 'flaga blokująca SMSa "ALARM !!!" - by nie wysyłał tej wiadomosci non stop
    Alarm_pk = 1
    Dopisz_sms = " Reczne zalaczenie" 'załącz syrenę alarmową
    End If
    "

    Jak postępy z odbiorem SMS i poprawną interpretacją tego co dostajemy? Proszę się upewnić że moduł przestawiony jest w funkcję echo off. Jestem bardzo ciekaw postępów. Zastanawiam się nad wykorzystaniem przerwań URXC.

    0
  • #15 03 Sty 2018 23:19
    dobo_28
    Poziom 11  

    Poddaje się nie mam pojęcia o co chodzi.
    Reaguje na odbierane wiadomości natomiast z wysyłaniem to loteria podejrzewam funkcję przerywacza alarmu (modulowanie syreny) nie potrafię jej zrobić na timerze.
    Ja usuwanie SMS dałem jako pierwsze zadanie w IF (czyli o jedna linijkę niżej) doszedłem do tego wcześniej by to zadanie było pierwsze.
    Poprawiło się ale czasem ma jakąś blokadę
    Wysyła dobrze info z przekaźników, aktywacji i dezaktywacji jak wykryje ruch to tak samo dobrze wysyła ale jak dam ręczne załączenie to już nie chce albo reset to stawia bloka wykonuje zadanie ale nie wysyła wiadomości i po tym to już różnie czasem zadziała dezaktywacja i aktywacja, a czasem nie.
    Jak dzwonię na moduł to nie ma żadnej reakcji i dziwnego działania.

    Obecnie kod wygląda tak

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • #16 11 Sty 2018 23:33
    dobo_28
    Poziom 11  

    Panowie spotkał się ktoś z Was, że programator źle wczytywał program do mikrokontrolera choć to mało prawdopodobne, że tak się dzieje u mnie bo podsłuchując w terminalu uC widzę, prawidłowe działanie programu bynajmniej to co ma zostać wysłane do modułu GSM poza ustawieniami flag czy resetu pamięci lub stringów.

    Zrobiłem osobne linie do wysyłania SMS dla alarmu z czujek PIR i MW, osobny dla Aktywacji, Dezaktywacji, Resetu i Ręcznego załączenia syreny oraz osobny dla przekaźników.

    Na razie aktywacja i dezaktywacja czujek PIR lub MW nie jest ruszana do póki nie uda mi się uporać z losowym wysyłaniem SMS.

    Działanie nieraz jest losowe.
    Np wysyłam Aktywacja dioda czerwona świeci zielona gaśnie brak zwrotki SMS, wysyłam Dezaktywacja dioda zielona świeci czerwona gaśnie dostaję zwrotkę SMS ponownie wysyłam Aktywacja dioda czerwona świeci zielona gaśnie dostaję zwrotkę sms.

    Z przekaźnikami też jest podobnie załączam/wyłączam pojedynczo jest zwrotka SMS załączam 2 razem przekaźniki nie ma zwrotki SMS natomiast wyłączam 2 razem jest zwrotka SMS.
    Ponownie załączam 2 przekaźniki dalej brak zwrotki SMS teraz wyłączam przekaźnik nr 2 otrzymuję zwrotkę SMS ale nie dotyczy się ona tylko tego przekaźnika, a 2 przekaźników tak jak by wcześniejszej wiadomości bo otrzymuję zwrotkę "Przekaźnik 1 włączony Przekaźnik 2 wyłączony" tylko zaktualizowaną o obecny stan przekaźnika 2.
    Dosłownie loteria.

    Obecna wersja programu na uC m8a oczywiście nie wszystko ustawione bo za mało pinów ma ten uC

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • #17 12 Sty 2018 07:27
    MAREK MRK
    Poziom 18  

    Można zrezygnować z wysyłania wiadomości po zmianie stanu pinu, a zrobić oddzielnie w pętli sprawdzanie pinów, dodatkowo by wysłało tylko jednego sms'a można dać zmienne, które będą się zmieniać po wysłaniu wiadomości.

    0
  • #18 12 Sty 2018 09:58
    Jaca
    Poziom 28  

    Całą obsługę modemu masz źle, ponieważ opierasz się na stałych opóźnieniach a powinieneś po wysłaniu komendy AT oczekiwać jej rezultatu ("OK"," ERROR") a w przypadku wysłania komendy AT+CMGS="+48..." lub AT+CMGS=+48...:
    1. Zaczekać na znak zachęty (">"),
    2. Wpisać treść SMS'a i zakończyć znakiem CTRL+Z ({026}) bez RETURN'a ({013}) na końcu,
    3. Poczekać na rezultat ("OK, "ERROR")
    Cała procedura wysyłania SMS'a może potrwać nawet 3 sekundy.

    Na Twoim miejscu zrobiłbym swoją obsługę komunikacji z modemem w oparciu o przerwanie RXC z parsowaniem "w locie" + generacja timeout'ów przez przerwanie od przepełnienia TIMER'a z obsługą w pętli głównej.

    ps. Zrób test przy użyciu aktualnego kodu:
    1. Zmień Waitms 10 po AT+CMGS na 1-2 sekundy (Waitms 1000 lub Waitms 2000)
    2. Wyślij Print "Tresc SMS" ; Chr(26); (bez Chr(13); na końcu)
    3. Odczekaj 5 sekund

    0
  • #19 12 Sty 2018 10:02
    MAREK MRK
    Poziom 18  

    U mnie przykładowa procedura z jakiegoś tam programu wygląda tak:

    Code:
    If A1 = 1 Then
    
    Print "AT+CMGS=+48xxxxxxxxx;"
    Wait 1
    Print "Alarm 1" ; Chr(26);
    Wait 8
    End If

    0
  • #20 12 Sty 2018 10:03
    22053
    Użytkownik usunął konto  
  • #21 12 Sty 2018 22:31
    dobo_28
    Poziom 11  

    Dziękuję za podpowiedzi
    Jaca to co napisałeś o czekaniu na rezultat czyli na potwierdzenie lub nie wykonania zadania przez moduł GSM jest bardzo dobre tylko nie na moim poziomie wiedzy, bo nie wiem jak odebrać te rezultaty. To co napisałem w kodzie rozumiem poza 1 sprawą dotycząca bufora to skopiowałem z innego projektu i nie bardzo rozumiem dlaczego tak to ma wyglądać.
    Wysyłanie jest proste odpowiada za to print ale co odpowiada za wejście nie wiem.

    Przykładowo miało by to pewnie wyglądać "input" określę jako wejście gdzie odbieram dane z modułu GSM

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Problemem był i czasem się jeszcze zdarza znak zachęty (">") gdy go nie ma nie zostaje wysłana zwrotka SMS.

    Po wydłużeniu czasu do 4 sekund po komendzie "Print "AT+CMGS=" ; Chr(34) ; Numer_telefonu ; Chr(34) ; Chr(13) ;" znacznie poprawiło działanie ale czasem się jeszcze zdarzy, że nie zostaje wysłany znak zachęty (">") przez modem i wtedy nie dostaję zwrotki SMS.

    Wycinek części wysyłającej
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • #22 26 Sty 2018 18:28
    dobo_28
    Poziom 11  

    pomożecie z tym odbiorem znaku zachęty?

    0
  • #23 31 Sty 2018 06:11
    MAREK MRK
    Poziom 18  

    Ja korzystam najczęściej z dwóch sposobów. Funkcją input oraz urxc.
    Przykłady:

    Code:
    $regfile = "m8def.dat"
    
    $crystal = 16000000
    $baud = 19200
    Dim Rs As String * 10
    Do
    Input Rs
    If Rs = "XXXXXXXXXX" Then
    End If
    Loop

    Code:
    $regfile = "m8def.dat"
    
    $crystal = 16000000
    $baud = 19200
    Dim Znaki As String * 10
    Dim Ascii As Byte
    Dim Odebrane As String * 10
    On Urxc Rs232
    Enable Urxc
    Enable Interrupts
    Do
    'Zmienna Odebrane To Odebrane Znaki Po Uart
    Loop
    Rs232:
    Disable Urxc
    Ascii = Inkey()
    Znaki = Znaki + Chr(ascii)
    If Len(znaki) = 10 Then
    Odebrane = Znaki
    Znaki = ""
    End If
    If Znaki = "XXXXXXXXXX" Then
    'Tu instrukcje gdy odebrane treści równają się "XXXXXXXXXX"
    End If
    Enable Urxc
    Return

    Oczywiście w drugim przykładzie instrukcję
    Code:
    If Znaki = "XXXXXXXXXX" Then
    
    'Tu instrukcje gdy odebrane treści równają się "XXXXXXXXXX"
    End If

    Możemy przenieść do pętli i wtedy w pętli będzie wykonane porównanie.
    Oczywiście to są przykłady jak ja używam odbioru UART i trzeba dostosować je do swoich celów. Swoją drogą jestem bardzo ciekaw dalszego rozwoju projektu i programu.

    0
  • #24 04 Lut 2018 22:42
    dobo_28
    Poziom 11  

    Dla testu wykorzystując jeden z przekaźników zrobiłem w ten sposób

    Dim Rs As String * 1 'potem zmieniłem na 7 bo nie wiem jak interpretuje Chr(62)

    Input RS
    If Rs = Chr(62) Then 'użyłem Chr(62) bo > jest znakiem operatorem więc go zastąpiłem ascii
    Pk_2 = 1
    End If

    Ale to nie działa :(

    0
  • #25 05 Lut 2018 06:59
    MAREK MRK
    Poziom 18  

    A niech kolega spróbuje zamiast Chr(62) użyć zmiennej o wartości ">" i wtedy porównywać tą zmienną, wtedy to musi zadziałać. Bascom czasami dziwnie się zachowuje, nie wiem dlaczego. Ja używam wersji 2.0.7.8 na wcześniejszych nie chciał mi działać między innymi OLED mimo że program był poprawny. Może w tym leży problem, albo w części sprzętowej. Ale najpierw niech kolega spróbuje tak jak napisałem. Można napisać na szybko jakikolwiek program testowy żeby sprawdzić np komunikację, a dopiero później wszystko "zlepić" w całość.

    0