macizet Napisano Kwiecień 15, 2019 Udostępnij Napisano Kwiecień 15, 2019 (edytowany) Cześć, może komuś by się chciało napisać coś na temat pisania bibliotek do Arduino? Temat nie poruszany a potrzebny. Baaaaaardzo potrzebny 😁 Edytowano Kwiecień 15, 2019 przez macizet 2 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Kwiecień 15, 2019 Udostępnij Kwiecień 15, 2019 @macizet dzięki za sugestię, a co właściwie dokładnie Cie interesuje? Z czym dokładnie masz tam problemy? Prawidłowe pisanie bibliotek w przemyślany sposób nie jest wcale takim łatwym zadaniem. Poznanie samej metodologii nie wystarcza, przydaje się tez ogólne doświadczenie programistyczne, aby stworzona biblioteka nie "psuła" całej reszty programu 😉 Cytuj Link do komentarza Share on other sites More sharing options...
macizet Kwiecień 15, 2019 Autor tematu Udostępnij Kwiecień 15, 2019 Chodzi konkretnie o pisanie prostej biblioteki np. zablyskaj dioda LED okreslona przez inicjalizacje ilosc, jaki czas blyskow. Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Kwiecień 15, 2019 Udostępnij Kwiecień 15, 2019 38 minut temu, macizet napisał: Chodzi konkretnie o pisanie prostej biblioteki np. zablyskaj dioda LED okreslona przez inicjalizacje ilosc, jaki czas blyskow. Cześć, jeśli znasz C++, to praktycznie powinieneś móc napisać własną bibliotekę do Arduino - jest to po prostu klasa w języku C++ (bez żadnych udziwnień w stosuknu do C++). Na oryginalnej stronie Arduino jest tutorial: https://www.arduino.cc/en/Hacking/libraryTutorial Niestety po łacinie 😉 Pozdrawiam Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
slon Kwiecień 15, 2019 Udostępnij Kwiecień 15, 2019 @macizet czy do czegoś takiego faktycznie trzeba bibliotekę pisać? int led = 13; unsigned long Start; unsigned long buttonTime=0; int Power=1; int onTime=150; int offTime=1500; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); } void loop() { Start = millis(); if (((Start-buttonTime)>=onTime) && (Power==1)) { digitalWrite(led, LOW); Power=0; } // tutaj pisz kod if (((Start-buttonTime)>=offTime) && (Power==0)) { digitalWrite(led, HIGH); Power=1; buttonTime=millis(); } } Cytuj Link do komentarza Share on other sites More sharing options...
Popularny post ethanak Kwiecień 15, 2019 Popularny post Udostępnij Kwiecień 15, 2019 @slon Rozumiem że Ty od razu glibca napisałeś 😉 Czym innym jest pisanie bibliotek użytkowych, a czym innym nauka pisania. 3 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Kwiecień 16, 2019 Udostępnij Kwiecień 16, 2019 Rozpoczęła się dyskusja, więc posty wydzieliłem z poniższego tematu: Przy okazji linki dla osób, które mogą być zainteresowanie pisaniem bibliotek na Arduino: https://www.arduino.cc/en/hacking/libraries https://www.arduino.cc/en/Hacking/libraryTutorial Cytuj Link do komentarza Share on other sites More sharing options...
slon Kwiecień 16, 2019 Udostępnij Kwiecień 16, 2019 W zasadzie to się zgadzam a nawet zgadzam się z tym , że sama biblioteka czy klasa mogła by być przydatna w tym wypadku. Przy jednej diodzie to niby nie jest tak oczywiste ale tak sobie pomyślałem co gdyby tych diod było więcej? Więc napisałem funkcję dla jednej diody i prawie kopie tej funkcji dla drugiej diody. Czyli dwie diody mają różne czasy pracy i niby fajnie ale jak by było ich jeszcze więcej? Klasa czy biblioteka na pewno dała by większą przejrzystość i elastyczność. Więc sam pomysł na taką bibliotekę jak i na naukę 🙂 jest całkiem trafny. 2 Cytuj Link do komentarza Share on other sites More sharing options...
slon Kwiecień 18, 2019 Udostępnij Kwiecień 18, 2019 Dla wszystkich, którzy chcą korzystać bez delay z migania/pikania i nie tylko a niewiedzą jak do tego się zabrać wklejam funkcję void loop() { start(13,1000,1000); start2(3,1,15); start3(10,250,500); } void start2(int led, int onTime, int offTime) { static int Power=1; static unsigned long buttonTime; unsigned long Start; Start = millis(); if (((Start-buttonTime)>=onTime) && (Power==1)) { digitalWrite(led, LOW); Power=0; } if (((Start-buttonTime)>=(offTime+=onTime)) && (Power==0)) { digitalWrite(led, HIGH); Power=1; buttonTime=millis(); } } Efekt działania taki jak niżej. Samo stosowanie funkcji jest bardzo proste start2(3,1,15); pierwsza cyfra to nr pinu do którego podpięta jest dioda, druga cyfra to czas na jaki dioda jest włączana tutaj 1ms i ostatnia cyfra to czas na jaki dioda gaśnie czyli 15ms. Na tej animacji tak tego nie widać ale w rzeczywistości dioda na pinie 3 świeci o wiele słabiej a więc można nawet sterować jasnością. Jak by ktoś chciał to można by nawet podmienić millis() na micros(). Pozostałe dwie diody widać jak świecą. Funkcji start() i start3() nie wklejałem bo ciało tych funkcji wygląda tak samo jak start2() a wiec jeśli chcecie mieć więcej takich funkcji to wystarczy zrobić kopiuj wklej i zmienić nazwę. Oczywiście w setup() trzeba zadeklarować piny jako OUTPUT bo bez tego diody będą świecić jak by chciały a nie mogły:). W planie była biblioteka ale cóż... może następnym razem. Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Kwiecień 19, 2019 Udostępnij Kwiecień 19, 2019 9 godzin temu, slon napisał: Funkcji start() i start3() nie wklejałem bo ciało tych funkcji wygląda tak samo jak start2() a wiec jeśli chcecie mieć więcej takich funkcji to wystarczy zrobić kopiuj wklej i zmienić nazwę To jest straszne, używanie kopiuj-wklej powinno być zakazane, a zakaz wpisany do konstytucji. Mam taśmę 144 led-ów, czyli powinienem tyle razy skopiować funkcję start... A może dałoby się ten kod poprawić i uniknąć kopiowania kodu? To takie małe zadanie domowe. Cytuj Link do komentarza Share on other sites More sharing options...
ArduPiotr Kwiecień 19, 2019 Udostępnij Kwiecień 19, 2019 Witam, pisanie bibliotek do arduino nie jest łatwe. Tu link do poradnika który mówi o tworzeniu bibliotek do arduino. https://www.alanzucconi.com/2016/05/11/libraries-for-arduino/ Pozdrawiam, powodzenia😀 Cytuj Link do komentarza Share on other sites More sharing options...
slon Kwiecień 19, 2019 Udostępnij Kwiecień 19, 2019 @Elvis dla 144 led-ów to nie było by straszne. To był by horror 🙂 . Funkcję napisałem z myślą dla jednej diody natomiast zastosowanie pokazałem na trzech. Jak napiszę to tego klasę to będzie led.start() , led.start1(), led.start2() i faktycznie kopiowanie będzie zbędne. @ArduPiotr dzięki za doping 🙂. Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Kwiecień 19, 2019 Udostępnij Kwiecień 19, 2019 30 minut temu, slon napisał: @Elvis dla 144 led-ów to nie było by straszne. To był by horror 🙂 . Funkcję napisałem z myślą dla jednej diody natomiast zastosowanie pokazałem na trzech. Jak napiszę to tego klasę to będzie led.start() , led.start1(), led.start2() i faktycznie kopiowanie będzie zbędne. @ArduPiotr dzięki za doping 🙂. Cześć, to raczej powinno wyglądać tak, że do metody led.start(int NrDiody, ...) przekazujesz parametr numer diody (oprócz reszty parametrów) i tak modyfikujesz kod tej funkcji, aby to działało poprawnie. Pozdrawiam Cytuj Link do komentarza Share on other sites More sharing options...
slon Kwiecień 19, 2019 Udostępnij Kwiecień 19, 2019 (edytowany) @FlyingDutch tak miałem to na myśli a inaczej zapisałem. Generalnie zamysł jet taki Obiekt jako led oraz medota start();. Czyli led1.start(); led2.start(); led3.start(); lub tablica obiektów. Czy taki sposób będzie poprawny? Edytowano Kwiecień 19, 2019 przez slon 1 Cytuj Link do komentarza Share on other sites More sharing options...
Popularny post Elvis Kwiecień 19, 2019 Popularny post Udostępnij Kwiecień 19, 2019 I tutaj dochodzimy do tego czym różnią się biblioteki od zwykłych progamów. Każdy sposób będzie poprawny - jeśli jako kryterium przyjmiemy po prostu działanie programu, to ten z 144x kopiuj-wklej też. Ale niektóre sposoby są lepsze, niż inne. W przypadku małego, krótkiego programu wybór sposobu implementacji często nie ma znaczenia. Natomiast w przypadku biblioteki podjęte decyzje mogą mieć długofalowe konsekwencje - jak chodziażby interfejs funkcji printf, który od początku był zły, ale teraz jego zmiana jest właściwie niemożliwa. 3 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!