37 Arduino oraz I2C Dzie dobry. Dzi chciabym, si przyjrze magistrali I2C, a w szczeglnoci ukadom, korzystajcym z, niej mogcym, dostarczy, mikrokontrolerom, nieograniczon ilo portw., A c to za dziwna nazwa I2C Nie ma si co dziwi trzeba si przyzwyczai dziwnych nazw w elektronice spotyka. Si sporo. Jest to jedna z, wielu magistral szeregowych redniej szybkoci pocztkowo majca, w zaoeniach zastpi poczenia rwnolege midzy podzespoami, a wic uproci przede wszystkim okablowanie wewntrz urzdze. Pocztki sigaj jeszcze lat osiemdziesitych, a twrc zaoe by Philips. Obecnie standard przeszed, kilka modyfikacji, i stanowi jedn z, najbardziej, popularnych, Magistral. Specyfikacj atwo znale, w wielu miejscach wic tylko, oglnie magistrala, korzysta z, dwch, linii danych. I zegara i moe czy ze sob wiele urzdze, korzystajc z, puli 128, lub 1024 adresw. W danej chwili, jedno, z, nich musi by nadrzdne ale. Ten przywilej nie jest zastrzeony na stae. Do wybranego elementu. Wrd peryferiw, mona znale, wiele ukadw rnych producentw od zegarw pamici nieulotnych przetwornikw analogowo cyfrowych i na odwrt po porty rwnolege, ktre z, racji powikszania, iloci wej bd wyj, w systemie zwie si ekspanderami. I takiemu ukadowi przyjrzymy si dzisiaj. Oto do nowoczesny ekspander MCP23008 firmy Microchip. Nowoczesny w znaczeniu mogcy duo jak na do prosty w zaoeniach ukad 8 uniwersalnych portw. Oprcz moliwoci definiowania, kadego, z, nich jako, wejcie, lub wyjcie, w przypadku wej mona aktywowa wstpn polaryzacj rezystorem, o wartoci 100 kR a take korzysta z, rozbudowanego, systemu, generowania przerwa. Na deser dostaniemy Moliwo sprztowego wyboru jednego, z, 8 adresw, co, umoliwia, prac 8 takich ukadw na jednej, szynie.

Ukad, pracuje, przy, napiciu, od, 18 V do 5 V. I pozwala obcia wyjcia prdem 25 mA. Do popularne stay si moduy wykorzystujce ten ekspander, w formie interfejsu ograniczajcego zuycie linii jak na przykad szesnastoprzyciskowe klawiatury czy wywietlacze LCD., W pierwszym przypadku oszczdno wynosi 6 portw w drugim 4 przy czym magistrala nie jest wykorzystywana na wyczno. Na pytce Ktr od jakiego czasu bawi si znajduj si dwa takie ukady ale, oczywicie dzisiejsze zabawy, mona sobie powtrzy majc dowolne Arduino ktre naley, poczy z, wymienionym ukadem tylko, dwoma liniami nie, liczc masy. I zasilania. A wic jak to poczy Nka 1 to zegar 2 dane. Ze wzgldu na wymagania biblioteki, o ktrej zaraz opowiem czymy, je kolejno z, portami A5. I A4. Nki 3 4. I 5 umoliwiaj wybr adresu ukadu. Maj wpyw na najmodsze bity rejestru adresu, w ktrym pozostae bity ustawiono na stae. Zatem adres moe nalee do puli od 32 do ‘. Na mojej pytce ma on warto 36 co, wynika, z, dziaania 32 bo tyle, stanowi niezmienny, adres, bazowy, 14. Bo mamy wysoki stan na wejciu A2 02 01 bo mamy niskie stany na wejciach A1. I A0. Drugi ukad znajdujcy si na pytce ma adres 32 ale, o nim dzi mwi nie bd. Nka 6 to reset aktywowany poziomem niskim. Nie chcc go uywa, naley go podczy, do poziomu wysokiego. Nka 8 daje sygna przerwania. Dzi nam, nie bdzie, potrzebna., Zasilanie, naley poda na Nki 18 plus oraz 9 minus. W kocu na nkach od 10 do 17 mamy porty ktre moemy wykorzysta wedug wasnego widzimisi.

Ukad zawiera 11 rejestrw konfiguracyjnych, i oczywicie wsppracujc z, nim, mona odwoywa si do nich wprost. Ale to zostawiam dociekliwym. Jak, kade, chyba peryferium, take to posiada Kilka bibliotek ktre znakomicie wszystko upraszczaj, i w oparciu o nie poka jak mona sterowa tym ekspanderem. Na pocztek co, bardzo prostego., Sprbujemy, analizowa port znajdujcy si na nce 10. I w zalenoci od jego stanu sterowa diod wiecc wbudowan, w Arduino., A tak przy okazji dlaczego zaczynam od takich wydawaoby, si gupot Ot jest zasada. Przymierzajc si do pierwszych, krokw z, dotychczas nieznan materi, a tak jest w moich filmach magistrala I2C jak rwnie ten konkretny ekspander naley zacz od rzeczy najprostszej. Jeli zadziaa wyeliminujemy wszelkie sprztowe problemy na etapie porozumiewania si mikrokontrolera z, tym urzdzeniem zarwno, w zakresie magistrali jak. I jego samego. Ciach, i mamy osiem wej wicej. Program, bdzie bardzo prosty. Jak zwykle na pocztku dokadamy bibliotek. Jest ich kilka ta jest do prosta. I przejrzysta. Specyfika wymaga nadania nazwy ukadowi co, te czyni tutaj. Do sprawdzenia dziaania wykorzystam arduinow diod wiecc ktr jak ju wiemy umieszczono na porcie 13. Deklaruj prac tego portu jako, wyjcie., Tutaj, nastpi, deklaracje, zwizane, z, ekspanderem., Zaczynamy, od, inicjacji, ukadu odnoszc si do niego, bezporednio za pomoc Adresu. Teraz trzeba zdefiniowa zerowy port jako wejcie. Na koniec trzeba jeszcze podczy do niego rezystor podcigajcy chyba e polaryzacj, wymusimy z, zewntrz., W ptli gwnej bdzie tylko jedna instrukcja stan zerowego portu bdzie sterowa diod wiecc. Po wysaniu programu do mikrokontrolera dioda bdzie wieci, albo nie, w zalenoci Od tego czy nka, portu 0 bdzie zwierana do masy czy te bdzie wisiaa w powietrzu a wic bdzie zwierana do wysokiego poziomu doczonym powysz, instrukcj, rezystorem.

, Jak mwiem program, jest nudny ale, pozwala upewni, si e komunikacja z, ekspanderem pracuje. I wszystko dziaa jak powinno. Oczywicie znajdziemy mnstwo zastosowa takiej funkcjonalnoci ukadu gdzie potrzebne s, po prostu, wejcia dwustanowe. Czas na co, ciekawszego. Na pytce ktr si bawi do ekspandera podczono wywietlacz, siedmiosegmentowy. C to jest To 7 a waciwie 8 diod wieccych uoonych w ksztacie, semki z, towarzyszc Kropk. Segmenty maj ustalon kolejno ktr opisuje, si kolejnymi literami alfabetu. Kady zna doskonale wiecce cyferki, o charakterystycznym kroju. Powstaj na skutek wczania wybranych segmentw czyli wystawiania, tam, stanw, wysokich, albo niskich, w zalenoci od budowy konkretnego wywietlacza. Rzumy okiem na schemat. Ekspander posiada 8 wyj, a wic, akurat Tyle ile potrzeba dla jednego, takiego, wywietlacza., Poczono, tutaj te, wyjcia, z, poszczeglnymi, segmentami, przez, rezystory ograniczajce prd do bezpiecznej zarwno dla diod wieccych jak, i dla ukadu wartoci. Przygotowaem program, ktry bdzie, wywietla, cyferki, od 0 do 9. Wykorzystam przy tym dwa, przyciski, jeden, bdzie, zwiksza, warto, wywietlan, Drugi zmniejsza. A wic do dziea. Pocztek ju znamy. Tutaj deklaruj przyciski, o ktrych mwiem przed chwil. Licznik bdzie liczb ktr bd wywietla. Wywietlacz graficznym reprezentantem tej liczby na wywietlaczu. X, natomiast to dodatkowa zmienna ktra mi, si przyda w kilku miejscach. Deklaruj sobie porty przyciskw jako wejcia. I inicjuj ekspander. To ju znamy z, poprzedniego szkicu. Teraz musz ustawi wszystkie porty jako wyjcia. Ale, zamiast powtarza t instrukcj osiem razy dla kadego portu po kolei zrobi to w ptli wykorzystujc wspomnian zmienn X, Na koniec przygotowa ustawi 7 port w stan wysoki.

Na 7 porcie znajduje. Si dioda wiecca kropki dziesitnej. Na razie tyle wystarczy. Kompilujemy, i prosz kropka si zawiecia. Wywietlamy cyferki. Wracamy do programu. W gwnej ptli bd badane dwa warunki. Jeli nacinito przycisk, plus naley zwikszy licznik jeli, minus zmniejszy., Ale, tylko, pod drugim, jeszcze, warunkiem, licznik, zwiksza, mona tylko, wtedy gdy, Jest mniejszy od 9, a zmniejsza gdy jest wikszy od 0., A to dlatego e chcemy wywietla wycznie, wartoci z, przedziau od 0 do 9. Gdybymy przekroczyli ten zakres mogyby si nam wywietli gupoty albo stan wywietlacza nie zmieniby si a my nie wiedzielibymy dlaczego. Przypomn jeszcze do czenia Warunkw zalenych uywamy dwch znakw and. Dwa plusy oznaczaj tyle co, zwikszenie zmiennej, o 1. Tutaj wyskoczymy do podprogramu wywietlajcego cyferki a tu bdziemy czeka na puszczenie przycisku. Teoretycznie powinienem by tu doda jeszcze ptle opniajce zatrzymujce analizy na czas ustabilizowania si stykw przyciskw ale przypomn na mojej pytce Znajduj si przerzutniki Schmitta. O ich pozytywnym dziaaniu na stabilno pracy klawiatur mwiem, w odcinku, o klawiaturach wic zainteresowanych odsyam tam, a tutaj tylko dodam e cao pracuje pewnie bez jakichkolwiek ptli opniajcych. Zajrzyjmy do procedury wywietlania bo to jest najciekawsze. Bdziemy mie tutaj funkcj, warunkow, ktra, zadeklaruje, warto Zmiennej wywietlacz wedug stanu licznika., W kadym wypadku owa, zmienna, przyjmie, tak warto by zawieci te segmenty, ktre, reprezentuj dan liczb., Dlatego, jej format, jest binarny., Nie, ma to adnego znaczenia dla programu ale ma due dla czytelnoci. Przyjrzyjmy, si 1 w tej cyfrze musz by zapalone jedynie segmenty B, i C.

Segmenty w zmiennej wywietlacz liczymy od tyu zatem A jest zgaszony B. I C zapalone a potem ju do koca wszystko jest pogaszone., Dla 8 wszystkie segmenty, wiec, si., Z, wyjtkiem, ostatniego bo to jest kropka dziesitna.. I tak dalej. Projektowanie wasnych znakw nie jest trudne jeli zrozumie si powizanie segmentw z, bitami. I zaraz do tego wrc. Gdy ju zmienna wywietlacz przyjmie konkretn warto kolejne jej bity zostan przesane do kolejnych portw., Take tutaj zamiast omiu takich samych funkcji wykorzystaem ptl ze zmienn x, ktra powtrzy, si osiem razy. Za kadym razem bd wybiera kolejny bit ze zmiennej wywietlacz. Kompilujemy wysyamy. I dziaa licznie. Modu zamiany zmiennej na wiecce cyferki jest gotowy do pracy, i mona z, niego korzysta, w jakich bardziej uytecznych programach. Pro uywaj tablic. Ju od dawna pojawiay si komentarze najpierw e duo instrukcji. If to wyraz braku profesjonalizmu ostatnio te e, tak samo jest gdy. Naduywa. Si instrukcji switch case.. I tu si zgadzam ale na wszystko musia przyj czas. Dzi przyszed czas na tablice., A jest to bardzo proste. Tablica to zestawienie dowolnych w zasadzie wartoci. Do kadej z, nich mona si odnie za pomoc liczby porzdkowej tablicy czy te jak kto woli indeksu. Stworz, teraz tablic, w Ktrej bd zakodowane wygldy wszystkich cyfr., A nawet wicej dodam jeszcze pierwszych sze liter alfabetu, znak minusa, i kropk. Zatem mamy, tablic, z, 18, pozycjami. Pierwszych, dziesi, przepisaem, sobie, z, poprzedniego, szkicu, kolejne, zaprojektowaem, teraz., Tablica, powinna, mie, nazw, oczywicie, eby, nie, komplikowa, nazwaem, j, tablica., Potem, zadeklarowan, ilo Elementw cho to nie jest obowizkowe.

No, i same elementy oddzielone przecinkami., Pozostaa, cz, programu, nie, zmieni, si z, wyjtkiem procedury wywietlania znakw. Istota tkwi, w tej linii. Odczytujemy poszczeglne bity, jak, poprzednio ale, ju, nie, ze, zmiennej, wywietlacz, ktrej, tutaj, nie, ma w ogle, a z, tablicy., A konkretnie z, pozycji, w tablicy okrelonej Zmienn licznik ktra tutaj jest jej indeksem inaczej mwic, liczb, porzdkow., Zatem, gdy, licznik, przyjmie, warto, od 0 do 9 wywietla si grafika ukryta pod tymi, indeksami. Ale, tutaj powikszyem warunek do wartoci 17 bo po 9 chciabym jeszcze wywietli litery, A B C D E. I F oraz znak minusa i kropk. W ten sposb mog sobie wymyli dowolnie du tablic. I zapakowa tam dowolne grafiki jakie tylko mona wywietli na skromnym jednak moliwociami wywietlaczu siedmiosegmentowym., Nic nie stoi na przeszkodzie by sobie ustawi znaki, zgodnie, ze, standardem, ASCII, jeli bdzie to gdzie potrzebne.. I na sam koniec jeszcze maa rzecz do wyjanienia. Przy deklaracji zmiennej licznik zadaem jej warto rwn 17. To adres kropki. Naley pamita e gdy nie deklaruje si wartoci jak tutaj przyjmuje ona zawsze domyln warto rwn zero., A po co; tak Bo zaraz po resecie wywietlam kropk, w Tym miejscu. Ale, potem chc by licznik startowa od 0 wic po prostu nadaj mu warto 0. I mog przej do gwnej ptli. Zapraszam do subskrybowania polubienia, i komentowania.

https://www.youtube.com/watch?v=CgaPKAdRFVw