Przejdź do głównej zawartości

Posty

Wyświetlanie postów z 2013

Programowanie AVR cz. ostatnia: Wyświetlacz 3D (LED Cube) 4x4x4 - ciekawy wizualnie, modny gadżet z ogromnymi możliwościami.

Pora kończyć cykl wpisów dydaktyczno-eksperymentalnych na temat programowania AVR-ów. Koniec jednak powinien być mocny. No to będzie. Przed Wami oto: Wyświetlacz 3D, czyli LED Cube, o rozmiarach 4 x 4 x 4. 000. Pomysł Kostką diod LED, sterowaną dowolnym mikrokontrolerem, zainteresował mnie parę lat temu jeden z absolwentów. Było to jeszcze w czasie, gdy mój powrót do lutownicy nie był praktycznie brany pod uwagę - zajmowałem się wyłącznie softwarem , a programowania mikrokontrolerów uczyłem z wykorzystaniem gotowych, zamkniętych zestawów (DSM-51 - fajnie pomyślana i zrobiona rzecz, niestety bazująca na lekko przestarzałej i przez wielu krytykowanej technologii). Gdy w zeszłym roku zająłem się AVR-ami pomyślałem sobie - czemu nie? Przejrzałem kilka rozwiązań, przyglądnąłem się możliwościom różnych mikrokontrolerów i... znalazłem coś odpowiedniego dla siebie. Czym właściwie jest popularny LED Cube, lub też wyświetlacz LED 3D? Otóż jest to eleganckie i efekciarskie urządzonko po

Programowanie AVR cz. 10: Modyfikacja mikroprocesorowego sterownika wyświetlacza alfanumerycznego LCD (układ HD44780 lub odpowiednik) z dostępem przez łącze szeregowe (i błędy!)

Błędy zdarzają się nawet w najprostszym kodzie, niestety. Program sterownika do wyświetlacza szeregowego, o którym pisałem jakiś czas temu , też się błędów nie ustrzegł. Przy okazji zmodyfikowałem ten program w celu poprawnej obsługi wyświetlacza 16*2. Dotychczas wykorzystywałem dwa odzyskane ze złomu wyświetlacze jednowierszowe o fizycznej organizacji 16*1, ale logicznie każdy z nich składał się z dwóch wierszy po osiem znaków - stąd konieczność wprowadzenia udziwnionego polecenia mapowanego na bascomowskiego Locate'a i stąd błędy, które się przemknęły podczas testów. Być może wzięło się to z rzadko wykorzystywanego w jednowierszowym wyświetlaczu pozycjonowania tekstu. W każdym razie, po zmianie wyświetlacza na model o bardziej popularnym formacie prezentacji tekstu, program wymagał kilku przeróbek, dlatego też i błędy zostały wyłapane i poprawione. Oto poprawiony i zmodyfikowany program (BASCOM): Warto przetestować ten zmodyfikowany wyświetlacz - szczególnie funkcjonalno

Pilot do lustrzanek Nikona - przeróbka projektu z serwisu Majsterkowo.pl

Jeden z moich ulubionych serwisów (dla którego wyłączam AdBlocka ;-)), czyli majsterkowo.pl , zamieścił na swoich wirtualnych łamach jakiś czas temu artykuł prezentujący projekt pilota do lustrzanek Nikona, wykonany w oparciu o Arduino ( http://majsterkowo.pl/elektronika-dla-artystow-czyli-pilot-ir-do-nikona/ ). Autor tego projektu wykorzystał zapewne opis sekwencji zwalniającej migawkę, umieszczony pod tym adresem: http://www.sbprojects.com/projects/nikon/index.php ( reverse engineering rządzi, nie ma co). W każdym razie artykuł i opis projektu jest świetny i rzeczywiście program bardzo dobrze działa na moim Leonardo. Idąc jednak w kierunku wskazanym przez autora, postanowiłem zaimplementować jego rozwiązanie na czymś prostszym i tańszym. I możliwie mobilnym. Ze względu na szalenie nieskomplikowany charakter programu i małą jego zasobożerność, wybrałem do implementacji malutki mikrokontroler, jeden z moich ulubionych, ATtiny 2313. Początkowe próby napisania odpowiedniego wsadu w B

Arduino i wyświetlacz LCD sterowany przez UART

Być może niektórzy z Was pamiętają mój moduł wyświetlacza sterowany przez port szeregowy . Fajna rzecz - jeśli wolno mi się w ten sposób pochwalić - pozwalająca ocalić cenne wyprowadzenia mikrokontrolera od "zajęcia" przez sterownik wyświetlacza zgodny z HD44780 i wysyłać dane do prezentacji na ekraniku LCD przez zaledwie dwie linie (w tym tylko jedno wyprowadzenie mikrokontrolera - TxD ; druga linia to masa). Odchodząc na chwilę od Noduino  (choć właściwie można by pokombinować z wyświetlaczem i w tym kierunku - o ile Noduino na to pozwoli) postanowiłem sprawdzić, jak Leonardo poradzi sobie z moim wyświetlaczem. W tym celu pozwoliłem sobie zmodyfikować jeden z załączonych do IDE Arduino programów przykładowych i przygotować małe demko, którego kod źródłowy prezentuję poniżej: Zadaniem programu jest wyświetlanie kolejnych znaków ze zbioru podstawowego ASCII oraz ich kodów w systemie dziesiętnym, szesnastkowym i binarnym. Kod odrobinę udziwniony, ponieważ musiałem go do

Programowanie AVR cz. 9: Mierzymy temperaturę.

Co prawda w zamierzeniu miał to być obszerny artykuł na temat pomiaru temperatury przez układ mikroprocesorowy na bazie ATmegi 48P, ale po dłuższych przemyśleniach doszedłem do wniosku, że o wiele lepiej będzie po prostu pokazać schemat układu i listingi programów, z niewielkim, niezbędnym komentarzem. Mając do dyspozycji mikrokontroler ATmega 48P możemy zbudować prostu termometr na co najmniej dwa sposoby. Pierwszy z nich może się opierać na odczytywaniu temperatury z wewnętrznego sensora, jednak aby uzyskać w miarę zadowalające wyniki, należy przeprowadzić kalibrację - szczegóły znajdziecie w specjalnie tej tematyce poświęconym dokumencie , dostępnym na stronach firmy Atmel. Poniższy listing pokazuje, jak możemy wykorzystać wewnętrzny sensor (wyniki wyświetlane są na "szeregowym" LCD mojej produkcji ): Kalibracji dokonałem z grubsza, nie dysponując ani możliwością uzyskania znacznej różnicy temperatur, ani też dobrym termometrem wzorcowym. Zauważmy, że z wbudowanym

RaspberryPi: serwer wydruku.

I to by było na tyle - więcej pisać nie trzeba, bo też i filozofii specjalnie w tym nie ma... Ale jakby ktoś potrzebował, służę uprzejmie. Od jakiegoś czasu zastanawiam się nad zakupem serwera wydruku, nawet mógłby pracować z drukarką wyposażoną w łącze równoległe (moja akurat ma i USB i Centronicsa), niestety ciągle blokuje mnie cena - jak na niewielki stopień komplikacji i niezbyt zaawansowaną technologię ciągle za wysoka, nawet w przypadku printserverów LAN-owskich. Wczoraj, grzebiąc bezmyślnie w internetach, natknąłem się na artykuł poświęcony malinie i gdzieś na początku przeczytałem, że ludzie robią z RaspberryPi przeróżne ustrojstwa, w tym centra multimedialne, serwery wydruku... I tu dostałem nagłej eureki ... Przecież malina u mnie się ostatnio nudzi, a drukarkę udostępniam laptopowi żony przez komputer stacjonarny, który musi być włączony itd., a jest to - jak na porządną stacjonarkę przystało - kobyła i bomba energetyczna... A RaspberryPi, zasilany z zasilacza impulsowego,

RaspberryPi: odbiór informacji lokalizacyjnych oraz aktualnego czasu z modułu bezprzewodowego GPS (Bluetooth).

Kolega na swoim blogu wspomniał parę dni temu o synchronizacji zegara RaspberryPi z sygnałem czasu przekazywanym przez satelity systemu GPS ( http://guzik.net.pl/blog/2013/03/mobilne-raspberry-pi/ ). Wystarczyło :-) Bawiąc się "Mailną" zapomniałem (no jak mogłem???) właśnie przekształcić ją w komputerek-nawigację, choć może to zbyt mocne określenie. Chodzi o to, żeby RaspberryPi przekonać do współpracy z bezprzewodowym modułem GPS Nokia LD-3W . Z takiej współpracy mogą wyniknąć dwie korzyści (co najmniej): ciągle aktualizowany odczyt informacji o lokalizacji; synchronizacja zegara "Maliny" z czasem satelitarnym (poprzez ntp; RaspberryPi nie ma RTC z podtrzymaniem bateryjnym - jeśli ktoś chce, to kolega, będący autorem linkowanego wyżej bloga, opisał pokrótce, jak dodać taki sprzętowy zegar). Mając współrzędne i masę innych, ciekawych informacji dotyczących położenia, puszczając wodze fantazji i dodając odrobinę kreatywności, można wręcz stworzyć sobie całki

Programowanie AVR cz.8: Przetwornik analogowo-cyfrowy oraz modulacja szerokości impulsu.

Dziś kolejny wgląd w wyposażenie mikrokontrolera ATmega48P - tym razem przyglądamy się wbudowanemu w układ przetwornikowi analogowo-cyfrowemu oraz - dostępnej również w modelach ATtiny - modulacji szerokości impulsu realizowanej przez timery. Artykuł ten jest w pewnym sensie wstępem do następnego, który pojawi się już wkrótce, a którego tematykę zdradziłem na końcu. Przetwornik A-C (skrót spotykany w anglojęzycznej literaturze to ADC od Analog to Digital Converter ) to układ pozwalający na zamianę wartości napięcia (elektrycznego sygnału analogowego ;-)) na liczbę. W przypadku mojej ATmegi przetwornik ma rozdzielczość 10-bitową, co oznacza, że wartość napięcia podawanego na wejście przetwornika może być po konwersji zapisana jako liczba z przedziału od 0 do 1023 (musimy użyć zmiennej word do zapamiętania tej liczby). Jeśli jesteśmy w posiadaniu mikrokontrolera w obudowie PDIP 28-wyprowadzeniowej, to mamy do dyspozycji sześć kanałów (niezależnych wejść) przetwornika A-C, przyporzą

Czego zazdroszczę amerykańskim kolegom?

Dlaczego akurat amerykańskim ? Nie wiem, ale jakoś tak większość książek informatycznych, jakie przewinęły mi się przez ręce, była napisana przez właśnie autorów ze Stanów. Bo znów bloguję o pisaniu książek. Informatycznych oczywiście. Zatem obiektem mojej zazdrości jest czas, który niejednokrotnie autorzy zza oceanu dostają od swoich wydawnictw na napisanie bądź dokończenie książki. Ileż to razy czytałem w jakże charakterystycznych dla autorów z Nowego Świata podziękowaniach dla żon, ojców, matek, mężów, przyjaciół itp. że są szalenie wdzięczni za cierpliwość, jaką wspomniane osoby miały dla nich przez cały rok , kiedy to ich myśli były skierowane wyłącznie na książkę, nad którą pracowali... Rok! Marzenie. Ja najwięcej czasu to chyba ze trzy miesiące miałem - nie pamiętam dokładnie, musiałbym rzucić okiem na umowy. Krótki czas jest z jednej strony uzasadniony - we współczesnej informatyce zmiany zachodzą tak szybko, że jeżeli wyda się książkę o danej technologii, oprogramowaniu, j

Niesamowicie prosty czujnik zmierzchowy.

Tym razem zero programowania, będzie natomiast nostalgiczno-wspomnieniowy układzik, lekko zmodyfikowany. Otóż kilka dni temu rozmawialiśmy w gronie znajomych o różnego rodzaju czujnikach zmierzchowych i czujnikach ruchu. Ponieważ należę do tych wariatów, co to hołdują jeszcze owej przestarzałej i kompletnie odrealnionej dziś zasadzie: "po co kupować, gdy można zrobić", stwierdziłem, że poskładam takie coś (czujnik zmierzchowy; sensor ruchu faktycznie lepiej nabyć, choćby ze względu na rozmiary ;)) i być może podłączę do jakiegoś mikrokontrolera. Przypomniało mi się też przy okazji, że znalazłem ostatnio w elektronicznych śmieciach stary fotorezystor (dla niewtajemniczonych: element zmieniający rezystancję, czyli opór elektryczny, pod wpływem działania strumienia światła) RPP130, jeden z kilku pozostałych po montowanych wieki temu układach tranzystorowych do zdalnego sterowania pracą urządzeń za pomocą latarki... No OK, nie było to specjalnie rozbudowane zdalne sterowanie ;)

Programowanie AVR cz. 7: Mikroprocesorowy sterownik wyświetlacza alfanumerycznego LCD (układ HD44780 lub odpowiednik) z dostępem przez łącze szeregowe.

Podłączenie wyświetlacza alfanumerycznego na układzie HD44780 (lub podobnym) do mikrokontrolera wymaga użycia w najlepszym przypadku sześciu wyprowadzeń. Jeżeli musimy wykorzystać mały mikrokontroler, np. ATtiny2313, stracimy sporo linii, które mogłyby służyć do realizacji innych funkcjonalności. Zasygnalizował mi to swego czasu znajomy, który właśnie m. in. z tego powodu nie przepada za LCD. Można jednak wykonać małe obejście, które pozwoli na wykorzystanie do połączenia wyświetlacza z mikrokontrolerem dwie linie (czyli dwa wyprowadzenia), przy założeniu istnienia wspólnego obwodu zasilania. Z pomocą przychodzi nam sprzętowy port szeregowy UART, będący na wyposażeniu większości mikrokontrolerów AVR. Ma on ponadto kompletne wsparcie w BASCOMie, a podejrzewam, że jego wykorzystanie w języku C również nie nastręcza problemów. Założenie projektu, który przedstawiam w tym artykule, jest proste: zrealizować mikroprocesorowy sterownik wyświetlacza, który znaki do wyświetlania oraz zbiór po