Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'Matematyka'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona


TempX

Znaleziono 3 wyniki

  1. Wstęp Dotychczasowe moje artykuły dotyczyły przeważnie prostych tematów. Sortowanie danych, systemy liczbowe, czy sterowniki PLC. Teraz zaprezentuję Wam bardziej zaawansowane narzędzie. Napotkacie go na studiach, ale także jest szansa, że wykorzystacie go w swoich projektach. W tym artykule przedstawię Ci: Czym jest Matlab? Gdzie stosuje się Matlaba? Czy warto się go uczyć? Jak zastosować podstawowe techniki do pisania twoich pierwszych programów! Na swojej drodze projektowej na pewno spotkasz się z tym programem, dlatego warto wiedzieć, czym on jest. Źródło zdjęcia. Co to MATLAB? Logo Matlaba. Źródło zdjęcia. Matlab to interaktywne środowisko wykorzystywane przez inżynierów i naukowców na całym świecie. Służy on do zaawansowanych obliczeń i symulacji. Nazwa Matlab wywodzi się od słów Matrix Laboratory i pierwotnie został stworzony do obliczeń na macierzach. Macierze to bardzo ważny temat, bo dzięki nim możesz np. rozwiązać skomplikowany układ elektroniczny lub wykorzystać je do reprezentacji danych, przykładowo odczyty czujnika w czasie. Zastosowania Matlaba Matlaba możesz wykorzystać tam, gdzie masz styczność z: skomplikowanymi operacjami na macierzach i obliczeniami matematycznymi, przetwarzaniem sygnałów - obróbką danych i ich analizą, modelowaniem - przeprowadzaniem symulacji, np. w dziedzinie robotyki, teorią sterowania - implementacją algorytmów sterowania, regulacją, sztuczną inteligencją - machine learningiem i sztucznymi sieciami neuronowymi. Dzięki temu środowisku można wykonywać obliczenia arytmetyczne i na macierzach, pisać skrypty i rozmaite algorytmy lub wykreślać wykresy funkcji 2D i 3D. Należy jednak wspomnieć, że to nie jest arkusz kalkulacyjny jak Excel! Jest to narzędzie, które umożliwia znacznie więcej, szczególnie dla inżyniera. Praktycznym wykorzystaniem programu jest sterowanie urządzeniami. Matlab oferuje biblioteki, za pomocą których można przykładowo regulować temperaturę przedmiotu odpowiednio wysterowując grzałkę i pobierając dane o temperaturze. Takie dane możemy następnie przetworzyć i wykorzystać algorytmy przetwarzania sygnałów. Matlaba można wykorzystać przy symulacji robotyki. Możliwe jest stworzenie modelu manipulatora przemysłowego, na który działają różne obciążenia. Modelowanie i symulacje to ważny etap w projektowaniu skomplikowanych rozwiązań. Źródło zdjęcia. Podsumowując: Matlab to potężne narzędzie, które warto znać, bo ma wiele zastosowań. Jest bardzo wygodne, gdy potrzebne jest zaimplementowanie bardzo skomplikowanego algorytmu. Czy warto się uczyć Matlaba? Jak najbardziej! Warto spróbować swoich sił z tym środowiskiem. Dzięki niemu można rozwiązać wiele skomplikowanych problemów we względnie krótkim czasie przy niewielkim wysiłku. Matlab jest użyteczny w wielu dziedzinach, dlatego nawet podstawowa wiedza o nim będzie bardzo przydatna. Środowisko Matlab to nie tylko program do teoretycznych obliczeń, ale także do praktycznych zastosowań. Źródło zdjęcia. Niestety jest pewien haczyk… Matlab nie jest całkowicie darmowy. Istnieją różne wersje, z których można korzystać. Jeżeli jesteś studentem kierunku technicznego, to twoja uczelnia powinna oferować Ci darmowy dostęp do wersji akademickiej. W innym wypadku istnieje 30-dniowa wersja Trial. Możesz też korzystać z Matlaba Online w wersji Basic, który oferuje darmowe korzystanie z programu przez 20 godzin miesięcznie. Podstawy Matlaba Poniżej przedstawiam podstawowe instrukcje, które pozwolą Ci pisać pierwsze programy. Korzystam z Matlaba w wersji R2024a. Po uruchomieniu zobaczymy taki widok: MATLAB R2024a. Jest to okno główne Matlaba. Na razie zajmiemy się tylko jednym jego elementem. 1. Command window Jest to największe, białe okno, w którym widnieją znaki “>>”. Okno umożliwia wpisywanie pojedynczych komend i wykonywanie ich na bieżąco. Na tym etapie możemy zacząć wykonywać proste czynności, na przykład: przypisanie: a = 5 dodawanie, odejmowanie, mnożenie, dzielenie: +, -, *, / operatory porównania: >, <, >=, <=, ~=, komentarze: % Wynik pojawi się po wpisaniu komendy. Wstawienie średnika na końcu spowoduje niepokazanie wyniku. Przykład wykorzystania command window. Jeżeli w command window utworzymy zmienną, to zostanie ona zapamiętana w środowisku i będziemy mogli ją wykorzystać później. Zmienne są zapisywane w workspace. Aby go wyświetlić należy wpisać w command window polecenie workspace. 2. Podstawowe operacje na macierzach a) Definicja Aby zdefiniować macierz należy określić jej strukturę. Gdy definiujemy macierz zapisujemy jej elementy w nawiasie kwadratowym wpisując po kolei jej elementy. Kolejne wiersze oddzielamy średnikiem. Między elementami może być przecinek, lecz nie musi. Ważna uwaga: indeks pierwszego elementu wynosi 1! Zaznaczam to, bo w innych językach może wynosić 0. Aby utworzyć wektor należy stworzyć macierz o jednym wierszu, czyli nie rozdzielać liczb średnikiem. Przykład definicji macierzy: Definicja macierzy w command window. b) Odwołanie się do elementów Podobnie jak w innych językach programowania, aby odwołać się do konkretnego elementu należy podać jego indeksy. W przypadku Matlaba indeksy podaje się w nawiasach okrągłych: Wpisanie A(3, 2) zwróci element w trzecim wierszu, drugiej kolumnie, czyli 32. Odwołanie się do pojedynczego elementu. Możemy odwołać się do całego wiersza. Polecenie A(2, : ) zwraca wszystkie elementy z drugiego wiersza. Jeżeli chcemy odwołać się do całej drugiej kolumny, to napiszemy A(:, 2). Odwołanie się do całego wiersza lub kolumny. W przypadku, gdy potrzebujemy kilku wybranych wierszy/kolumn, to możemy przekazać wektor z potrzebnymi indeksami. Wektor, podobnie jak macierz, zapisuje się w nawiasach kwadratowych. Wybranie elementów z 1. i 3. wiersza i z 1. i 3. kolumny. Chcąc wybrać następujące po sobie wiersze/kolumny należy wpisać w odpowiednie miejsce następującą formułę ze swoimi danymi: indeks_startu:krok:indeks_stopu. Utworzyłem nową macierz. Wybrałem z niej elementy od 2. do 4. wiersza. Liczby są z kolumn od 1 do 5, ale z krokiem co 2. Ostatecznie zostanie wybrany element, z co drugiej kolumny. Krok można pominąć. Wtedy wyniesie 1. Stosując polecenie end jako w miejscu indeksu stopu Matlab wybierze wszystkie elementy od indeksu startu do ostatniego możliwego elementu. c) Macierze specjalne Matlab oferuje 3 podstawowe funkcje, dzięki którym można stworzyć specjalną macierz o charakterystycznych elementach: zeros() - macierz wypełniona zerami. ones() - macierz wypełniona jedynkami. rand() - macierz o losowych elementach. We wszystkich przypadkach pierwszy argument do funkcji to ilość wierszy, a drugi to liczba kolumn. Wykorzystanie funkcji zeros(), ones() i rand(). Może zdarzyć się sytuacja, w której będziesz potrzebował/a macierz o jednakowych elementach, ale różnych od 1. W tym celu: pomnóż macierz ones() przez tę liczbę… …lub dodaj do niej o 1 mniejszą liczbę. Dwie techniki definicji macierzy o jednakowych elementach. Macierz rand() zwraca losowe elementy od 0 do 1. Jeżeli chcesz przesunąć zakres, to zastosuj następującą technikę: losowa_macierz = rand(liczba_wierszy, liczba_kolumn) * rozpiętość_przedziału + indeks_rozpoczęcia. Przykładowo: index_rozpoczęcia = 5 - dolna granica przedziału, rozpiętość_przedziału = 7 - ile elementów będzie w dobranym zakresie, Ostatecznie największa możliwa liczba wyniesie 5+7=12, a więc przedział będzie wynosił liczby z zakresu <5, 12>. Macierz o losowych elementach z zakresu <5, 12>. d) Operacje na macierzach Oczywiście macierze możemy dodawać, mnożyć i modyfikować poprzez stałe. Zapamiętaj, że w Matlabie występują dwa rodzaje mnożenia macierzy. Zwykłe mnożenie zapisujemy jako gwiazdka ( * ). Element-wise multiplication zapisuje się jako kropka i gwiazdka ( .* ). Definicje nowych macierzy. Przykładowe operacje na macierzach. 3. Przydatne funkcje Przed rozpoczęciem tego punktu wygodniej będzie przenieść się do skryptu. W tym celu należy utworzyć nowy skrypt w lewym górnym rogu: Tworzenie nowego skryptu. Ukaże się okno, w którym można pisać skrypt. Znajduje się nad command window. a) Wykres funkcji 2D. Funkcja plot() Przed wyświetleniem funkcji, należy najpierw wygenerować dane osi x i y. Najprostszym sposobem jest wygenerowanie wektorów, które będą reprezentowały te dane. Można posłużyć się funkcją linspace(). Generuję wartości osi x. Posłużę się funkcją linspace(), która tworzy wektor o podanej rozpiętości i ilości elementów. Argumenty funkcji to odpowiednio: pierwszy element, ostatni element, ilość elementów w wektorze. Jako dane dla osi y wybiorę funkcję sinus. Wykorzystam funkcję sin(). Utworzę okno posługując się funkcją figure(n), gdzie n to numer okna. To nasze pierwsze okno, więc n wyniesie 1. Czas na wyświetlenie wykresu - korzystam z funkcji plot(x, y). Pierwszym argumentem jest wektor x a drugim y. Prosty skrypt wykorzystujący funkcję plot(). Po kliknięciu przycisku run powinien wyświetlić się poniższy wykres: Funkcja sinus. Można zauważyć, że wykres jest kanciasty. To przez małą liczbę elementów w wektorze. Zmieńmy liczbę elementów ze 100 do 1000. Wykres sinusa przy większej ilości danych. Wykres wygląda lepiej i dokładniej odwzorowuje funkcję. Oprócz funkcji sinus możesz zwizualizować inne funkcje trygonometryczne lub swoje własne dane. b) Funkcja subplot() Służy do wyświetlania kilku wykresów w jednym oknie. Moglibyśmy wyświetlać je w kilku oknach tworząc nowe funkcją figure(), ale metoda, którą teraz przedstawię, często przydaje się, gdy porównujemy ze sobą kilka danych przedstawionych na wykresach. Wykorzystuję wcześniej zrobiony sinus i dodatkowo tworzę cosinusa. Tworzę okno dla wykresów funkcji funkcją figure(). Wykorzystuję funkcję subplot(w, k, p). Argumenty funkcji kolejno: w – liczba wierszy w oknie, k – liczba kolumn w oknie, p – pozycja funkcji, którą chcemy wyświetlić. Gdy wyświetlamy pierwszy wykres, to piszemy 1, przy drugim 2 itp… Zakładając, że mamy dwie funkcje do wykreślenia, to będziemy potrzebowali dwóch wierszy (na dwie funkcje) i jedną kolumnę. Wykreślam kolejne wykresy funkcją plot(x, y). Skrypt wykorzystujący funkcję subplot(). Wynik: Wynik skryptu. c) Help i dokumentacja Matlaba Za nami już kilka przydatnych funkcji. Nie trzeba ich się uczyć na pamięć, bo Matlab posiada bogatą dokumentację. Wystarczy w command window wpisać help, a następnie nazwę funkcji, którą chcemy użyć. Wykorzystanie komendy help. W helpie jest opisana funkcja, jej działanie, argumenty, które przyjmuje, co zwraca, przykłady i wiele innych przydatnych informacji. Oprócz tego zachęcam Cię do przejrzenia ogólnej dokumentacji. Znajdziesz ją w prawym górnym rogu, klikając znak zapytania. Prawy górny róg Matlaba. Tutaj znajdziesz kilka cennych elementów, takich jak dokumentacja środowiska. d) Instrukcja warunkowa if Bardzo przydatnym elementem Matlaba jest możliwość wykorzystania instrukcji warunkowej. Jej składnia prezentuje się następująco: if warunek Działanie elseif warunek Operacja else Operacja end Utwórzmy prosty skrypt, który zaprezentuje działanie ifa. Sprawdźmy, czy podając 3 długości można z nich utworzyć trójkąt: Definiujemy 3 liczby, które będą reprezentowały długości 3 boków trójkąta: a, b, c. Trójkąt jest możliwy do stworzenia, jeżeli suma dowolnych dwóch boków jest większa od trzeciego boku. Innymi słowy, poniższe warunki muszą zostać spełnione: a + b > c, a + c > b, b + c > a. Jeżeli warunek będzie spełniony, to wyświetlimy napis ‘Można utworzyć trójkąt’. W przeciwnym wypadku wyświetlimy ‘NIE można utworzyć trójkąta’. Wykorzystanie instrukcji warunkowej if. Do wyświetlenia napisu można też użyć funkcji disp(). Taki program powinien wyświetlać wynik w command window. e) Funkcje Przenieśmy ten program do osobnej funkcji, którą będziemy mogli wywoływać wielokrotnie bez powtarzania nadmiernej ilości kodu. W tym celu wykonajmy następujące kroki: W tym samym folderze, w którym jest twój główny skrypt, utwórzmy nowy skrypt. Pamiętaj, że nazwa funkcji musi mieć taką samą nazwę, co nazwa skryptu. Utwórzmy funkcję zgodnie z poniższą składnią: function zmienna_wyjściowa = nazwa_pliku(zmienne_wejściowe) W naszym przypadku: Zmienną wyjściową nazwijmy odp (odpowiedź). Nazwę pliku nazwijmy czy_trójkąt. Zmienne wejściowe to będą liczby a, b, c. Przepiszmy całą funkcję z głównego skryptu zamieniając funkcje wyświetlającą napis na przypisanie odpowiedzi do zmiennej odp. Funkcja czy_trojkat. Wywołanie funkcji. f) Pętla for Ostatnim przydatnym elementem, który chcę Ci pokazać są pętle. Służą one powtarzania pewnej czynności tyle razy ile zadeklarowaliśmy. Jej składnia wygląda następująco: for iterator = pierwszy_element:krok:ostatni_element Operacje end Napiszmy prosty przykład, w którym kilka razy wykonamy kilka operacji na zmiennej. Wykorzystano pętlę for do powtórzenia operacji. Podsumowanie MATLAB to wszechstronne i potężne narzędzie, które oferuje szerokie możliwości w zakresie rozwiązywania skomplikowanych problemów inżynieryjnych, matematycznych i naukowych. Chociaż MATLAB nie jest darmowy, jego zalety w projektowaniu, modelowaniu i analizie danych czynią go wartym nauki i inwestycji, zwłaszcza dla osób związanych z dziedzinami technicznymi. Nawet podstawowa znajomość tego środowiska może otworzyć nowe możliwości i ułatwić pracę przy wielu projektach. Jeżeli chcesz zobaczyć jak Matlab jest wykorzystywany do praktycznych celów polecam artykuł o programowaniu Arduino z użyciem tego narzędzia. Spróbuj napisać kilka skryptów/algorytmów samodzielnie. Poznawaj więcej funkcji i możliwości i spróbuj wykorzystać potencjał środowiska.
  2. Wstęp Czy wiesz, że FORBOTJESTCOOL(36) = 2676043599332257617141(10)? Ja też nie wiedziałem. Dowiedziałem się, gdy włączyłem kalkulator systemów liczbowych i odkryłem system trzydziesto szóstkowy. Do zapisu liczb wykorzystuje on cyfry od 0 do 9 i litery od A do Z. Rzeczywiście, istnieją systemy liczbowe, w których jest tak dużo dostępnych znaków, że można z nich zapisywać słowa, a nawet całe zdania. W tym przykładzie pokazałem Ci, że istnieją większe systemy liczbowe, niż te powszechnie znane, np. dwójkowy, czwórkowy, ósemkowy, czy dziesiętny. Przedstawię Ci system szesnastkowy, za pomocą którego można reprezentować kolory lub adresy urządzeń podłączonych do twojego Arduino 🙂 System szesnastkowy stosuje się do adresowania urządzeń, które komunikują się za pomocą standardu I2C. Źródło zdjęcia. Jeżeli nie znasz podstaw systemów liczbowych lub nie wiesz jak zamienić liczbę dziesiętną na binarną i na odwrót, to zapraszam Cię do mojego poprzedniego artykułu artykułu o systemie binarnym. To kluczowy temat, a wiedza z niego będzie przydatna w dalszych częściach tego artykułu! Konwersja liczb szesnastkowych i dziesiętnych System szesnastkowy, nazywany również heksadecymalnym (w skrócie hex), jak sama nazwa wskazuje, zawiera w sobie 16 znaków, którym przypisane są odpowiednie wartości systemu dziesiętnego. W systemie szesnastkowym korzystamy z cyfr 0..9 i liter A...F: A(16) = 10(10) B(16) = 11(10) C(16) = 12(10) D(16) = 13(10) E(16) = 14(10) F(16) = 15(10) a) Zamiana przy użyciu operacji modulo (dec → hex) Jest to standardowa, algorytmiczna operacja, którą można wykonać z każdym innym systemem liczbowym. W naszym przypadku liczbę dzieli się całkowicie przez 16(10) i zapisuje się resztę z dzielenia. Powtarza się to do momentu, aż w wyniku dzielenia znajdzie się 0. Wynik odczytywany jest od końca z reszt z dzielenia. Spróbujmy zamienić liczbę 234(10) na liczbę hex: Wynik dzielenia całkowitego kolejnych liczb zapisujemy w lewej kolumnie a resztę z dzielenia po prawej. Wynik, czyli liczbę szesnastkową, odczytuje się z reszt z dzielenia - od dołu do góry. Poniżej jeszcze dwa przykłady. b) Konwersja za pomocą wag (hex → dec) W tej metodzie korzystamy z definicji systemu liczbowego - każda cyfra na konkretnej pozycji definiuje wagę tej pozycji. Przeliczmy liczbę 1CA9(16): Podstawą liczby heksadecymalnej jest 16(10). Cyfra na ostatniej pozycji ma wagę 160(10), przedostatnia 161(10), kolejna 162(10) itp. Mnożymy wagi przez cyfry na ich pozycjach. Suma wszystkich iloczynów to wynik. c) Konwersja za pomocą systemu binarnego (hex → bin → dec) Jest to sztuczka, która może Ci pomóc zamienić w szybki sposób względnie małą liczbę hex na liczbę dziesiętną. Rozsuń liczbę hex na pojedyncze cyfry. Każdą cyfrę zamień na liczbę binarną. Złóż powstałe liczby binarne. Zamień liczbę binarną na decymalną. Metodę rozsuwania stosuje się głównie do zamiany hex → bin. Weźmy na tapetę liczbę D8(16): Rozdzielamy D8(16) na poszczególne cyfry - D(16) i 8(16). D(16) w hex to 13(10) w dec. 8(16) w hex to 8(10) w dec. Wiedząc to jesteśmy w stanie zapisać te liczby w systemie binarnym. Składamy obliczone części. Złożoną część przeliczamy na system dziesiętny. d) Konwersja za pomocą systemu binarnego (dec→ bin → hex) Tego typu zamiana liczb odbywa się analogicznie do poprzedniego przykładu, ale w odwrotnej kolejności: Zamień liczbę dec na bin. Rozsuń liczbę bin co 4 bity (4 cyfry). Zamień otrzymane liczby bin na hex. Złóż otrzymane liczby hex. Jak widzisz konwersja między systemem hex a dziesiętnym nie jest trudna. Użyliśmy tylko i wyłącznie wiedzy z poprzedniego artykułu. Polecam przećwiczyć te umiejętności wymyślając jakąś małą liczbę heksadecymalną (np. składającą się z dwóch cyfr) i zamienić ją na liczbę binarną/dziesiętną. Możesz też wymyślić liczbę dziesiętną i dokonać konwersji na heksadecymalną. Zastosowania liczb hex Do czego mogą się przydać liczby szesnastkowe? Ich najważniejszą właściwością jest zwięzły zapis dużych liczb: FFFF(16) = 65535(10) = 1111111111111111(2) Jak widać powyżej, liczbę 16 bitową można zapisać za pomocą 4 cyfr (liter) w systemie heksadecymalnym. a) Reprezentacja kolorów Jednym ze sztandarowych przykładów zastosowania systemu szesnastkowego jest zapis koloru. Kod składa się ze znaku # i trzech dwucyfrowych liczb szesnastkowych, które odpowiednio oznaczają poziomy kolorów: czerwonego, zielonego i niebieskiego (RGB). Im wyższa liczba, tym intensywniejszy jest poszczególny składnik koloru. Na przykład: ● #FF0000 - czerwony, rgb(255, 0, 0), ● #00FF00 - zielony, rgb(0, 255, 0), ● #0000FF - niebieski, rgb(0, 0, 255), ● #000000 - czarny, brak jakiegokolwiek składnika, rgb(0, 0, 0), ● #FFFFFF - biały, połączenie wszystkich składników, rgb(255, 255, 255), ● #A020F0 - fioletowy, rgb(160, 32, 240). b) Adresy pamięci W jaki sposób zapisać adres pod którym ma być przechowywana zmienna? Dzisiejsze komputery charakteryzują się ogromną pamięcią. Jest wiele możliwych adresów w pamięci pod które można zapisać jakąś informację. Wiąże się to z dużymi wartościami tych adresów. Liczby, które definiują dany adres są po prostu długie. W takim wypadku możemy skorzystać z liczby szesnastkowej, która skróci nam ten zapis. Tę technikę stosuje się często. Przykładem jest np. odczyt adresu zmiennej w języku C : Deklarujemy 3 zmienne po sobie. Odczytujemy po kolei ich adresy. Każdy odczytany adres będzie zapisany w systemie szesnastkowym… …a każdy adres będzie się różnił od poprzedniego o rozmiar zadeklarowanej zmiennej. Deklaracja zmiennej char (1 bajt): char a = 'X'; char b = 'Y'; char c = 'Z'; printf("Rozmiar pojedynczego znaku: %d\n", sizeof(char)); printf("Adres zmiennej a: %p\n", &a); printf("Adres zmiennej b: %p\n", &b); printf("Adres zmiennej c: %p\n", &c); Wyjście: Rozmiar pojedynczego znaku: 1 Adres zmiennej a: 0061FF1F Adres zmiennej b: 0061FF1E Adres zmiennej c : 0061FF1D Deklaracja zmiennej short (2 bajty) : short x = 1; short y = 2; short z = 3; printf("Rozmiar pojedynczego shorta: %d\n", sizeof(short)); printf("Adres zmiennej x: %p\n", &x); printf("Adres zmiennej y: %p\n", &y); printf("Adres zmiennej z: %p\n", &z); Wyjście: Rozmiar pojedynczego shorta: 2 Adres zmiennej x: 0061FF1A Adres zmiennej y: 0061FF18 Adres zmiennej z: 0061FF16 c) Adresy urządzeń w transmisji I2C Jednym z najpopularniejszych zastosowań systemu szesnastkowego jest zapis adresów urządzeń w komunikacji I2C (TWI). Skorzystajmy z karty katalogowej czujnika temperatury Adafruit 4089 z cyfrowym termometrem ADT7410, który może komunikować się właśnie przez ten protokół. Wycinek karty katalogowej Adafruit 4089. Źródło zdjęcia. Karta katalogowa urządzenia komunikującego się przez I2C powinna dostarczać klientowi informację o adresie danego urządzenia. Niektóre urządzenia dają możliwość konfiguracji adresu za pomocą pinów tego urządzenia. W przykładzie powyżej, jeżeli korzystamy z kilku tych samych czujników lub adres tego czujnika powtarza się z adresem innego, to za pomocą pinów A0 i A1 możemy zmienić jego adres. d) Adres MAC Jest to unikatowy i niepowtarzalny adres karty sieciowej nadany przez producenta. Stanowi on 48 bitową liczbę z czego pierwsze 24 bity oznaczają producenta karty sieciowej (ID producenta). Pozostałe 24 to ID urządzenia. Ze względu na rozmiary liczb, które są używane w adresach MAC, pisze się je w systemie szesnastkowym, co znacznie ułatwia odczyt takiego adresu. Przykładowe sposoby zapisu adresu MAC: 00:0c:29:cc:55:5e - MAC w Linux. Separatorem między parami znaków jest dwukropek. 00-0c-29-cc-55-5e - MAC w Windows. Separatorem między parami znaków jest myślnik. 000c.29cc.555e - MAC w urządzeniu sieciowym Cisco. Kropki między hextetami Adres MAC w Linux. Źródło zdjęcia. e) Komendy w postaci liczb hex Wysyłanie komend do mikrokontrolera może odbywać się właśnie w tym systemie. Dlaczego? Powód jest ten sam co wcześniej - możemy zawrzeć wiele komend w zwartym zapisie. Np. 0x00 - uśpij urządzenie, 0x01 - wybudź urządzenie, 0x02 - sparuj urządzenie, 0x03 - skonfiguruj urządzenie, 0x1F - włącz LED, itp. Jest to moim zdaniem dobry pomysł do organizacji i implementacji komunikacji z uC. Podsumowanie System szesnastkowy to bardzo przydatny i elastyczny system, który pozwala na zapisanie dużych liczb w krótkim zapisie. Jest on wykorzystywany praktycznie wszędzie, gdzie korzysta się z wielobitowych liczb. Nasuwa się jednak pytanie: Dlaczego nie korzystamy z większych systemów liczbowych? Jest kilka powodów: Złożoność zapisu - w systemie hex stosuje się 16 cyfr. Wyższe systemy liczbowe wprowadzają kolejne znaki oznaczające kolejne cyfry. W pewnym momencie może być po prostu za dużo tych znaków do interpretacji, co może komplikować program. Zgodność z potęgą liczby dwa - 16(10) = 24(10). System będący potęgą dwójki ułatwia obliczenia matematyczne i jest zgodny z logiką komputerową i cyfrową.
  3. Cześć, jakiś czas temu w firmie w której pracuję wspomniałem, że przydałby się "MATLAB"+"Simulink" do prototypowania i symulacji nowych projektów. Nie liczyłem, że będzie jakiś odzew. Ku mojemu zdumieniu w zeszłym tygodniu dostałem płytkę DVD z komercyjną wersją programu "Polymath" (wersja 2.20 pod WindowsXP). Oto link do strony producenta tego oprogramowania: https://www.polymath-software.com/ Zainstalowałem tą wersję na jakimś starym laptopie z Windows XP i przyjrzałem się przykładowym projektom. Z tego co zobaczyłem ten program ma importy/eksporty do Matlab'a i dość rozbudowane moduły do wizualizacji danych. Czy ktoś z Was używał może tego programu i mógłby się podzielić doświadczeniami? Pozdrawiam
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.