WOW! Długie. Ale naprawdę kompleksowa informacja na temat PCFa :) Wszystko co potrzebne a nawet więcej :) Super. I dodatkowo rozwiązałeś problem który pojawił się w moim filmie - słaba moc świecenia diod! Ciesze się że zrobiłeś nowy odcinek bo coś ostatnio mało ich na Twoim kanale. I jedna uwaga - bo pewnie będziesz dostawał zapytania na ten temat. W Leonardo piny I2C są również połączone - tyle że nie z A4 i A5 tylko z D2 i D3 (SDA i SCL). Czasami podłączamy jakieś urządzenie na I2C i standardowy wyświetlacz LCD na pinach 2-7. I albo mamy krzaki na LCD albo urządzenie na I2C nie działa - to właśnie przez te piny (2 i 3). Dlatego gdy używamy tej magistrali to należy unikać używania pinów D2 i D3. Pozdrawiam i czekam na kolejne filmy.
Siedziałem godzinę i zastanawiałem się dlaczego nie działa mi mój termometr i jak tylko przeczytałem Twój komentarz wszystko było jasne, podłączyłem się właśnie do wejścia D2. Dzięki, że zwróciłeś na to uwagę ;)
Taka mała uwaga która może ułatwić życie. 11:22 powiedziałeś że adres w nocie jest podany w systemie binarnym, a w programie trzeba użyć szesnastkowego. Mam nie małe doświadczenie z programowaniem i wiem że funkcje nie mogą nakazać ci korzystania z określonego systemu liczbowego, dla kompilatora (który działa po stronie komputera) nie ma to znaczenia jaki jest system liczbowy. wystarczy tylko określić z jakiego korzystamy. Dla przykładu liczba 28 zapisana w 4 najpopularniejszych systemach liczbowych: Szesnastkowy (heksadecymalny): 0x1C Dziesiętny: 28 Ósemkowy (Oktalny): 034 Dwójkowy (Binarny): 0b1100 Zasada jest prosta: Jeżeli korzystamy z systemu dziesiętnego to podajemy liczbę bez żadnych dodatków. Gdy korzystamy z szesnastkowego to przed liczbą dopisujemy "0x" W ósemkowy przed liczbą podajemy "0" A w dwójkowym przed liczbą podajemy "0b" Możesz dodać adnotacje na filmie aby ludzie wiedzieli że można tak stosować ten zapis.
Jak dla mnie długość ok, bardzo dużo zostało powiedziane i dzięki temu wiem chyba wszystko co potrzeba, żeby wykorzystać ten ekspander. Tak trzymać. Pozdrawiam :)
Totalnie zaskoczyłeś mnie z zastosowaniem ekspandera do wyświetlacza. Mam go w dwóch wyświetlaczach, sam to lutowałem i dopiero teraz skojarzyłem, że to ten sam układ scalony
Dziękuję za wyczerpujący filmik! Jako amator też miałem problem ze słabo świecącymi LEDami, a że porwałem się z motyką na słońce podpinając jeszcze rejestr przesuwny wtedy - to byłem nieźle zdruzgotany. Rejestr za to opanowałem szybciej, ale trzeba pamiętać, że się wysyła polecenie jednym bajtem do wszystkich pinów - to jest świetne na ozdoby choinkowe, ale do sterowania innymi rzeczami niekoniecznie. Jeszcze raz dzięki!
Super tłumaczysz!. Mam nadzieje że będziesz prowadził jeszcze przez długi czas ten kanał, bo z totalnego laika, jestem w stanie sam zrobić ciekawe projekty. Chciałbym też zapytać czy planujesz w najbliższym czasie wytłumaczyć silniki krokowe, dość ważny element wykonawczy, jak dla mnie. Pozdrawiam
Dla tych co mają problem z wyświetlaną tylko jedną literką na lcd podłączonym do expandera!!!! W podanej bibliotece LiquidCrystal_I2C trzeba znaleźć w pliku LiquidCrystal_I2C.cpp definicję funkcji write() i zmienić return 0; na return 1; sam się tego naszukałem więc zostawiam dla potomnych. Pozdrawiam
W jaki sposób powinienem zadeklarować klawiaturę używając ekspandera? Normalnie odbywa się to w ten sposób: byte rowPins[ROWS] = {49, 50}; //piny wierszy byte colPins[COLS] = {51, 52, 53}; //piny kolum
Dobrze by było omówić zastosowanie expandera PCF8574 a w zasadzie dwóch expanderów do płytki z ESP8266 np NodeEmcu .Tam biblioteka dla expandera jest zupelnie inna i nie chce poprawnie pracować. U mnie pracuje to wtedy tak, iż mogę tylko jeden raz ustawić stan pinów w expanderze.Expander to PCF8574N tj zliterką N
Taka mała uwaga na filmie minuta 21:55 wkradł się błąd bowiem jest tam napisane expander.pullDow(5); a ma być expander.pullDown(5); czyli Down a nie Dow ;) Pozdrawiam
In file included from C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:40:0, from sketch_dec10a.ino:1: sketch_dec10a.ino: In function 'void setup()': C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:44:16: error: expected ')' before numeric constant #define OUTPUT 0x1 ^ sketch_dec10a.ino:8:22: note: in expansion of macro 'OUTPUT' sketch_dec10a.ino:8:28: error: no matching function for call to 'PCF8574::pinMode(double)' sketch_dec10a.ino:8:28: note: candidate is: In file included from sketch_dec10a.ino:1:0: C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:72:7: note: void PCF8574::pinMode(uint8_t, uint8_t) void pinMode(uint8_t pin, uint8_t mode); ^ C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:72:7: note: candidate expects 2 arguments, 1 provided In file included from C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:40:0, from sketch_dec10a.ino:1: sketch_dec10a.ino: In function 'void loop()': C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:40:14: error: expected ')' before numeric constant #define HIGH 0x1 ^ sketch_dec10a.ino:12:28: note: in expansion of macro 'HIGH' sketch_dec10a.ino:12:32: error: no matching function for call to 'PCF8574::digitalWrite(double)' sketch_dec10a.ino:12:32: note: candidate is: In file included from sketch_dec10a.ino:1:0: C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:81:7: note: void PCF8574::digitalWrite(uint8_t, uint8_t) void digitalWrite(uint8_t pin, uint8_t value); ^ C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:81:7: note: candidate expects 2 arguments, 1 provided In file included from C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:40:0, from sketch_dec10a.ino:1: C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:41:14: error: expected ')' before numeric constant #define LOW 0x0 ^ sketch_dec10a.ino:14:28: note: in expansion of macro 'LOW' sketch_dec10a.ino:14:31: error: no matching function for call to 'PCF8574::digitalWrite(double)' sketch_dec10a.ino:14:31: note: candidate is: In file included from sketch_dec10a.ino:1:0: C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:81:7: note: void PCF8574::digitalWrite(uint8_t, uint8_t) void digitalWrite(uint8_t pin, uint8_t value); ^ C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:81:7: note: candidate expects 2 arguments, 1 provided Błąd kompilacji.
Minuta 6 mówisz że w arduino leonardo sda i scl nie są połączone z A4 i A5, w atmega328 jest tylko jeden interfejs I2C, nawet jeśli miernikiem tego nie wykryjesz, działa to tak samo w obu płytkach
Dobra robota, wszystko ładnie wyjaśnione. Nie trzeba być elektronikiem ani programistą aby coś sobie zbudować. U siebie na blogu pokazałem jak użyć ekspandera na ATmega8 używając języka C. cyklonus.blogspot.com/2014/06/atmega8-i2c-ekspander-pcf8574p.html Pozdrawiam
Witam bardzo fajny filmik , mam 2 małe pytania : 1. jeżeli stosuje taki ekspander i chce przesłać za pomocą IR sygnał czy muszę stosować dodatkowe zapisy lub biblioteki czy może jednak to zadziała tak jak bym go wogóle nie używał . a 2 pytanie bo chciał bym przesłać za pomocą tego IR sygnał 12v i wiadome muszę obniżyć napięcie z 12v na niższe dla diody IR czy zastosowanie stanu Niskiego bądź Wysokiego będzie miało znaczenie jak 12v przesyłam ir na diody led 12v ??
Małe sprostowanie co do funkcji blink. Pierwszy parametr to numer pinu, drugi ilość mrugnięć , a ostatni to całkowity czas wyświetlenia WSZYSTKICH mrugnięć. :)
PCF8574 nie posiada rezystorów podciągających pull-up i pull-down, biblioteka faktycznie posiada ale nawet zaglądając w jej kod autor zaznacza, że jest to tylko po to aby "oznaczyć", że ten pin podciągamy w dół lub w górę.
Warto kupić taki układ na eBayu? Bo jest dużo tańszy, ale czytałem o tym, że układy z chin są niższej jakości i znacznie częściej się psują. Nie wiem czy dotyczy to takich układów czy bardziej uC?
Mam pytanie i mam nadzieje, że tu znajdę odpowiedź. Z pinu arduino mogę uzyskac 20 mA i to tyczy każdego pinu? Np. każdy pin chciałbym obiążyc 20mA x ilośc pinów, to potrzebowałbym ładnej mocy. Czy to wytrzyma?
zajebisty filmik jak każdy. Kto jest za by elektroprzewodnik zrobił poradnik jak zrobic klona arduino uno komentuje ten post lub daje like. Pozdrawiam!
Witam, u mnie na Arduino Leonardo nie mogę skompilować programu po zaimportowaniu biblioteki expandera. Występuje błąd: C:\Program Files (x86)\Arduino\libraries\PCF8574\PCint.h:3:59: error: 'PCMSK2' was not declared in this scope Dodam, że jak przełączę w Arduino IDE na arduino nano czy inne kompilacja idzie bez problemu. Dziwne szczególnie, że na filmiku jest robione to na Leonardo. Co trzeba zrobić by mi zadziałało? Pozdrawiam i liczę na pomoc w moim problemie
Jeżeli ktoś nadal ma problem z wyświetlaniem tylko jednej litery przez LCD przy podłączaniu wyświetlacza poprzez ekspander PCF8574, to rozwiązanie jest naprawdę bardzo proste. Gdy pobierzecie bibliotekę podawaną w opisie przez ElektroPrzewodnika i dołączycie ją w IDE Arduino (Szkic>Dołącz bibliotekę>Dodaj bibliotekę .ZIP...) wejdźcie w /Dokumenty/Arduino/libraries/LiquidCrystal_I2C i odszukajcie w tym folderze plik LiquidCrystal_I2C.cpp. Najlepiej otworzyć go sobie w Notatniku. Należy odszukać treść funkcji write(): inline size_t LiquidCrystal_I2C::write(uint8_t value) { send(value, Rs); return 0; } i zmienić część "return 0;" na "return 1;". Poprawiona i działająca funkcja write() powinna wtedy wyglądać tak: inline size_t LiquidCrystal_I2C::write(uint8_t value) { send(value, Rs); return 1; } źródło: github.com/arduino/Arduino/issues/4142
Wiecie możne czemu przykłady z tej biblioteki nie chce przejść weryfikacji? kiedyś mi działało sprawdzałem na różnych wersjach IDE Jeszcze jedno jak długie mogą być przewody do magistrali I2C?
Dobrze tłumaczysz z adresowaniem? Aby wybrać układ wysyłamy bajt (8 bitów) adresu, czyli ramka ma postać S 0 1 1 1 A2 A1 A0 0 A, gdzie S - bit startu, 0 1 1 1 A2 A1 A0 0 - bajt danych (od 0x70 do 0x7E), A - aknowledge. Po zakończeniu nadawania wysyłamy bit stop. Mogę się mylić, bo jeszcze nie odpalałem tego układu.
Witam. Podłączyłem układ i nie działał. Włączyłem I2C scaner, nic nie wykryło. Okazało się że masę podłączyłem pod plus, więc zmieniłem to. Scaner zwrócił mi adres, a układ zaczął się grzać. I to do tego stopnia że płytkę stykową mi przytopiło. 16 pinów nie nadaj się do użytku. Ale mniejsza z tym. Czemu układ zaczął się grzać?? On sam jest na osobnym zasilaniu 5V, z portu USB z komputera. Ale to chyba nie może być przyczyną. Jaki pobór prądu jest normalny dla tego układu?? Czy jeśli ustali się jakiś adres, to 5V powinno być przez rezystor jakiś czy bezpośrednio?? Pozdrawiam.
U mnie na Leonardo nie kompiluje kodu, coś nie tak z biblioteką, za to na Uno i Mega jest OK. Zauważyłem, że dużo ludzi ma ten sam problem z Leonardo i biblioteką PCF8574. Mimo wszystkich rad z netu, nie udało mi się naprawić problemu.
Witam wiem że dawno po publikacji ale potrzebuje pomocy ekspander działa i podaje 5v na wyprowadzenie ale po podpięciu diody napęcie spada do 2v co robić ?
Widzę, że ładujesz moduł do Leonardo. Mam problem gdyż u mnie przy próbie komplikacji wyskakuje błędy: PCint.h:3:50: error: 'PCMSK1' was not declared in this scope PCint.h:3:59: error: 'PCMSK2' was not declared in this scope Arduino Leonardo, IDE 1.6.12. Mógłbyś sprawdzić czy u Ciebie na tym IDE działa lub podać IDE na którym pracowałeś w czasie wgrywania modułu?
@Wojtek Wantuła Poradziłem sobie z problemem wywalając wszelkie możliwe IDE (zainstalowane lub po prostu pobrane i zainstalowane), a także wywalając wszystkie foldery z Dokumentów (jeden jest w Dokumentach, a drugi chyba w AppData). Zrezygnowany ostatnim strzałem jeszcze raz pobrałem 1.6.12 i tym razem zadziałało. Ale jeszcze lepiej działa 1.6.8.
Dzięki za świetny filmik. Jak zwykle - kawa na ławę :-) Chytre z tym podłączeniem LCD przez ekspander. Ma ktoś pomysł jak podłączyć w ten sposób wyświetlacz od Nokii 5110?
Zastanawiam się czy nie kupić takiego ekspandera. Brakuje mi pinów cyfrowych powoli w moim projekcie. Używam też wyświetlacza LCD przez magistralę I2C, rozumiem, że w takim razie ten ekspander odpada? Czy mogę go dołożyć do projektu pod piny A4 i A5? (UNO)
Już wszystko działa, trzeba zainstalować arduino ze strony .org, wcześniej miałem z .cc i ze wszystkim były problemy, teraz mam wersję 1.7.10 i jest OK. :)
Zmiłuj się i przestań kaleczyć język tym "po lewo" czy "po prawo". Jest to błędna konstrukcja powstała jako efekt skrzyżowania dwóch poprawnych wyrażeń: na lewo oraz po lewej stronie. Warto zapamiętać, że krzyżowanie tych (i innych) stałych związków wyrazowych to rażący błąd językowy.
Krzysiu zmiłuj się i przestań się przypierdalać. Masz ochotę na poprawną polszczyznę to oglądaj profesora Miodka. Tutaj jest ważna treść elektroniczna a nie ą ę . Jest to błędna konstrukcja myślowa powstała jako efekt skrzyżowania dwóch słów cukierek i papierek nas interesuje cukierek a Ciebie papierek. Warto Krzysztofie zapamiętać że po studiach polonistyki możesz dobrze robić frytki w mc donald -ie i rażąco zaniedbując swoje obowiązki solić chujom dwa razy więcej niech ich suszy jak nie potrafią zapamiętać na lewo na prawo.
Co Wam przeszkadza kulturalne zwrócenie uwagi? Równa się w górę, nie w dół. Zaskakujące, że oglądający takie filmiki są tak mało ambitni, pewnie stąd się wziął stereotyp o aspołecznym informatyku- niektórzy (prosperujący do tego miana przynajmniej) tak są zapatrzeni w prostą dość wiedzę ze swojego zakresu, że najchętniej by chrząkali porozumiewając się. Nie ma nic zabawniejszego od sepleniącego elektronika. Ograniczajcie się jak chcecie/nie umiecie inaczej, ale nie zmuszajcie do tego ElektroPrzewodnika. Póki rozumiecie coś ponad beknięcia- nie każcie innym trzymać się każdego błędu, który popełnia. Rozwijamy się! Niektórzy nawet wszechstronnie, a nie tropem osła z omyłkowo nałożonymi klapkami na oczy.
Witam -to środowisko IDE jest jakieś masakryczne i nie kompatybilne z ver nowszymi i wstecz IDE. np. mam IDE 1.6.13 i wgarną bibliotekę PCF8574 z linku i mam błąd. Arduino:1.6.13 (Windows 7), Płytka:"Arduino Leonardo" C:\Users\Adam\Documents\Arduino\libraries\PCF8574\examples\ButtonBlink\ButtonBlink.ino: In function 'void ISRdemo()': ButtonBlink:53: error: no matching function for call to 'PCF8574::toggle()' expander.toggle(); ^ C:\Users\Adam\Documents\Arduino\libraries\PCF8574\examples\ButtonBlink\ButtonBlink.ino:53:19: note: candidate is: In file included from C:\Users\Adam\Documents\Arduino\libraries\PCF8574\examples\ButtonBlink\ButtonBlink.ino:13:0: C:\Users\Adam\Documents\Arduino\libraries\PCF8574/PCF8574.h:118:7: note: void PCF8574::toggle(uint8_t) void toggle(uint8_t pin); ^ C:\Users\Adam\Documents\Arduino\libraries\PCF8574/PCF8574.h:118:7: note: candidate expects 1 argument, 0 provided exit status 1 no matching function for call to 'PCF8574::toggle()' Ten raport powinien zawierać więcej informacji jeśli w File -> Preferencje zostanie włączona opcja "Pokaż szczegółowe informacje podczas kompilacji"
Świetny filmik i na prawdę rozjaśnia wiele wątpliwości. Robię projekt, w którym wykorzystuję pięć expanderów i staje się on już dość rozbudowany. Żeby był on bardziej przejrzysty chciałem zadeklarować nazwy dla poszczególnych pinów w expanderze jednak nie wiem jak to zrobić. Arduino nie przyjmuje mi deklaracji typu int S5 = expander(2); Ma ktoś pomysł jak rozwiązać ten problem i czy jest to w ogóle możliwe?
narescie dobry kanal cos konkret , bo wiekszosc kanalow to padlina typu zycie na zmywaku w england albo zycie poludzia w usa Oby wiecej filmikow tu mozna czegos nauczyc
34:20 nie wprowadzaj ludzi w błąd! linie I2C (TWI) powinny być podciągnięte do zasilania niemal w każdej nocie o tym piszą. Zarówno SCL jak i SDA to linie typu "otwarty dren" to oznacza że zarówno master jak i slave wymuszają tylko stan niski. Być może w arduino są już rezystory podciągające ale mówienie że nie trzeba ich stosować to bełkot i wprowadzanie ludzi w błąd.
Cześć, B fajny odcinek ale.... mi nie działa :D A mianowicie wyswietla tylko 1 znak np (H z Hello World!) ktos mialby jakies zlote rady ?? z gory dzieki!!
WOW! Długie. Ale naprawdę kompleksowa informacja na temat PCFa :) Wszystko co potrzebne a nawet więcej :) Super. I dodatkowo rozwiązałeś problem który pojawił się w moim filmie - słaba moc świecenia diod!
Ciesze się że zrobiłeś nowy odcinek bo coś ostatnio mało ich na Twoim kanale.
I jedna uwaga - bo pewnie będziesz dostawał zapytania na ten temat. W Leonardo piny I2C są również połączone - tyle że nie z A4 i A5 tylko z D2 i D3 (SDA i SCL). Czasami podłączamy jakieś urządzenie na I2C i standardowy wyświetlacz LCD na pinach 2-7. I albo mamy krzaki na LCD albo urządzenie na I2C nie działa - to właśnie przez te piny (2 i 3). Dlatego gdy używamy tej magistrali to należy unikać używania pinów D2 i D3.
Pozdrawiam i czekam na kolejne filmy.
Siedziałem godzinę i zastanawiałem się dlaczego nie działa mi mój termometr i jak tylko przeczytałem Twój komentarz wszystko było jasne, podłączyłem się właśnie do wejścia D2. Dzięki, że zwróciłeś na to uwagę ;)
Ooo, dzięki! Nie mogłam rozkminić co jest nie tak kiedy podpinam ekspander. :)
Taka mała uwaga która może ułatwić życie.
11:22 powiedziałeś że adres w nocie jest podany w systemie binarnym, a w programie trzeba użyć szesnastkowego. Mam nie małe doświadczenie z programowaniem i wiem że funkcje nie mogą nakazać ci korzystania z określonego systemu liczbowego, dla kompilatora (który działa po stronie komputera) nie ma to znaczenia jaki jest system liczbowy. wystarczy tylko określić z jakiego korzystamy.
Dla przykładu liczba 28 zapisana w 4 najpopularniejszych systemach liczbowych:
Szesnastkowy (heksadecymalny): 0x1C
Dziesiętny: 28
Ósemkowy (Oktalny): 034
Dwójkowy (Binarny): 0b1100
Zasada jest prosta:
Jeżeli korzystamy z systemu dziesiętnego to podajemy liczbę bez żadnych dodatków.
Gdy korzystamy z szesnastkowego to przed liczbą dopisujemy "0x"
W ósemkowy przed liczbą podajemy "0"
A w dwójkowym przed liczbą podajemy "0b"
Możesz dodać adnotacje na filmie aby ludzie wiedzieli że można tak stosować ten zapis.
Jak dla mnie długość ok, bardzo dużo zostało powiedziane i dzięki temu wiem chyba wszystko co potrzeba, żeby wykorzystać ten ekspander. Tak trzymać.
Pozdrawiam :)
Totalnie zaskoczyłeś mnie z zastosowaniem ekspandera do wyświetlacza. Mam go w dwóch wyświetlaczach, sam to lutowałem i dopiero teraz skojarzyłem, że to ten sam układ scalony
Dziękuję za wyczerpujący filmik! Jako amator też miałem problem ze słabo świecącymi LEDami, a że porwałem się z motyką na słońce podpinając jeszcze rejestr przesuwny wtedy - to byłem nieźle zdruzgotany.
Rejestr za to opanowałem szybciej, ale trzeba pamiętać, że się wysyła polecenie jednym bajtem do wszystkich pinów - to jest świetne na ozdoby choinkowe, ale do sterowania innymi rzeczami niekoniecznie.
Jeszcze raz dzięki!
Przemawia do mnie Twój sposób tłumaczenia. Dziękuje
W końcu normalny odcinek. Mam nadzieję że teraz będą one częściej. Niemniej jednak odcinek super i jest bardzo pomocny.
Za długie filmy ! Nagrywaj max 10 min, a w zamian za to, wstawiaj częściej jakieś materiały.
No, no, no.... proszę bardzo... miodzio.... Jestem bardzo zadowolony z tego filmu ;)
Jesteś the best! Jak zwykle - kawał dobrej roboty!
Pozdrawiam
:)
Nagrasz film, w którym omawiasz układ NE555? W internecie jest sporo, ale strasznie nie jasno omówione, słabej jakości etc. Pozdrawiam :)
Jak zwykle w pełni profesjonalnie wytłumaczone ;]
Super tłumaczysz!. Mam nadzieje że będziesz prowadził jeszcze przez długi czas ten kanał, bo z totalnego laika, jestem w stanie sam zrobić ciekawe projekty. Chciałbym też zapytać czy planujesz w najbliższym czasie wytłumaczyć silniki krokowe, dość ważny element wykonawczy, jak dla mnie. Pozdrawiam
Dla tych co mają problem z wyświetlaną tylko jedną literką na lcd podłączonym do expandera!!!!
W podanej bibliotece LiquidCrystal_I2C trzeba znaleźć w pliku LiquidCrystal_I2C.cpp definicję funkcji write() i zmienić return 0; na return 1; sam się tego naszukałem więc zostawiam dla potomnych.
Pozdrawiam
Kurde, uwielbiam te twoje odcinki.
Jak zawsze bardzo dobrze wytłumaczone. Choć filmik nie należy do najkrótszych ogląda się znakomicie.
Znacie podobny ekspander wejść analogowych?
Skoro nauczyłeś nas obsługi ekspandera, to chyba czas na rejestr przesuwny. :D
W jaki sposób powinienem zadeklarować klawiaturę używając ekspandera? Normalnie odbywa się to w ten sposób:
byte rowPins[ROWS] = {49, 50}; //piny wierszy
byte colPins[COLS] = {51, 52, 53}; //piny kolum
Dobry odcinek, tak trzymać! Pozdrawiam
Świetny odcinek. Czy mógłbyś omówić nadajniki.
Pozdrawiam
Dobrze by było omówić zastosowanie expandera PCF8574 a w zasadzie dwóch expanderów do płytki z ESP8266 np NodeEmcu .Tam biblioteka dla expandera jest zupelnie inna i nie chce poprawnie pracować. U mnie pracuje to wtedy tak, iż mogę tylko jeden raz ustawić stan pinów w expanderze.Expander to PCF8574N tj zliterką N
Taka mała uwaga na filmie minuta 21:55 wkradł się błąd bowiem jest tam napisane expander.pullDow(5); a ma być expander.pullDown(5); czyli Down a nie Dow ;) Pozdrawiam
+Paweł Sowa dzięki za zwrócenie uwagi, aż dziw, że to przeoczyłem.
;)
+ElektroPrzewodnik #include
#include
PCF8574 expander;
void setup() {
expander.begin(0x20);
expander.pinMode(4. OUTPUT);
}
void loop() {
expander.digitalWrite(4. HIGH);
delay(500);
expander.digitalWrite(4. LOW);
delay(500);
}
+plarek1 nie działa nie mogę wgrać tego a biblioteki wgrałem
In file included from C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:40:0,
from sketch_dec10a.ino:1:
sketch_dec10a.ino: In function 'void setup()':
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:44:16: error: expected ')' before numeric constant
#define OUTPUT 0x1
^
sketch_dec10a.ino:8:22: note: in expansion of macro 'OUTPUT'
sketch_dec10a.ino:8:28: error: no matching function for call to 'PCF8574::pinMode(double)'
sketch_dec10a.ino:8:28: note: candidate is:
In file included from sketch_dec10a.ino:1:0:
C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:72:7: note: void PCF8574::pinMode(uint8_t, uint8_t)
void pinMode(uint8_t pin, uint8_t mode);
^
C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:72:7: note: candidate expects 2 arguments, 1 provided
In file included from C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:40:0,
from sketch_dec10a.ino:1:
sketch_dec10a.ino: In function 'void loop()':
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:40:14: error: expected ')' before numeric constant
#define HIGH 0x1
^
sketch_dec10a.ino:12:28: note: in expansion of macro 'HIGH'
sketch_dec10a.ino:12:32: error: no matching function for call to 'PCF8574::digitalWrite(double)'
sketch_dec10a.ino:12:32: note: candidate is:
In file included from sketch_dec10a.ino:1:0:
C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:81:7: note: void PCF8574::digitalWrite(uint8_t, uint8_t)
void digitalWrite(uint8_t pin, uint8_t value);
^
C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:81:7: note: candidate expects 2 arguments, 1 provided
In file included from C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:40:0,
from sketch_dec10a.ino:1:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:41:14: error: expected ')' before numeric constant
#define LOW 0x0
^
sketch_dec10a.ino:14:28: note: in expansion of macro 'LOW'
sketch_dec10a.ino:14:31: error: no matching function for call to 'PCF8574::digitalWrite(double)'
sketch_dec10a.ino:14:31: note: candidate is:
In file included from sketch_dec10a.ino:1:0:
C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:81:7: note: void PCF8574::digitalWrite(uint8_t, uint8_t)
void digitalWrite(uint8_t pin, uint8_t value);
^
C:\Program Files (x86)\Arduino\libraries\PCF8574/PCF8574.h:81:7: note: candidate expects 2 arguments, 1 provided
Błąd kompilacji.
Mogłeś wcześniej zrobić ten film, bo męczyłem się z tym 2 dni wcześniej :)
Minuta 6 mówisz że w arduino leonardo sda i scl nie są połączone z A4 i A5, w atmega328 jest tylko jeden interfejs I2C, nawet jeśli miernikiem tego nie wykryjesz, działa to tak samo w obu płytkach
Zrobisz odcinek o silnikach krokowych i sterowaniu nim za pomocą enkodera ? Pozdrawiam :)
Dobra robota, wszystko ładnie wyjaśnione. Nie trzeba być elektronikiem ani programistą aby coś sobie zbudować.
U siebie na blogu pokazałem jak użyć ekspandera na ATmega8 używając języka C.
cyklonus.blogspot.com/2014/06/atmega8-i2c-ekspander-pcf8574p.html
Pozdrawiam
Witam bardzo fajny filmik , mam 2 małe pytania : 1. jeżeli stosuje taki ekspander i chce przesłać za pomocą IR sygnał czy muszę stosować dodatkowe zapisy lub biblioteki czy może jednak to zadziała tak jak bym go wogóle nie używał . a 2 pytanie bo chciał bym przesłać za pomocą tego IR sygnał 12v i wiadome muszę obniżyć napięcie z 12v na niższe dla diody IR czy zastosowanie stanu Niskiego bądź Wysokiego będzie miało znaczenie jak 12v przesyłam ir na diody led 12v ??
Małe sprostowanie co do funkcji blink.
Pierwszy parametr to numer pinu, drugi ilość mrugnięć , a ostatni to całkowity czas wyświetlenia WSZYSTKICH mrugnięć. :)
PCF8574 nie posiada rezystorów podciągających pull-up i pull-down, biblioteka faktycznie posiada ale nawet zaglądając w jej kod autor zaznacza, że jest to tylko po to aby "oznaczyć", że ten pin podciągamy w dół lub w górę.
wielkie dzięki oby tak dalej
Witaj,
chciałbym się spytać jakiego expandera używasz w tym odcinku do zaprogramowania wyświetlacza LCD.
Warto kupić taki układ na eBayu? Bo jest dużo tańszy, ale czytałem o tym, że układy z chin są niższej jakości i znacznie częściej się psują. Nie wiem czy dotyczy to takich układów czy bardziej uC?
Mam pytanie i mam nadzieje, że tu znajdę odpowiedź. Z pinu arduino mogę uzyskac 20 mA i to tyczy każdego pinu? Np. każdy pin chciałbym obiążyc 20mA x ilośc pinów, to potrzebowałbym ładnej mocy. Czy to wytrzyma?
16:18 Arduino używa modułów avr firmy atmel która magistralę I2C nazywa TWI ( two wieś interface)
mam jedno pytanie. czy da się zrobić z tego inną płytkę? zrobisz o tym film?
zajebisty filmik jak każdy.
Kto jest za by elektroprzewodnik zrobił poradnik jak zrobic klona arduino uno komentuje ten post lub daje like.
Pozdrawiam!
Cześć,
Zrobiłem wszystko zgodnie z tym co mówiłeś a efekt jaki otrzymuje to tylko świecąc wyświetlacz LCD 2x16
Co może być nie tak?
Czy można by zrobić odcinek o rejestrze przesuwnym z tego zestawu?
Ok filmik
Interesuje mnie jak podłączyć do tabletu USB z androidem
Witam, u mnie na Arduino Leonardo nie mogę skompilować programu po zaimportowaniu biblioteki expandera. Występuje błąd: C:\Program Files (x86)\Arduino\libraries\PCF8574\PCint.h:3:59: error: 'PCMSK2' was not declared in this scope
Dodam, że jak przełączę w Arduino IDE na arduino nano czy inne kompilacja idzie bez problemu. Dziwne szczególnie, że na filmiku jest robione to na Leonardo. Co trzeba zrobić by mi zadziałało? Pozdrawiam i liczę na pomoc w moim problemie
Jeżeli ktoś nadal ma problem z wyświetlaniem tylko jednej litery przez LCD przy podłączaniu wyświetlacza poprzez ekspander PCF8574, to rozwiązanie jest naprawdę bardzo proste.
Gdy pobierzecie bibliotekę podawaną w opisie przez ElektroPrzewodnika i dołączycie ją w IDE Arduino (Szkic>Dołącz bibliotekę>Dodaj bibliotekę .ZIP...) wejdźcie w /Dokumenty/Arduino/libraries/LiquidCrystal_I2C i odszukajcie w tym folderze plik LiquidCrystal_I2C.cpp. Najlepiej otworzyć go sobie w Notatniku.
Należy odszukać treść funkcji write():
inline size_t LiquidCrystal_I2C::write(uint8_t value) {
send(value, Rs);
return 0;
}
i zmienić część "return 0;" na "return 1;". Poprawiona i działająca funkcja write() powinna wtedy wyglądać tak:
inline size_t LiquidCrystal_I2C::write(uint8_t value) {
send(value, Rs);
return 1;
}
źródło: github.com/arduino/Arduino/issues/4142
Możesz sprawdzić czy działa Ci podłączenie expandera do Arduino na wersji IDE 1.8? (Najnowsza). Z góry dzięki ;)
Działa :) Dodam tylko, że korzystam z Arduino Uno, a IDE ściągnąłem ze strony arduino.org, a nie z arduino.cc !
Niestety mi nie działa. Dostaję taki błąd: wklej.org/id/3007167/
Błędy bez kodu niewiele dadzą. Podlinkuj jeszcze kod.
wklej.org/id/3007172/
Wiecie możne czemu przykłady z tej biblioteki nie chce przejść weryfikacji? kiedyś mi działało sprawdzałem na różnych wersjach IDE
Jeszcze jedno jak długie mogą być przewody do magistrali I2C?
Dobrze tłumaczysz z adresowaniem? Aby wybrać układ wysyłamy bajt (8 bitów) adresu, czyli ramka ma postać S 0 1 1 1 A2 A1 A0 0 A, gdzie S - bit startu, 0 1 1 1 A2 A1 A0 0 - bajt danych (od 0x70 do 0x7E), A - aknowledge. Po zakończeniu nadawania wysyłamy bit stop. Mogę się mylić, bo jeszcze nie odpalałem tego układu.
Zwykłe I2C :)
Witam.
Podłączyłem układ i nie działał. Włączyłem I2C scaner, nic nie wykryło. Okazało się że masę podłączyłem pod plus, więc zmieniłem to. Scaner zwrócił mi adres, a układ zaczął się grzać. I to do tego stopnia że płytkę stykową mi przytopiło. 16 pinów nie nadaj się do użytku. Ale mniejsza z tym. Czemu układ zaczął się grzać??
On sam jest na osobnym zasilaniu 5V, z portu USB z komputera. Ale to chyba nie może być przyczyną. Jaki pobór prądu jest normalny dla tego układu??
Czy jeśli ustali się jakiś adres, to 5V powinno być przez rezystor jakiś czy bezpośrednio??
Pozdrawiam.
Będzie jakiś kurs na płytkach stm 8?
U mnie na Leonardo nie kompiluje kodu, coś nie tak z biblioteką, za to na Uno i Mega jest OK. Zauważyłem, że dużo ludzi ma ten sam problem z Leonardo i biblioteką PCF8574. Mimo wszystkich rad z netu, nie udało mi się naprawić problemu.
Witam wiem że dawno po publikacji ale potrzebuje pomocy ekspander działa i podaje 5v na wyprowadzenie ale po podpięciu diody napęcie spada do 2v co robić ?
Przepraszam - ten problem został poruszony w komentarzu poniżej. Sorki.
a można prosić o filmik w temacie multiplekser vs. arduino
Kiedy będzie odcinek z arduino o Rejestrze przesuwnym z zestawu z botlandy
A jest możliwość, żeby zwiększyć ilość portów i2c?
Jaki akumulator poziom rozładowania na blokowej 9v?
Widzę, że ładujesz moduł do Leonardo. Mam problem gdyż u mnie przy próbie komplikacji wyskakuje błędy:
PCint.h:3:50: error: 'PCMSK1' was not declared in this scope
PCint.h:3:59: error: 'PCMSK2' was not declared in this scope
Arduino Leonardo, IDE 1.6.12. Mógłbyś sprawdzić czy u Ciebie na tym IDE działa lub podać IDE na którym pracowałeś w czasie wgrywania modułu?
U mnie to samo
@Wojtek Wantuła
Poradziłem sobie z problemem wywalając wszelkie możliwe IDE (zainstalowane lub po prostu pobrane i zainstalowane), a także wywalając wszystkie foldery z Dokumentów (jeden jest w Dokumentach, a drugi chyba w AppData). Zrezygnowany ostatnim strzałem jeszcze raz pobrałem 1.6.12 i tym razem zadziałało. Ale jeszcze lepiej działa 1.6.8.
Dopiero po zainstalowaniu IDE 1.6.8. zaczęło ładnie kompilować ;) Coś czuję że jeszcze się z tym pomęczę. Dzięki za poradę @sunrrrise :D
Hej, wgrałem najnowsze IDE, wyczyściłem foldery i za każdym razem mam ten sam błąd - podpowiedzcie jak się tego pozbyć ...
Starsze IDE i jedynie modlić się żeby w końcu ktoś to naprawił ;) Na 1.6.8. Śmigało, jedynie lcd pokazywało tylko jeden znak.
Czy przypadkiem w Leonardo Piny Sda i Scl to nie piny D2 i D3 ??
Dzięki za świetny filmik. Jak zwykle - kawa na ławę :-) Chytre z tym podłączeniem LCD przez ekspander. Ma ktoś pomysł jak podłączyć w ten sposób wyświetlacz od Nokii 5110?
i jak tu lcd podłączyć z konwerterem I2C jeżeli będzie sda i scl zajęte :(
na początki z arduino może z "daleka" od takich układów będe się trzymać :]
Czy w tym układzie można wpisywać na porty jak w admega328 czy się nie da ?
Zastanawiam się czy nie kupić takiego ekspandera. Brakuje mi pinów cyfrowych powoli w moim projekcie. Używam też wyświetlacza LCD przez magistralę I2C, rozumiem, że w takim razie ten ekspander odpada? Czy mogę go dołożyć do projektu pod piny A4 i A5? (UNO)
możesz podpiąc normalnie expander tylko adres musi mieć inny niż przejściówka I2C wyświetlacza
Ariel Wonitowy Dzięki, o to mi chodziło :)
Witam mam problem , ekran wyświetla tylko pierwszą literę co robić ?
Mam ten sam problem.
Już wszystko działa, trzeba zainstalować arduino ze strony .org, wcześniej miałem z .cc i ze wszystkim były problemy, teraz mam wersję 1.7.10 i jest OK. :)
Wielkie dzięki, miałem ten sam problem :)
Jak dobrać expander do Arduino MICRO LEONARDO ATmega32U4 ?
Piny 4-7 w ogóle mi nie działają. Możliwa przyczyna?
Zmiłuj się i przestań kaleczyć język tym "po lewo" czy "po prawo". Jest to błędna konstrukcja powstała jako efekt skrzyżowania dwóch poprawnych wyrażeń: na lewo oraz po lewej stronie. Warto zapamiętać, że krzyżowanie tych (i innych) stałych związków wyrazowych to rażący błąd językowy.
Krzysiu zmiłuj się i przestań się przypierdalać. Masz ochotę na poprawną polszczyznę to oglądaj profesora Miodka. Tutaj jest ważna treść elektroniczna a nie ą ę . Jest to błędna konstrukcja myślowa powstała jako efekt skrzyżowania dwóch słów cukierek i papierek nas interesuje cukierek a Ciebie papierek.
Warto Krzysztofie zapamiętać że po studiach polonistyki możesz dobrze robić frytki w mc donald -ie i rażąco zaniedbując swoje obowiązki solić chujom dwa razy więcej niech ich suszy jak nie potrafią zapamiętać na lewo na prawo.
Wujek Samo Zło zgadzam się wujku.
Co Wam przeszkadza kulturalne zwrócenie uwagi? Równa się w górę, nie w dół. Zaskakujące, że oglądający takie filmiki są tak mało ambitni, pewnie stąd się wziął stereotyp o aspołecznym informatyku- niektórzy (prosperujący do tego miana przynajmniej) tak są zapatrzeni w prostą dość wiedzę ze swojego zakresu, że najchętniej by chrząkali porozumiewając się.
Nie ma nic zabawniejszego od sepleniącego elektronika. Ograniczajcie się jak chcecie/nie umiecie inaczej, ale nie zmuszajcie do tego ElektroPrzewodnika. Póki rozumiecie coś ponad beknięcia- nie każcie innym trzymać się każdego błędu, który popełnia. Rozwijamy się! Niektórzy nawet wszechstronnie, a nie tropem osła z omyłkowo nałożonymi klapkami na oczy.
Witam -to środowisko IDE jest jakieś masakryczne i nie kompatybilne z ver nowszymi i wstecz IDE. np. mam IDE 1.6.13 i wgarną bibliotekę PCF8574 z linku i mam błąd.
Arduino:1.6.13 (Windows 7), Płytka:"Arduino Leonardo"
C:\Users\Adam\Documents\Arduino\libraries\PCF8574\examples\ButtonBlink\ButtonBlink.ino: In function 'void ISRdemo()':
ButtonBlink:53: error: no matching function for call to 'PCF8574::toggle()'
expander.toggle();
^
C:\Users\Adam\Documents\Arduino\libraries\PCF8574\examples\ButtonBlink\ButtonBlink.ino:53:19: note: candidate is:
In file included from C:\Users\Adam\Documents\Arduino\libraries\PCF8574\examples\ButtonBlink\ButtonBlink.ino:13:0:
C:\Users\Adam\Documents\Arduino\libraries\PCF8574/PCF8574.h:118:7: note: void PCF8574::toggle(uint8_t)
void toggle(uint8_t pin);
^
C:\Users\Adam\Documents\Arduino\libraries\PCF8574/PCF8574.h:118:7: note: candidate expects 1 argument, 0 provided
exit status 1
no matching function for call to 'PCF8574::toggle()'
Ten raport powinien zawierać więcej informacji jeśli w
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"
Świetny filmik i na prawdę rozjaśnia wiele wątpliwości. Robię projekt, w którym wykorzystuję pięć expanderów i staje się on już dość rozbudowany. Żeby był on bardziej przejrzysty chciałem zadeklarować nazwy dla poszczególnych pinów w expanderze jednak nie wiem jak to zrobić. Arduino nie przyjmuje mi deklaracji typu
int S5 = expander(2);
Ma ktoś pomysł jak rozwiązać ten problem i czy jest to w ogóle możliwe?
w jaki sposób definiować piny expandera?
#define jakasnazwa pinexpandera(jaka komenda)
dzień dobry
mam płytkę arduino nano która nie posiada pinów SDA i SCL
jak mam wpiąć ten ekspander
+mat m SDA to A4, SCL to A5 ;)
A z 3,3v będzie działać
narescie dobry kanal cos konkret , bo wiekszosc kanalow to padlina typu zycie na zmywaku w england albo zycie poludzia w usa Oby wiecej filmikow tu mozna czegos nauczyc
niech ktoś poda link do biblioteki proszę
A może coś na temat enc28j60? :D
34:20 nie wprowadzaj ludzi w błąd! linie I2C (TWI) powinny być podciągnięte do zasilania niemal w każdej nocie o tym piszą.
Zarówno SCL jak i SDA to linie typu "otwarty dren" to oznacza że zarówno master jak i slave wymuszają tylko stan niski.
Być może w arduino są już rezystory podciągające ale mówienie że nie trzeba ich stosować to bełkot i wprowadzanie ludzi w błąd.
Ale to dawno było :P
UWAGA W podłączeniu LCD jest błąd zamienione + z masą
ja podlaczylem tak samo i działa
Spoko xD :)
Nie chce działać mi pullDown może ktoś wie dlaczego?
Cześć,
B fajny odcinek ale.... mi nie działa :D
A mianowicie wyswietla tylko 1 znak np (H z Hello World!) ktos mialby jakies zlote rady ??
z gory dzieki!!
Wtedy wiemy mniej więcej, dokładnie hahaha (y)
To machanie ręką jest bardzo denerwujące.
Dziękuję