Arduino 7: BUDZIK
HTML-код
- Опубликовано: 13 сен 2024
- Kończymy budowę budzika. Uczymy się wielokrotnego użycia fragmentów kodu. Poznajemy typ zmiennych BOOL oraz wyjścia PWM, czyli dające z automatu przebiegi przemienne o ustalonym wypełnieniu.
Kod, na którym bazuje odcinek można pobrać stąd:
adamsmialek.co...
Zapraszam do wsparcia mojego kanału:
patronite.pl/s...
PayPal.Me/smialekadam
oraz do subskrybowania:
www.youtube.co...
Napisy: Anna Śmiałek
#Arduino #zegar #budzik
wspanialy wyklad!Brawo
W wolnym wierszu, może temperatura ze stacji pogodowej lub czujnika temperatury?
Mój post dotyczy tzw. " całokształtu pańskich edukacyjnych filmów. To w każdym wydaniu perełka zawierająca w sobie wręcz numeryczna dokładność , walory edukacyjne oraz nieprawdopodobną wiedzę . Oglądam wszystko , ponieważ odzywają wspomnienia i odkurzanie odłożonych do lamusa urządzeń składowanych w stanie " hibernacji " . Blog jaki Pan założył - jest mistrzowski pod każdym względem . Techniczne dane poprzeplatane niezwykle udana ironią to jak mieszanka Wasowskiego i Przybory z jakaś siłą kosmiczną wiedzy jaką zasługuje na miano człowieka renesansu. Pozdrawiam!
Jak zawsze w punkt !!
Ogień 🔥
Mi się podoba. Liznąłem co prawda trochę PHP i HTML, ale zaledwie podstawy i bez problemu odnajduje się w tym kursie, mimo, iż nigdy nie miałem styczności ani z C++ ani z Arduino.
Bardzo ciekawe. Jest taki moduł do Arduino który syntezuje mowę jakby go dodać , to byłby zegarek dla Niewidomych. Czekamy na kolejne projekty. Pozdr M
Proszę bardzo ruclips.net/video/S7KNhBAAY10/видео.html
Dolną linię można wykorzystać np wyświetlając datę, ewentualnie dodając czujnik DHT11 lub 22, wyświetlając temperaturę i wilgotność, lub ciśnienie barometryczne przy zastosowaniu odpowiedniego czujnika. Tak czy siak, przy kolejnych elementach będzie Pan musiał przejść na kontroler I2C by zwolnić trochę pinów. Ciekawy jestem, kiedy będzie Pan zmuszony w tym projekcie przejść na wielozadaniowość oraz przerwania :)
Żaden problem, ale ten projekt już zamykamy.
a nastepny krok to wielordzeniowe programowanie w arduino
Witam Panie Adamie. Oglądam i subskrybuję Pana kanał od dawna, jest tu bardzo dużo ciekawych filmów, w każdym jest dużo informacji, Nagrał Pan kiedyś film o radioodbiorniku Unitra Gong. Mam taki sam, jeszcze dał mi go mój dziadek, razem z Blaupunktem twen nt. Dziękuję za takie ciekawe materiały, byłbym bardzo dumny jakby Pan mi odpisał - miał bym się czym chwalić wśród znajomych :-) Pozdrawiam.
Pozdrawiam miło :)
Dzień dobry
Wolny wiersz mógłby podawać datę i dzień tygodnia
Mógłby też sam zmieniać czas zimowy na letni i vice versa. Luty 28/29 dni także.
Panie Adamie, zzy jest możliwość implementacji takiego budzika, do radiobudzika. Myślę że na pewno. Bo w oryginalnym uszkodził mi się moduł zegarko-wyświetlacza. A Sama modyfikacja wydaje się ciekawa. Tylko pozmieniać w kodzie tak: aby dało się zmieniać czas przez kilka przycisków np. przycisk od ustawiania czasu + przycisk wolnego lub szybkiego zmiany czasu (Wtedy zmienia się czas bez ustawiania cyfr od godzin i minut, tylko zmienia się wszystko na raz). P.S. Radio budzik to Grundig Sonoclock 400 z lat 80. Będzie ciekawie!
Adam, Adam, Adam, Adam, Adam. A to nie Adam. Witek, Witek, Witek.....
jakby Pan dopisał możliwość podłączenia odbiornika dcf77 to bym się naprawdę cieszył i był wdzięczny
A to sobie kiedyś napiszemy.
Może dolny wiersz zapełnić aktualną datą albo wskazaniami temperatury ?
Witam.
Panie Adamie a co z dokładnością zegara? Dokładność tego zegara to +- minuta na dobę.
Pozdrawiam.
Będzie okazją do tego wrócić.
To i tak więcej niż mój piekarnik :)
Ogarniam:mechanikę elektronikę tokarstwo druk 3d. Kompilacje programów. Hydraulikę. I jeszcze dużo dużo. Ale pisanie programów to dla mnie temat który stoi w miejscu. Umiem obracać się w tych kodach i wprowadzać wartości ale samemu z siebie napisać kod to niestety.. jednak mam plan żeby się tego nauczyć.
@@marko3454 odezwij się do mnie
Hej jak mam się odezwać?
Panie Adamie, całość programu jest rewelacyjna i ma świetne walory edukacyjne. Jednak muszę się z Panem nie zgodzić co do tego, że w idealnym programie najpierw powstaje algorytm, a następnie kod. Jest to prawdą, ale tylko w sytuacji kiedy jesteśmy pewni na 100%, że wymagania projektu się nie zmienią. Oczywiście pisanie programów w ten sposób nie jest złe, chciałem tylko zaznaczyć, że nie jest idealne i nie zawsze się sprawdza. Mam nadzieję, że nie zostanę odebrany za malkontenta, a moja wypowiedź jest jedynie polem do dyskusji. Pozdrawiam.
Tak jest prawie zawsze w przypadku rozbudowanych projektów, ale większość Arduinowych rozwiązań to rzeczy proste i powinny być "ogarnięte" od razu w całości.
Mylisz się. Zmiany wymagań nie są problemem. Zresztą często to nie są zmiany wymagań tylko ich doprecyzowanie, bo analiza robiona po łebkach żeby szybko dostarczyć MVP.
@@henrykg Niemniej skutek jest ten sam. W naprawdę dużych projektach nie wszystko też można przewidzieć, a klient rzadko kiedy pomaga.
Dlatego u mnie klienci się cieszą jak jestem w ich projekcie, bo im powiem czego chcą ;-) Gorzej się dogaduję z naszymi programistami.
A czasami nie do końca wiadomo, co będzie działać.
🤔🤔🤔🤔 Podziwiam, że potrafisz robić po dwa odcinki tygodniowo! I to jakie odcinki! Ja właśnie siedzę nad kolejnym filmem u siebie... Ale idzie strasznie powoli... Wracając jednak do Arduino, zastanawiam się, czy powoli nie należałoby z tym cyklem migrować w nieco innym kierunku. Czy będzie dużo osób chcących regularnie oglądać cykl programowania krok po kroku....? Może jestem typem 😁 starej daty, ale do nauki programowania w szczegółach wolałbym jednak książkę, nie video. Ale może nie jestem wystarczająco nowoczesny... 😁 Niezależnie od, trzymam kciuki! 🤞
Oczywiście do programowania lepsze są książki, ale tak jak Pan Adam uczy programować, to jeszcze w żadnym wideo się nie spotkałem. Biorąc uwagę, że jest to poziom zaawansowania początkujący, to poziom przedstawienia tematu jest najwyższy.
@@rekawek6 Ja w żadnym wypadku nie neguję poziomu. Wręcz przeciwnie bardzo doceniam pracę Adama. Bardziej patrzę na tę kwestię z punktu popytu, że tak powiem. Przygotowanie takiego filmu to strasznie dużo pracy i byłoby dobrze, gdyby to się zwróciło, choćby częściowo przychodami z reklam. Natomiast jeśli zainteresowanie będzie niewielkie, to na dłuższą metę ciężko to ciągnąć i coś trzeba zrobić, by zwiększyć to zainteresowanie. Sam to widzę trochę u siebie, choć mój kanał to mikrus. Szukam tematów, które mnie interesują, ale i na które może być zapotrzebowanie. Niestety często na to, co mnie naprawdę interesuje, zapotrzebowanie jest niewielkie. Np. kiedyś próbowałem rozkręcić serię o kryptografii i liczba wyświetleń to było kilka na miesiąc. Porównaj zresztą liczbę wyświetleń filmów piątkowych u Adama, z liczbą wyświetleń tych o Arduino...
Do tej serii czai się pewien pomysł konkretny i mam nadzieję, że wkrótce się tu pojawi :)
@@Informatykwakcji Wiem, że czasami to czy kanał ma wyświetlenia nie zależy od treści tylko od marketingu, albo miękkich kompetencji prowadzącego, są kanały tak niszowe, że mają po kilkuset subskrybentów, a są to kanały techniczne ludzi z dużą wiedzą.
@ Trzymam mocno kciuki! 🤞
Dzień dobry. Panie Adamie, czy można użyć Pańskiej interpretacji "hejnału mariackiego" w budziku bez tantiem? Zawsze chciałem spać do 12 :)
Oczywiście :)
W Pascalu było clrarscr czy jakoś tak
Nie zgodzę się że wydzielanie kodu do funkcji, nawet w małych projektach jest zbędna. Używanie dobrych praktyk w każdym projekcie jest ważna, nawet tylko po to aby utrwalać wiedzę. Przy okazji czemu kod to mieszanka angielskiego i polskiego? Rozumiem że jest to materiał dla ludzi którzy nie mają za dużo wspólnego z programowaniem, ale pokazywanie takich potworków w mojej opinii nie jest dobrym pomysłem. Tym bardziej że bez angielskiego i tak taka osoba nie będzie w stanie używać nawet natywnych funkcji, co dopiero bibliotek.
A założymy się, że będzie w stanie? :) W osiemdziesiątych latach znajomość angielskiego w Polsce była jak dziś znajomość rosyjskiego. A świetne projekty powstawały, mimo braku słowników online i w ogóle czegoś takiego jak online :)
Co do "dobrych praktyk", zalecam używanie głowy - zawsze. A dopiero potem dobrych praktyk. Robienie funkcji, do której odwołujemy się raz w programie na sto linii jest może i dobrą praktyką, ale niewiele ma wspólnego z używaniem głowy.
A jak ktoś ma problem z tym, by się w razie potrzeby przestawić w dwie minuty, w zakresie jednego albo drugiego, powinien znaleźć sobie inne hobby.
Nie wiem jak to wyglądało w latach 80, ale wydaje mi się że z racji na brak internetu wszystko było pisane "z palca". Teraz do nawet małych projektów często używa się dziesiątek bibliotek (przy raspberry osobna biblioteka do pisania na ekranie, osobna do czytania z DHT11...) których dokumentacja jest w języku angielskim. Oczywiście teraz możemy tłumaczyć strony ale google średnio umie w pojęcia IT.
Kompletnie nie zgodzę się że przeniesienie tego nie ma "niewiele wspólnego z używaniem głowy". Projekt może się rozwijać, mogą być dodawane nowe funkcje (np po wyłączeniu budzika pobiera i mówi jaka jest temp na zewnątrz). Nie mając kodu rozdzielonego na logiczne elementy dużo ciężej się do niego wraca i coś dodaje/zmienia (łatwiej zobaczyć nazwę funkcji handleButtonPress() niż przedzierać się przez pętle z paroma ifami i czytać ścianę komentarzy).
Samo przestawienie się nie jest trudne co raczej irytujące tym bardziej że natywne rzeczy są po angielsku, więc czemu ktoś musi dodawać kolejny język?
Proponuję raz jeszcze dokładnie posłuchać fragmentu o funkcjach, bo tam jest wyjaśnione co i jak, i z pewnością nie taki wniosek powstał. O celowości wprowadzania polskich nazw zmiennych mówiłem już w komentarzach wielokrotnie i nie chce mi się powtarzać.
@@nickoverTak od polowy lat 80tych byly sprzedawane ksiazki (opis bibliotek) z dyskietkami zawierajacymi biblioteki - ja zawsze uzywam w programie tylko angielskiego (poza napisami na ekranie oczywiscie) bo inaczej robi sie smietnik
Super filmy ale na 1,75x ;)
Skąd tyle łapek w dół? Jakaś zawiść?
Raczej niewiedza, że to bez znaczenia.
A ja mam wyświetlacz 2 x 80 znaków a Wy nie! 😝 Ani nawet Pan Adam nie ma. 😁
Też mam, tyle że 2x80 wymagało dwóch sterowników hd44780 i to sprawiało trudności w jego użyciu. Btw poco mi 2x80 z samymi znakami jak można mieć wyświetlacz graficzny z możliwością dopracowania czcionek? Te hd44780 to dziś muzeum (sorry Panie Adamie)!
A ja mam... ja mam... 30 x 80 znaków!
@@KH-lg3xc 😮 znaków czy pikseli? 😁
@@apruszko np jest zabytek jest. Ale na potrzeby małego urządzenia bardzo fajna rzecz. Leżą mi jeszcze takie w domu z 6 sztuk chyba różnej wielkości.
A ja mam podlaczony pod ESP32 (nastepca UNO) telewizor 4K 50 cali ( prosty program w Arduino ) - zagadka - ile to pikseli ?
Czy istnieje spis treści kolejnych odcinków o Arduino?
Nie będzie za wielu odcinków o Arduino. Ten odcinek ma 7600 odsłon, a wisi już tydzień. Filmik o latarce po jednym dniu ma 30000 wyswietleń. Rachunek jest prosty, z arduino kasy nie będzie. Z resztą jest tyle o tym arduino w necie że żadnej straty nie będzie.
YT nie robi się dla kasy ani odsłon, lecz na szczęście mało kto tak myśli.
Typ BOOL, to nawet nie typ bezużyteczny. To typ zupełnie zbędny. Zbędny przynajmniej w przypadku języka C.
Ale to nie jest film o języku C
Dlaczego ten typ jest bezużyteczny, chodzi o pamięć kontrolera?
@@rekawek6 Chodzi o to, że w języku C wartość 0 (zero), w operacjach logicznych jest traktowana jako "fałsz", a każda wartość inna od zera, to "prawda". Dotyczy to wszystkich typów zmiennych, każdego praktycznie można użyć w operacjach logicznych, dlatego nie ma potrzeby używania specjalnego typu "bool". Taki typ, owszem, można zdefiniować, jest do tego biblioteka specjalna, ale w praktyce to jest odpowiednik typu "char", który przyjmuje dwie wartości: w praktyce zero i jeden. Takie podejście najczęściej znacznie upraszcza pisanie programów. Jeśli chce się oszczędzić trochę pamięci RAM i użyć pojedynczych bitów, to i tak trzeba to sobie samemu rozpisać na jakieś operacje na bitach. W innych językach programowania już tak nie musi być i tam kompilator albo interpreter może sprawdzić, czy operacja logiczna jest wykonywana na zmiennych typu logicznego (czyli "bool") i jeśli zmienna jest innego typu, to może wtedy to potraktować jako błąd. C, to raczej język niskiego poziomu i trzeba bardzo uważać, bo można łatwo popełnić błędy, których kompilator nie wyłapie, bo pewnych rzeczy po prostu nie sprawdza.
@@KH-lg3xc dzięki o takie wyszczególnione różnice mi chodziło.
Bool jako taki jest do zastąpienia byte, a właściwie w takich projektach to wystarczyłby tylko jeden typ zmiennej, jak to było w komputerach ośmiobitowych. Podobnie jak false i true oraz low i high jest do zastąpienia 0 i 1 i tak prywatnie stosuję. Ale elegancko jest jednak ciągnąć zmienne w dół, wedle zapotrzebowania, mimo że bool jest chyba pamiętany w bajcie, a nie bitowo. Poza tym Arduino tak zaleca, łącznie z rozmnożeniem zapisu poziomów w zależności od okoliczności, choć znaczą to samo. Co ciekawe, dawniej zalecał boolean, ale się organizacji odwidziało. Nie dyskutuję z tym, robię jak każą :)
Panie Adamie proszę otworzyć kod z odcinka poprzedniego wykonać pierwsze instrukcje do 2 minuty filmu i potwierdzić że nie działa.
Wszystkie odnośniki pod filmem prowadzą do sprawdzonych źródeł i działają. To, co widać na filmie, to często etapy pośrednie, więc nie zawsze mają prawo nie dawać błędów (nie zamieszczam takich źródeł na stronie).
Panie Adamie - pisałem o jakąś pomoc po różnych instytucjach - zero odzewu . To jest wszystko chore.
Dla tych co mają I2C wystarczy niewiele skasować i wstawic to: działa
#include // bibloteka wyswietlacza iquidCrystal_I2C.h
#include // To jest biblioteka obsługi zegara. Time-1.6.1.zip
#define BACKLIGHT_PIN 3 //zmienna z pinu 3 służy do podswietlenia wyświetlacza
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7); // przypisuje ustawienia pinów dla wyswietlacza iC2 (20,2) (0x27 adres wyswietlacza musi odpowiadać danemu wyswietlaczowi)
void setup()
{
lcd.begin(20, 4); // wyswietlacz 20 znaków 4 linie
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
lcd.setBacklight(HIGH)
Dzięki za projekt .Pozdrawiam.
Jak na razie to lepiej było by kupić sobie chiński budzik w hipermarkecie, niźli ślęczeć nad tym substytutem.
Jeśli ktoś myślał, że celem tych filmów jest zrobienie budzika, to z całą pewnością źle trafił i rzeczywiście powinien sobie go kupić w sklepie :)
@ Na razie jest dość tajemniczo i seria trzyma w napięciu co będzie dalej, ale jak dotychczas to składa się to na projekt sygnalizatora WC z funkcją budzenia użytkownika.
Nie, jak dotychczas to seria pokazała jak się pisze programy i do czego służy kilka funkcji. Teraz nastąpi długi czas utrwalania wiedzy na przykładach, wraz z poznawaniem nowych rzeczy, już mniej intensywnie.
A te wszystkie budziki, zegary i inne sprawy są w tym właściwie zupełnie nieistotne. Moim zadaniem jest uczynić umiejętność tworzenia takich urządzeń, a nie kopiowanie gotowych rozwiązań.
Powiem tak panie Adamie ten kurs niema nic wspólnego z nauką skoro jest dla początkujących lepiej można samemu bo poco tyle czasu poświęcić na zegar jak podstawy nie były wyjaśnione rozumie że pan się popisuje przed programistami a nie uczniami i ot cały temat .Kurs do dupy tyle w temacie.
Myślę, że on po prostu nie nadaje się dla kogoś, kto nie potrafi poprawnie sklecić zdania. Ale nie każdy musi umieć w Arduino :)
A ja panu powiem że nie muszę nic wiedzieć bo chce się coś dowiedzieć ale chyba nie z tego zegarka
Choćby takie coś. LCD.print(F("coś tam")) ; jak można LCD print(" coś tam") po co to F i ten podwójny nawias i to ma być prosty kurs siechawa a prawie mało wien ale pan robi sobie jaja coś pisze o mało dokładnie w komentarzu objaśnia.Bez urazy ale to tak wygląda nie mówiąc o innych rzeczach...
Jak mi pan powie po co te F i nawiasy to odszczekam po myślę że nie wiem poco choć się uczę
A tak od podstaw trzeba każdej biblioteki komendy przedstawić i wyjaśnić jeśli to ma być nauka.
Dzień dobry
Dzień dobry