Skocz do zawartości

Przeszukaj forum

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

  • 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

Znaleziono 5 wyników

  1. Czego dowiesz się z tego artykułu? Każdy to robi, natomiast prawie nikt nie zwraca na to uwagi. Nawet czytając ten tekst, organizm czytelnika wykonuje ściśle określoną listę kroków, która pozwala mu na zrozumienie czytanego tekstu. Algorytm to uporządkowany zbiór zadań, które wykonuje się w celu rozwiązania problemu. Czytając poniższy tekst zrozumiesz, że algorytmy są związane z praktycznie wszystkim co robisz na co dzień. Wprowadzę Cię do zapisu algorytmów. W artykule przedstawiono również 2 proste algorytmy zapisane w formie programu dla Arduino. Algorytmy w codziennym życiu. Załóżmy, że chcielibyśmy upiec ciasto, tak jak robiła to nasza babcia, która kierowała się konkretnym przepisem. Zaglądamy do jej zeszytu i czytamy, że potrzebujemy jajka, mąkę, masło i inne składniki. Pierwszym krokiem jest pokrojenie masła. Drugi to dodanie mąki, proszku do pieczenia, cukru i masła do miski. Po kolejnych 10 krokach wyciągamy pyszne ciasto z piekarnika i po ostygnięciu delektujemy się nim. Postępujemy tutaj według jasno określonej listy zadań, którą wymyśliła nasza babcia i dzięki której możemy osiągnąć pożądany cel. Po zjedzeniu ciasta wychodzimy na spotkanie z naszym znajomym. Nasz kolega mieszka na 1 piętrze, a winda nie działa, więc kierujemy się na schody. Wchodzimy na pierwszy stopień i weryfikujemy, czy jesteśmy na 1. piętrze. Jeżeli nie, to wchodzimy o 1 stopień wyżej i powtarzamy to, dopóki nie znajdziemy się na docelowym piętrze. W tym przypadku nasze postępowanie jest wyrażone za pomocą powtarzających się czynności, które kończymy, gdy założony przez nas warunek się spełni. Oczywiście w takich sytuacjach postępujemy automatycznie, ale warto było o tym wspomnieć, bo są to życiowe przykłady algorytmów - przepisów, które prowadzą do rozwiązania problemu, np. upieczenia ciasta, lub wejścia na 1. piętro. Mówimy o algorytmie, gdy jest on: poprawny - działa, jednoznaczny - daje ten sam wynik przy takich samych danych, skończony - nie działa w nieskończoność, efektywny - wykonuje się w sensownym czasie. Trzeba pamiętać, że algorytm ≠ program. Jeżeli algorytm jest zapisany językiem programowania, to wtedy możemy mówić o programie. Zapis algorytmów i przykłady Pamiętaj, że bardzo złym pomysłem jest zapisywanie algorytmów jako jakąś opowieść, bo może to zaburzać interpretację ich działania. Dobrym zwyczajem jest zapisywanie ich technikami, które zostały przedstawione poniżej. Lista kroków Najprostszą i najbardziej naturalną techniką jest zapis algorytmu w postaci ponumerowanych punktów, w których wypisujemy po kolei, co robimy. Zależnie od sytuacji, kroki można pomijać lub do nich wracać. Uproszczony algorytm wykonania ciasta. Autor nie ponosi odpowiedzialności za korzystanie z tego przepisu! pokrój 100 g zimnego masła na małe kosteczki dodaj do miski: 200 g szklanki mąki, pokrojone masło, 13 g proszku do pieczenia, 26 g cukru i rozbite jajko bez skorupki zmieszaj porządnie zawartość miski ciasto włóż do lodówki po 15 minutach wyciągnij ciasto piekarnik nagrzej do 180 stopni Celsjusza wypełnij formę ciastem i dodaj owoce włóż do piekarnika blachę z ciastem na 50 minut sprawdź czy gotowe. Jeżeli tak to przejdź do kroku 12. W przeciwnym razie przejdź do kroku 10 poczekaj minutę przejdź do kroku 9 wyjmij ciasto i daj mu ostygnąć zakończ algorytm Powyższy algorytm jest uproszczeniem. Bezmyślne kierowanie się nim może skutkować tym. Jesteśmy ludźmi i raczej każdy rozumie zwrot dodaj cukier. Algorytm wchodzenia po schodach: sprawdź czy wszedłeś na docelowe piętro. Jeżeli tak, to przejdź do kroku 4. W przeciwnym razie przejdź do następnego kroku wejdź o jeden stopień do góry przejdź do kroku 1 zakończ algorytm W powyższych algorytmach pojawiają się instrukcje warunkowe (jeżeli) i pętle (jeżeli… przejdź do kroku poprzedniego) - jedne z najważniejszych zagadnień programowania. Instrukcją warunkową nazywamy fragment programu, który praktycznie odpowiada na pytanie w formie: tak/nie, prawda/fałsz, 1/0. Na podstawie odpowiedzi może wykonywać jakąś czynność. Pętla to fragment kodu, który powtarza się, jeżeli warunek przypisany do tej pętli jest spełniony. W kolejnych przykładach będę posługiwał się tylko algorytmem wchodzenia po schodach, bo jest on krótki i wystarczy do wyjaśnienia innych technik zapisywania algorytmów. Pseudokod Jak sama nazwa wskazuje, jest to symbolicznie zapisany kod, który w dużej mierze zachowuje zasady języków programowania. W tym artykule wykorzystamy zasady, które opisano w tym dokumencie. Należy pamiętać, że nie istnieje oficjalny standard dla pseudokodu i to jest tylko szkolny przykład. Operacje matematyczne dodawanie – + odejmowanie – - mnożenie – • dzielenie – / dzielenie całkowite – div reszta z dzielenia – mod Przypisanie wartości do zmiennej a ← 3 Instrukcja warunkowa jeżeli a = 3 wykonuj a ← 0 w przeciwnym razie a ← 1 Operatory porównania większe - > większe równe - ≥ mniejsze - < mniejsze równe - ≤ równe - = nierówne - ≠ Operatory logiczne AND - i OR - lub Pętle dopóki a < 10 wykonuj a ← a + 1 lub dla i = 1, 2, 3, … 10 wykonuj a ← a + 1 lub wykonuj a ← a + 1 dopóki a < 10 Przedstawmy teraz algorytm wchodzenia po schodach w postaci pseudokodu. Musimy założyć pewne uproszczenia i dodatki: z góry wiemy ile dane schody mają stopni wejście na stopień traktujemy jako dodanie 1 do zmiennej wskazującej aktualny stopień gdy będziemy na środkowym stopniu to powiemy “połowa za mną…” po wejściu na piętro jesteśmy bardzo szczęśliwi, że nasz algorytm działa, więc mówimy “jestem na piętrze!” wprowadź liczbaStopni aktualnyStopien ← 0 dopóki aktualnyStopien < liczbaStopni wykonuj aktualnyStopien ← aktualnyStopien + 1 jeżeli aktualnyStopien = liczbaStopni div 2 wypisz “Połowa za mną…” wypisz “Jestem na piętrze!” Zapisując algorytm w pseudokodzie, pamiętaj, żeby stosować wcięcia do operacji, które dotyczą użytej wcześniej instrukcji, takiej jak instrukcja warunkowa. Zapewni to czytelność i poprawne działanie kodu, ponieważ pseudokod bazuje na wcięciach. Pseudokod zapewnia szybki zapis algorytmu i możliwość łatwego przekonwertowania go na język programowania. Schemat blokowy W tej technice używamy bloków o konkretnym kształcie, aby wskazać różne instrukcje algorytmu. Podstawowe kształty: owal - miejsce rozpoczęcia/zakończenia algorytmu prostokąt - operacje na zmiennych romb - instrukcja warunkowa równoległobok - wprowadzenie/wypisanie danych I tak jak poprzednio, algorytm wchodzenia po schodach: Dla czytelności polecam wejść w pełny obraz. Schemat blokowy czyta się od punktu START i podąża się zgodnie ze strzałkami, wykonując wszystkie operacje zawarte w mijanych blokach. Spróbuj przeanalizować powyższy algorytm! Dzięki schematowi blokowemu będziesz mógł przedstawić swoje algorytmiczne pomysły w czytelny i klarowny sposób. Należy pamiętać, że schemat blokowy dobrze sprawdza się w algorytmach mniejszych rozmiarów. Spróbuj sobie wyobrazić, co by było, gdyby na schemacie znajdowało się 100 różnych bloków i byłoby między nimi dużo połączeń… Język programowania Wcześniejsze techniki zapisu algorytmów są stosowane do ich przedstawienia w sposób symboliczny. Komputer to maszyna i potrzebuje konkretnych instrukcji, dlatego stosuje się języki programowania, które są jednoznaczne i precyzyjne. Mówiąc chcę dodać dwie liczby trzeba jeszcze sprecyzować, jakie mają wartości, jakiego są typu, gdzie będzie przechowywany wynik itp. Każdy język charakteryzuje się składnią i semantyką, czyli sposobem, w jaki programy napisane w danym języku są konstruowane i interpretowane przez komputer. Składnia odnosi się do struktury i zapisu gramatycznego kodu, czyli do tego, jakie konstrukcje i polecenia są akceptowane w danym języku. Z kolei semantyka odnosi się do znaczenia tych konstrukcji oraz sposobu, w jaki są one rozumiane i wykonane przez interpreter lub kompilator. Poniżej znajduje się zapis algorytmu wchodzenia po schodach w języku C. #include <stdio.h> int main() { int iloscStopni = 10; int aktualnyStopien = 0; while (aktualnyStopien < iloscStopni) { aktualnyStopien = aktualnyStopien + 1; if (aktualnyStopien == iloscStopni / 2) { printf("Polowa za mna!\n"); } } printf("Jestem na pietrze!\n"); return 0; } Tutaj warto zaznaczyć jak korzysta się z funkcji. Nazwę możesz kojarzyć z matematyki, gdzie występuje funkcja f(x). Dokładnie w ten sam sposób działają funkcje w programowaniu. Wywołując ją podajesz jej nazwę i w nawiasach argumenty, które zostaną wykorzystane do pewnych operacji. Funkcja może zwracać pewną wartość lub nie. Np. funkcja printf() nic nie zwraca, ale wypisuje napis w konsoli. Jeżeli zwraca to musimy podać zmienną przechowującą wartość wyniku. Na początku programu musimy pobrać bibliotekę, w której znajdują się funkcje, których będziemy używali w programie. Za to odpowiada pierwsza linijka - #include <stdio.h>. W C operacje pisze się między nawiasami klamrowymi, które oznaczają początek i koniec danej instrukcji. W tym przypadku cały program jest zapisany w funkcji głównej main(), która zawsze się wykonuje przy uruchomieniu programu. Na końcu każdej operacji musi wystąpić średnik! Żeby nie komplikować kodu pobraniem wartości założyłem, że wiemy od samego początku, ile jest stopni na schodach, dlatego równocześnie z deklaracją, że będzie to zmienna stałoprzecinkowa int, przypisujemy jej wartość 10: int iloscStopni = 10;. while() to pętla odpowiadająca pętli dopóki w pseudokodzie. W nawiasach wpisujemy warunek wykonania się kolejnego kroku pętli. Funkcja printf() wyświetla napis zawarty w nawiasach, w cudzysłowie. Porównaj kod zapisany pseudokodem z tym w C. Jestem pewny, że dostrzeżesz podobieństwa. Algorytmika w Arduino Należy pamiętać, że programy, które piszemy na Arduino, działają w nieskończonej pętli. Procesory, mikrokontrolery i inne sterowniki są projektowane tak, aby mogły działać cały czas. Z tego powodu programy w Arduino wykonują się w dwóch funkcjach - setup() i loop(). Dodatkowo warto zaznaczyć, że język wykorzystywany w Arduino IDE jest praktycznie językiem programowania C++. setup() wykonuje się tylko i wyłącznie raz przy starcie całego programu. Używamy tej funkcji, żeby rozpocząć pewne procesy lub ustawić wejścia i wyjścia na odpowiednie tryby. Stąd jej nazwa, która przetłumaczona na j. polski brzmi konfiguracja. Konfigurujemy i przygotowujemy środowisko na późniejsze etapy wykonywania programu. loop() wykonuje się po zakończeniu funkcji setup i działa w pętli - wykonuje się cały czas. Tutaj umieszczamy operacje związane z np. sterowaniem i przechwytywaniem informacji. Przykładowe algorytmy na Arduino Blink Na początku zajmiemy się miganiem diodą LED. Nie musisz nic pisać, aby skorzystać z tego programu! Włącz Arduino IDE -> kliknij zakładkę File -> Examples -> 01.Basics -> Blink. Otworzy się nowe okienko z programem Blink. Zauważysz dużo komentarzy, które są poprzedzone dwoma myślnikami, lub znakami /* i zakończone */. Możesz je usunąć. Zostanie poniższy kod: void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } pinMode() ustawia wybrany pin na wejście lub wyjście. Przyjmuje dwa argumenty - numer pinu i wybranie trybu. Arduino ma wbudowaną stałą, która wskazuje na pin wbudowanej w płytkę diody, więc to będzie nasz pierwszy argument. Drugim będzie OUTPUT, czyli ustawienie pinu na wyjście. Ta funkcja wykona się tylko raz, bo znajduje się w setup(). W funkcji loop() jako pierwszy krok ustawiamy pin LEDa na stan wysoki (zapali się) funkcją digitalWrite(), podając pin tej diody i argument HIGH oznaczający stan wysoki. Funkcja delay() powoduje czekanie programu. Wartość w nawiasach to długość czasu w milisekundach. Potem wyłączamy diodę, czekamy sekundę. Funkcja loop() wykonuje się od nowa. Czy jesteś w stanie zapisać algorytm migania diodą w postaci schematu blokowego? Czytanie przycisku Poniżej znajduje się program do zapalania lampki, gdy wciśnięty jest przycisk na pinie 7. Spróbuj go przeanalizować i pochwal się w komentarzu, jak działa! Dodatkowo w ramach ćwiczenia, polecam zapisać go w postaci pseudokodu. Kilka podpowiedzi: zmienne i stałe można deklarować poza głównymi funkcjami. Można wtedy się do nich odwołać w każdym miejscu w programie #define oznacza deklarację stałej, której nie zmienia się przez cały program. Symbolicznie stałe zapisuje się wielkimi literami digitalRead() czyta i zwraca stan, który aktualnie jest na pinie funkcja else() wykonuje się wtedy, gdy instrukcja warunkowa zwróciła fałsz #define PIN_LED 8 #define PIN_BUTTON 7 int buttonState = 0; void setup() { pinMode(PIN_LED, OUTPUT); pinMode(PIN_BUTTON, INPUT); } void loop() { buttonState = digitalRead(PIN_BUTTON); if (buttonState == HIGH) { digitalWrite(PIN_LED, HIGH); } else { digitalWrite(PIN_LED, LOW); } } Podsumowanie Znajomość pojęcia algorytm to kluczowa umiejętność w świecie programowania. Jeśli zaczynasz pisać kod na platformę Arduino, to warto zgłębić tę tematykę. Nie ograniczaj się tylko do zapisu algorytmów - zrozum, jak działają i jak możesz je wykorzystać w praktyce. Gorąco polecam skorzystać z kursu Arduino na Forbocie, abyś mógł szybko przekuć swoją wiedzę na konkretne projekty.
  2. Prototyp zegara opartego na licznikach '393 Witam. Jest to pierwszy projekt, bardzo niedoskonały, posiadający wiele błędów ale również taki który wiele nas nauczył Pomysł narodził się miesiąc temu, a motywacją była lepsza ocena z układów cyfrowych(z 4 na 5) na koniec drugiej klasy, przedmiot się już kończy a więc ocena leci na świadectwo ukończenia technikum. A więc zebrałem drużynę, rozdzieliliśmy zadania i ruszyliśmy z projektem🙂 Tak jak w tytule, projektem był zegar ale na licznikach 4-bitowych. Wiadomo że taki zegar można zrobić tysiąc razy lepiej, szybciej itd. używając np. układu MC1206 CEMI, tylko że to nam wiele by nie dało jeśli chodzi o naukę tego przedmiotu. Skoro poznaliśmy liczniki, dekodery, bramki to możemy coś wykombinować . Tutaj przy okazji chciałbym podziękować kolegom bez których na pewno nigdy by ten projekt nie powstał oraz nauczycielowi, który udostępnił nam odpowiednie urządzenia do jak najlepszego wytworzenia płytki PCB, a domowymi sposobami nie byłoby tak łatwo. Koniec wstępu, teraz projekt. Jest to prototyp, zresztą bardzo widocznie zaznaczony na płytce, wiedzieliśmy że coś może nie działać - miało to pokazać na czym stoimy, jakie błędy popełniliśmy itp. Trochę jest ich, opisze je tutaj. Początkowo projekt składał się z 4 segmentów. Segment 1-sekundy, segment 2-minuty, segment 3-godziny oraz 4-kontrolny. Na prototypie jest jeszcze segment 5- ratunkowy. Wszystkie segmenty miały być na osobnych płytkach ale zrezygnowaliśmy z tego. Będę stosował te nazwy aby lepiej przedstawić projekt. Co kryje wnętrze? Układ jest zbudowany z trzech podwójnych liczników 4-bitowych 74HC393, sześciu dekoderów BCD na wyświetlacz 7-segmentowy CD4511BE, trzy bramki AND-CD4081BE, podwójny przerzutnik JK-CD4027, Dzielnik częstotliwości CD4060, jedyny w wersji SMD oraz licznik 7-bitowy CD4024. Trzy podwójne 7 segmentowe wyświetlacze LED LTD5523 o wspólnej katodzie. Kilka rezystorów, kondensatorów i diod. Ogólna zasada działania Sercem układu jest segment czwarty, kontrolny. Na nim znajdują się układy odpowiedzialne za poprawne działanie reszty segmentów. Segment pierwszy, drugi oraz trzeci posiadają wyświetlacz, który ma za zadanie pokazać ilość impulsów podanych na wejścia zegarowe liczników 4-bitowych, wykonanego w technologii TTL-74HC393. Na wejście zegarowe segmentu pierwszego zostaje wprowadzony przebieg prostokątny o częstotliwości 1Hz- czyli 1 sekunda. Następuje zliczanie tych impulsów podanych z segmentu 4, z odpowiedniego układu. Jedności sekund to modulo 10 (od 0 do 9 i reset licznika), dziesiętne to już modulo 6(0-5 i reset), jedności minut mają takie same modulo jak sekund, natomiast godziny: jedności modulo 10, dziesiętne modulo 3. Myśleliśmy że zegar, w momencie gdy go uruchomimy, będzie wskazywał godzinę 00:00:00. Wskazuje natomiast różnie, 11:00:01, 15:14:24, 14:21:30. W wersji 2.0 po prostu w momencie podłączenia do zasilania wszystkie układy będą się resetować. Też dosyć często zdarzało się że nie wszystkie wyświetlacze się zaświecały w tym samym momencie. Może ktoś wie dlaczego?🧐 Zdarzało się że wyświetlacz wskazywał 12:x1:x2, (x oznacza tutaj, że wszystkie diody były zgaszone) “Segment 1, 2, 3” - czas Te trzy segmenty są do siebie bardzo podobne, różnica jest jedynie przy licznikach. Czyli jeden segment może nam wyjaśnić działanie pozostałych. Omówimy segment pierwszy, schematy zostaną podane dla wszystkich. Segmenty są odpowiedzialne za zliczanie impulsów zegarowych, czyli jeżeli podamy na jeden z liczników 74HC393 sygnał zegarowy, w tym przypadku sygnał prostokątny o częstotliwości 1Hz, o wypełnieniu 50%, to owy układ będzie zliczał sekundy. 1/60Hz- minuty, 1/3600Hz-godziny. Segment pierwszy jest zbudowany z jednego układu 74HC393, posiada on 2 liczniki 4-bitowe w obudowie dip14. A oznaczmy za jedności sekund, B za dziesiętne. Do wejścia zegarowego licznika A wprowadzamy sygnał 1Hz. Na wyjściach tego licznika (A)Qa, (A)Qb, (A)Qc i (A)Qd pojawiają się odpowiednie stany. Stany się zmieniają zawsze po sygnale zegarowym. A więc mamy takie stany na wyjściach: (A)Qa=1 (A)Qb=0 (A)Qc=0 (A)Qd=0 To po sygnale zegarowym na licznik A na wyjściach będą sygnały: (A)Qa=0 (A)Qb=1 (A)Qc=0 (A)Qd=0 Z kodu binarnego 0001 po sygnale przechodzimy w stan 0010. Czyli z 1 na 2. Bramka AND służy do wykonania do każdego licznika odpowiednie modulo. Do wejść bramki podłączmy (A)Qb i A(Qd), a wyjście do wejścia resetującego licznika A oraz do kolejnych segmentów. Tym sposobem dla jedności sekund mamy modulo 10, ponieważ licznik ma za zadanie liczyć od zera do dziewięciu, licznik odpowiedzialny za dziesiętne sekundy ma już modulo 6, ponieważ sekund mamy 60, nie 100. Teraz przechodzimy do dekodera z kodu BCD na kod dla wyświetlacza 7 segmentowego, jest za to odpowiedzialny układ CD4511. Wejścia D0, D1, D2, D3 są podłączone do wyjścia licznika A(Qa, Qb, Qc, Qd). Tak więc: (A)Qa -> D0 (A)Qb -> D1 (A)Qc -> D2 (A)Qd -> D3 Stany wysokie na wejściach D0-D1 definiują nam wyjścia a, b, c, d, e, f, g, one zaś są podłączone do wyświetlacza 7 segmentowego, jednakże pomiędzy połączeniem między dekoderem a wyświetlacze znajdują się rezystory o rezystancji 1k ohm, 5% tolerancji. Służą one do ograniczenia prądu diody, bez nich w ciągu kilku sekund wszystkie diody by się spaliły. Tak samo postąpiono dla dziesiętnych sekund. Niestety ręczne ustawianie w prototypie nie zawsze działa, zapewne działanie poprawiono by stosując kondensatory filtrujące oraz rezystory podciągające. Przyszła wersja będą posiadać taką ochronę przed drganiami styków. “Segment 4” - kontrolny Segment 4 jest sercem całego układu. Na nim znajduje się generator 1Hz (aktualnie nie sprawny), układ odpowiedzialny za pozbycie się problemu godziny 24 oraz zasilanie całego układu. Rezonator kwarcowy ma wartość 32,768 kHz, układ 4060 jest dzielnikiem częstotliwości. W momencie, gdy sygnał zostanie doprowadzony do wejścia zegarowego CLK układu CD4060, to na wyjściu Q14 pojawi się sygnał o częstotliwości 2Hz. Q14 oznacza, że sygnał CLK dzieli przez 2^14, czyli przez 16 384. 32 768/16 384 = 2 Układ 4027 to podwójny przerzutnik JK. Pełni on funkcje dwójki liczącej, czyli zarazem dzieli częstotliwość przez 2. 2/2 = 1 Czyli na wyjściu otrzymujemy bardzo stabilny 1Hz. Niestety u nas układ nie działał poprawnie. Dlatego też powstał specjalny segment, ratunkowy “Segment 5” - ratunkowy Ten segment w początkowej fazie produkcji nie był przewidziany, został wymyślony z powodu możliwego niedziałania układu odpowiedzialnego za generowanie sygnału 1Hz. Jest to prosty układ oparty na bardzo znanym i powszechnie dostępnym układzie NE555. Na wyjściu 3 ukazuje się pseudo przebieg o częstotliwości 1Hz, nie jest on tak dokładny jak ten, którego opisaliśmy powyżej. Gdyby zegar działał 24 godziny, to możliwe, że albo by się spóźniał albo by przyśpieszał o ponad 20 minut w ciągu jednej doby. Problem godziny 24:00 W trakcie projektowania jednym z problemów była godzina 24. Był pomysł, aby zastosować prosty układ, licznik 7-bitowy, który miał za zadanie zliczyć 24 impulsy zegarowe z segmentu 2, a dokładniej z wyjścia bramki podłączonej do licznika odpowiedzialnego za dziesiętne minuty. Po 24 impulsach miał na chwilę odłączyć zasilanie przez co cały układ zliczanie rozpocząłby od zera. 23:59:59 -> przełączenie przekaźnika -> 00:00:00 Niestety owy układ by nie działał, ponieważ nie uwzględniliśmy pojemności w układzie oraz stanów nieustalonych na licznikach binarnych. Płytka PCB Płytka ma rozmiary 14cm x 17cm, wszystko się zmieściło, chociaż były problemy. PCB została wykonana metodą termotransferu, przy pomocy laminatora. Ścieżki oraz imiona naprawdę ładnie się wytrawiły, jesteśmy z tego bardzo zadowoleni. Tutaj kilka zdjęć z realizacji. Projekt będzie rozwijany aż pozbędziemy się większości problemów jakie spotkaliśmy. Wersje 2.0 też będzie na forbocie:) Może we wrześniu, październiku:)
  3. Dzień Dobry, Chciałbym nauczyć się podstaw assemblera. Mam tutaj na myśli strukturę języka (dyrektywy, sekcje programu itp.) - inaczej mówiąc, zagadnienia niezależne od architektury docelowej. Wiedzę chciałbym najbardziej wykorzystać przy pracowaniu z układami AVR i ARM. Korzystając z zasobów internetu trafiłem na wiele "tutoriali", jednak wszystkie z nich były wg mnie niedopracowane - wiele terminów było omawianych powierzchownie albo wcale, jakby autorzy z góry zakładali, że każdy te terminy zna. Tak więc, jeśli ktoś może zasugerować przystępną, w miarę aktualną lekturę, byłbym wdzięczny za jej link/tytuł.
  4. Jestem kompletnym nowicjuszem i przerabiam na spokojnie podstawowy kurs - po pierwszych czterech rozdziałach uzbierało się już kilka wątpliwości, które chciałbym rozwiać, zanim przejdę dalej. 1) Wiem już, że pomiary na większym, niż potrzebny zakresie nie uszkodzą miernika, jedynie wpływają negatywnie na precyzję, a co z odwrotną sytuacją? Czy coś się stanie, jeśli omyłkowo ustawię zbyt mały zakres do zbyt dużego napięcia? 2) Dlaczego jeśli spróbuję zmierzyć prąd (natężenie) przykładając miernik do samej baterii uszkodzę go, a w obwodzie z rezystorem jest to już w porządku? 3) Skąd mogę wiedzieć, ile maksymalnie prądu może zostać pobrane z baterii, np. takie 9V dołączonej do zestawu z kursem i czy można to jednak jakoś sprawdzić miernikiem nie powodując szkód? 4) Czy schemat z odczytywaniem kodów paskowych z rezystorów dotyczy jakiegoś konkretnego producenta/kraju, czy jest to międzynarodowy i powszechnie znany schemat? 5) W pierwszym eksperymencie z prawa Ohma (str.33) budujemy pierwszy obieg - nie rozumiem kompletnie dlaczego akurat w taki sposób. Czerwony kabel (+) podłączamy od baterii do płytki, później mamy rezystor, a drugi kabel od baterii (-) zostaje nie podłączony do niczego. Dlaczego akurat tak to wygląda? Co by się stało, gdyby zamiast (+) podłączyć od układu (-)? Albo podłączyć (-) z drugiej strony opornika? Dlaczego pojawiła się informacja, żeby nie próbować podłączać losowych mniejszych rezystorów i nie dokonywać pomiarów? Miernik jest w stanie chyba zmierzyć znacznie większe natężenie prądu, niż z baterii 9V? Chętnie bym poeksperymentował więcej w tej kwestii, ale wystraszyły mnie przestrogi o uszkodzeniu miernika, stąd pytania. 6) Na str. 36 budujemy układ z dwoma rezystorami - wykonałem oczywiście ćwiczenia, pomiary i obliczenia się zgadzały, ale znowu nie bardzo rozumiem sposób przykładania kabli (+/-) w celach pomiarowych. Na rys 3.10a czarny kabel (-) od miernika przykładamy tak jakby bezpośrednio do (-) na baterii, a czerwony (+) do rezystora 10k po przeciwnej stronie niż kabel zasilający od baterii (+). Na rys 3.10b - analogicznie, to samo dla rezystora 1k. Tymczasem na rys 3.10c wszystko się zmienia. Nagle czerwony kabel (+) jest przyłożony do baterii, a czarny do jednego z rezystorów - zupełnie nie rozumiem dlaczego tak. 7) Czy budując takie układy istotna jest kolejność podpinania? Tzn. najpierw rezystory, a bateria na końcu? Czy jeśli potem przerabiam układ na inny muszę odłączać baterię przed wyjęciem rezystorów, czy nie jest to koniecznie i może ona zostać wpięta, a ja będę sobie dowolnie zmieniał konfigurację? 8 ) W Rozdziale 3.6.1 pojawia się stwierdzenie, że do zasilania układu wymagającego 5V nie powinno się używać baterii 9V + dzielników napięcia, ponieważ nie można pobrać zbyt dużego prądu z dzielników. Przecież 5V to mniejsze napięcie niż 9V, więc rozumiem problem z zasileniem układu wymagającego 9V baterią 5V, ale przejście z 9V na 5V powinno działać i mieć jeszcze spory zapas mocy? 9) Dlaczego przy sprawdzaniu napięcia na potencjometrze (str. 44) nie zostawiamy czarnego kabla od baterii (-) na zewnątrz (tak jak przy ćwiczeniach z rysunków 3.10)? 10) Dlaczego miernik miałby się zepsuć przy próbie pomiaru oporu bezpośrednio z baterii (informacja ze strony 45)? Wiem, to bardzo dużo pytań. Spodobała mi się pierwsza część kursu i chciałbym pójść dalej - ale boję się, że zbyt mało ogarnąłem, mimo przerobienia każdego ćwiczenia +5 razy i doczytywania wątpliwości w Internecie. Wygląda na to, że mam gdzieś w mózgu jakiś bardzo duży opornik do przyjmowania wiedzy 😉
  5. Witam, Czy jest jakis przyjazny link za pomoca ktorego mozna wydrukowac od razu caly kurs np. Podstaw Arduino (zoptymalizowany do wydruku czyli sam kurs ze zdjeciami/schematami pomijajacy linki do innych artykulow, podzial stron) itp ? P.S. Tak wiem ze moge otworzyc 11 oddzielnych stron w przegladarce z kazdym rozdzialem osobno i wydrukowac kazdy z nich ale to nie bedzie to samo (np. podzial stron) ;) 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.