Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 7 kwi 2025, o 01:18


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
    Autor Wiadomość
    PostNapisane: 2 lut 2013, o 14:51 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    Postanowiłem jakoś uporządkować to wszystko dla potencjalnych Bascomowców
    sam już się zresztą gubię w bascomie bo dawno go nie używałem -- siła ewolucji i został wyparty przez ARDUINO
    do szybkiego sprawdzania koncepcji . Nie mniej warto to i owo sobie przypomnieć :)

    Jedziemy:

    Z wielu dziwnych zapytań wybór padła na 16 .... oto one

    1. Jak deklarować zmienne?
    2. Jak deklarować stałe?
    3. Jak deklarować tablice?
    4. Jak zrobić pętlę?
    5. Jak deklarować i wywoływać podprogramy?
    6. Jak sterować alfanumerycznym wyświetlaczem LCD?
    7. Jak pisać warunki?
    8. Jak zmienić nazwę zmiennych, stałych itp?
    9. Jak wykonać pętle opóźnienia czasowego?
    10. Jak obsługiwać przerwania?
    11. Jak obsługiwać szynę I2C?
    12. Jak wyeliminować drgania styków?
    13. Co to jest wyświetlacz multipleksowy i jak nim sterować z poziomu Bascom'a?
    14. Jak obsłużyć klawiaturę od PC'ta?
    15. Jak zamienić liczbę na ciąg 01?
    16. Jak obsłużyć impulsator?


    ------------------- ODPOWIEDZI ------------------------------

    1. Jak deklarować zmienne?

    DIM nazwa_zmiennej1 AS BIT - zakres zmiennej 0..1
    DIM nazwa_zmiennej2 AS BYTE - zakres zmiennej 0..255
    DIM nazwa_zmiennej3 AS WORD - zakres zmiennej
    DIM nazwa_zmiennej4 AS INTEGER - zakres zmiennej -32767..32768
    DIM nazwa_zmiennej5*10 AS STRING - zmienna tekstowa o długości w tym przypadku 10

    2. Jak deklarować stałe?

    CONST nazwa_stałej1 = &HF
    CONST nazwa_stałej2 = -1000
    CONST nazwa_stałej3 = 1.1
    CONST nazwa_stałej4 = "tekst"

    3. Jak deklarować tablice?

    DIM nazwa_tablicy(ilość) AS rodzaj_zmiennej
    nazwa_tablicy(5) = 146 'zapianie do 5 elementu tablicy liczby 146

    4. Jak zrobić pętlę?

    DO 'początek pętli
    ... 'operacje i polecenia wykonywane w pętli
    LOOP 'koniec pętli i powrót do początku

    5. Jak deklarować i wywoływać podprogramy?

    Na początku programu wpisujemy deklaracje o podprogramie:

    DECLARE SUB nazwa_podprogramu(zmienna AS typ_zmiennej)

    A następnie w programie piszemy, co konkretnie podprogram ma wykonywać. Robimy to w następujący sposób:

    SUB nazwa_podprogramu(zmienna AS typ_zmiennej) 'początek podprogramu
    ... 'operacje i polecenia wykonywane w pętli
    END SUB 'koniec podprogramu

    Aby wywołać podprogram piszemy:

    CALL nazwa_podprogramu(zmienna)

    Oczywiście, jeśli w podprogramie nie będziemy wykonywać jakichkolwiek operacji na zmiennej podawanej w nawiasie, nie deklarujemy tego na początku, a przy wywoływaniu podprogramu pomijamy zmienną.

    6. Jak sterować alfanumerycznym wyświetlaczem LCD?

    W Bascomie sterowanie wyświetlaczy alfanumerycznych LCD jest banalnie proste. Wystarczy tylko poinformować kompilator, do których linii portu będzie on podłączony (OPTIONS/COMPILER/LCD) i zadeklarować na początku programu rodzaj podłączanego wyświetlacza:

    CONFIG LCD=ilość_znaków*ilość_linii

    gdzie ilość znaków i ilośćlinii może być następująca: 40*4, 40*2, 16*1, 16*1a, 16*2, 16*4, 16*4, 20*2, 20*4,40*4a
    W przypadku problemów ze sterowaniem 16*1 lub 40*4 należy zamienić je na 16*1a lub 40*4a
    Bascom pozwala na wykonywanie następujących operacji na wyświetlaczu:

    LCD "TEKST" 'wyświetlenie napisu TEKST
    LCD zmienna 'wyświetlenie zmiennej
    LCD "tekst"; zmienna 'wyświetlenie w jednej linii napisu TEKST i wartości zmiennej
    CLS 'kasowanie wyświetlacz
    CURSOR ON/OFF, BLINK/NOBLINK 'operacje na kursorze
    gdzie ON/OFF - włącz lub wyłącz kursor, BLINK/NOBLINK - włącz lub wyłącz miganie kursora, polecenia ta mogą działać oddzielnie, czyli możemy np. napisać:
    CURSOR BLINK
    LOCATE linia,pozycja_kursora 'ustawienie kursora na linii i pozycji
    SHIFTCURSOR LEFT/RIGHT 'przesuwanie kursora w lewo lub wprawo
    SHIFTLCD LEFT/RIGHT 'przesuwanie tekstu w lewo lub w prawo
    DISPLAY ON/OFF 'włączenie lub wyłączenie wyświetlacza
    UPPERLINE 'przejście kursora do wyższej linii
    LOWERLINE 'przejście kursora do niższej linii
    THIRDLINE 'przejście kursora do trzeciej linii
    FOURTHLINE 'przejście kursora do czwartej linii
    DEFLCDCHAR numer_banku , 31 , 17 , 17 , 17 , 17 , 17 , 31 , 0 ' deklarowanie własnego znaku np. polskich liter, gdzie numer_banku: 0..7. Aby stworzyć dowolny znak należy wybrać z menu TOOLS/LCD DESIGNER, a następnie narysować żądany znak. Bascom automatycznie wstawi polecenie DEFLCDCHAR do programu. My tylko musimy podać numer banku.

    7. Jak pisać warunki?

    IF zdarzenie THEN
    ... 'to co ma się zdarzyć jeśli warunek będzie spełniony
    ELSE
    ... 'to co ma się zdarzyć jeśli warunek nie będzie spełniony
    END IF 'koniec warunku
    Zdarzenie może mieć następującą postać:
    zmienna = 0 'jeśli zmienna będzie równa zero
    P1.0 = 1 'jeśli bit 0 portu P1 będzie równy jeden
    PRZYKŁAD:
    'Chcemy zliczać sekundy w pętli
    DIM sekundy AS BYTE 'deklaracja zmiennej sekundy
    DO 'początek pętli
    INCR sekundy 'zwiększenie o 1 zmiennej sekundy
    IF sekundy = 60 THEN 'jeśli sekundy = 60 to
    sekundy = 0 'wyzeruj sekundy
    END IF 'koniec warunku przepełnienia
    LOOP 'zapętlenie - skok do DO
    Pewnie się zastanawiasz co trzeba zrobić, aby zliczać jeszcze minuty, godziny, czy nawet dni. Odpowiedź jest bardzo prosta. W warunku przepełnienia (if sekundy =60 then) wpisujemy polecenia od INCR do END IF odwołując się do minut. Następnie w warunku przepełnienia minut wpisujemy to samo odnośnie godzin itd.

    8. Jak zmienić nazwę zmiennych, stałych itp?

    nowa_nazwa ALIAS stara_nazwa
    To polecenie jest bardzo przydatne, gdyż możemy nazwać np. bity portów w zależności od funkcji jakie pełnią np. chcemy za pomocą P3.7 sterować buzzerem możemy więc zmienić nazwę P3.7 na BUZZER, a nastepnie odwoływać się do nowej nazwy. Wygląda to tak:
    BUZZER ALIAS P3.7
    RESET BUZZER 'wyzerowanie BUZZER, a właściwie P3.7
    WAIT 1 'poczekaj 1 sekundę
    SET BUZZER 'ustawienie 1 na P3.7

    9. Jak wykonać pętle opóźnienia czasowego?

    DELAY 'opóźnienie ok. 100us
    WAITMS milisekundy 'opóżnienie w milisekundach 0..255
    WAIT sekundy 'opóźnienie w sekundach

    10. Jak obsługiwać przerwania?

    ENABLE INT0 'zezwolenie na przerwanie z INT0, zamiast INT0 możemy wpisać: INT1, SERIAL, TIMER0, TIMER1,TIMER2, a nawet INT3, INT4, INT5, INT6, INT7, INT8 , CAN. Zależy to oczywiście od używanego mikroprocesora.
    ON INT0 podprogram 'poinformowanie kompilatora, który podprogram ma być wywoływany przy przerwaniu
    ENABLE INTERRUPTS 'odblokowanie układu przerwań
    DIASBLE INT0 'wyłączenie przerwania

    11. Jak obsługiwać szynę I2C?

    Na początku musisz zadeklarować, które bity portu będą pełnić funkcje linii danych SDA i linii zegarowej SCL.
    CONFIG SDA = P1.0
    CONFIG SCL = P1.1
    Potem w programie:
    I2CSTART 'warunek startu szyny
    I2CWBYTE zmienna, ACK/NOACK 'zapis zmiennej z potwierdzeniem (ACK) lub bez
    I2CRBYTE zmienna, ACK/NOACK 'odczyt zmiennej z potwierdzeniem (ACK) lub bez
    I2CSTOP 'warunek stopu szyny

    12. Jak wyeliminować drgania styków?

    Drgania styków można wyeliminować w dwojaki sposób:
    - sprzętowo poprzez dodanie kondensatorów zwierających
    - programowo: poprzez dwukrotne sprawdzanie stanu przycisku z odstępem czasu między nimi. Wygląda to tak:

    IF P1.0 = 0 THEN 'jeśli P1.0 = 0 to
    WAITMS 30 'poczekaj 30 milisekund
    IF P1.0 = 0 THEN 'sprawdź po raz drugi, czy P1.0 = 0 i jeśli tak to
    CALL podprogram 'wywołaj podprogram
    END IF 'koniec drugiego warunku
    END IF 'koniec pierwszego warunku

    13. Co to jest wyświetlacz multipleksowy i jak nim sterować z poziomu Bascom'a?

    Wyświetlacz multipleksowy to taki, w którym wykorzystuje się bezwładność ludzkiego oka sterując w jednej chwili tylko jednym znakiem na wyświetlaczu. Poprzez szybkie włączanie i wyłączanie kolejnych znaków uzyskuje się efekt świecenia wszystkich znaków.W przypadku wyświetlaczy LED robi się to w następujący sposób: każdy segment jednej cyfry łączymy z takim samym segmentem drugiej cyfry itd. W przypadku techniki mikroprocesorowej będą to najczęściej katody, gdyż wydajność prądowa portu jest dla "0" logicznego. Połączone segmenty łączy się z wybranymi bitami portu. Anody wyświetlaczy muszą być załączane z drugiego portu np. P3 poprzez tranzystory PNP. Sterowanie odbywa się w następujący sposób przy założeniu, że na początku wszystkie wyświetlacze są wyłączone:

    - ustaw na porcie P1 to co ma być wyświetlone na pierwszym pojedyńczym wyświetlaczu,
    - włącz pierwszy wyświetlacz,
    - poczekaj chwilę
    - wyłącz pierwszy wyświetlacz
    - ustaw na porcie P1 to co ma być wyświetlone na drugim pojedyńczym wyświetlaczu,
    - włącz drugi wyświetlacz,
    - poczekaj chwilę,
    - wyłącz drugi wyświetlacz
    - ...
    - skocz do początku

    Przykładowy program:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    14. Jak obsłużyć klawiaturę od PC'ta?

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    15. Jak zamienić liczbę na ciąg 01?

    Nazwa_zmiennej.numer_bitu = 1 'ustawienie bitu o numerze = numer_bitu.
    Print Nazwa_zmiennej.numer_bitu 'wysłanie po RS' bitu o numerze = numer_bitu.
    Gdzie numer_bitu liczymy od 0 (najmniej znaczący bit).

    PRZYKŁAD:

    Chcemy wyświetlić na wyświetlaczu LCD 8 bitów liczby
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Jeśli dla wartości poszczególnych bitów będziemy wykonywać inne czynności to musimy jeszcze dodać warunki na wartość zmiennej i. Można to zrobić za pomocą IF bądź CASE. Jest to najlepszy sposób na definiowanie ustawień w naszym urządzeniu. Jeśli np bit 5 zmiennej ustawienia ma wartość 1 to znaczy, że np budzik jest włączony.

    16. Jak obsłużyć impulsator?

    Przykład z listy dyskusyjnej bascoma

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Może się to komyś przyda ....

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lut 2013, o 15:10 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27366
    Lokalizacja: Szczecin
    Pomógł: 1043

    O! jaki expresowy poradnik do Bascoma ;) SZOK! .... Sun ty to masz fajne pomysły.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lut 2013, o 15:33 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 31 lip 2012
    Posty: 157
    Pomógł: 8

    Tez kiedyś zaczynałem karierę w Bascom. No nie powiem szlo nawet dobrze. Po czasie stwierdziłem że czas na przesiadkę na C. Oj i tee moje walki z tym językiem. Książek przeróżnych chyba z 5, stron www setki i stwierdziłem ze wracam do punktu wyjścia czyli Bascom. Na szczęście w moje ręce wpadła niebieska książeczka wydawnictwa ATNEL (nie mylić z inną niebieską książką na temat j. C którą również posiadam) Pierwsze wrażenie ojj jakieś volatile, struktury, wskaźniki a do tego jeszcze własne biblioteki obsługi różnych modułów ??? omg! I teraz cenna uwaga dla czytających ten topic. Bajki piszę w ostatnim zdaniu. Wszystko świetnie wyjaśnione.W ogóle to teraz się zastanawiam dlaczego nie od razu C. A no dla tego że nie było odpowiedniej literatury czyli tego niebieskiego booka. Zachęcam wszystkich bascomowiczów na taką przesiadkę. Naprawdę warto.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 sie 2013, o 18:38 
    Offline
    Użytkownik

    Dołączył(a): 29 cze 2013
    Posty: 209
    Lokalizacja: Tarnowskie Góry
    Pomógł: 0

    k_mirek napisał(a):
    Tez kiedyś zaczynałem karierę w Bascom. No nie powiem szlo nawet dobrze. Po czasie stwierdziłem że czas na przesiadkę na C. Oj i tee moje walki z tym językiem. Książek przeróżnych chyba z 5, stron www setki i stwierdziłem ze wracam do punktu wyjścia czyli Bascom. Na szczęście w moje ręce wpadła niebieska książeczka wydawnictwa ATNEL (nie mylić z inną niebieską książką na temat j. C którą również posiadam) Pierwsze wrażenie ojj jakieś volatile, struktury, wskaźniki a do tego jeszcze własne biblioteki obsługi różnych modułów ??? omg! I teraz cenna uwaga dla czytających ten topic. Bajki piszę w ostatnim zdaniu. Wszystko świetnie wyjaśnione.W ogóle to teraz się zastanawiam dlaczego nie od razu C. A no dla tego że nie było odpowiedniej literatury czyli tego niebieskiego booka. Zachęcam wszystkich bascomowiczów na taką przesiadkę. Naprawdę warto.



    I tu pojawia się problem bo Mi osobiście ciężko jest się przesiąść z bascoma na C. Nawet kupiłem sobie "niebieską" książkę przeczytałem połowę i mam mętlik w głowie...
    Żałuje że od razu nie wziąłem się za C na bank było by mi teraz łatwiej

    ------------------------ [ Dodano po: 19 minutach ]

    k_mirek napisał(a):
    Tez kiedyś zaczynałem karierę w Bascom. No nie powiem szlo nawet dobrze. Po czasie stwierdziłem że czas na przesiadkę na C. Oj i tee moje walki z tym językiem. Książek przeróżnych chyba z 5, stron www setki i stwierdziłem ze wracam do punktu wyjścia czyli Bascom. Na szczęście w moje ręce wpadła niebieska książeczka wydawnictwa ATNEL (nie mylić z inną niebieską książką na temat j. C którą również posiadam) Pierwsze wrażenie ojj jakieś volatile, struktury, wskaźniki a do tego jeszcze własne biblioteki obsługi różnych modułów ??? omg! I teraz cenna uwaga dla czytających ten topic. Bajki piszę w ostatnim zdaniu. Wszystko świetnie wyjaśnione.W ogóle to teraz się zastanawiam dlaczego nie od razu C. A no dla tego że nie było odpowiedniej literatury czyli tego niebieskiego booka. Zachęcam wszystkich bascomowiczów na taką przesiadkę. Naprawdę warto.



    I tu pojawia się problem bo Mi osobiście ciężko jest się przesiąść z bascoma na C. Nawet kupiłem sobie "niebieską" książkę przeczytałem połowę i mam mętlik w głowie...
    Żałuje że od razu nie wziąłem się za C na bank było by mi teraz łatwiej



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 sie 2013, o 22:06 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 10 sty 2013
    Posty: 844
    Lokalizacja: Przemyśl
    Zbananowany użytkownik

    Pomógł: 43

    Nie tylko tobie ;)

    Ale wbrew pozorom da się- tylko trzeba mocno sobie postanowić żeby w czasie nauki używać jednego języka- jak ja- na bascoma nie patrzę już parę miesięcy ;)

    _________________
    Klimatyzacja Przemyśl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO