Skocz do zawartości

slon

Użytkownicy
  • Zawartość

    64
  • Rejestracja

  • Ostatnio

Reputacja

40 Bardzo dobra

O slon

  • Ranga
    4/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. slon

    Jak pisać biblioteki na Arduino?

    Sterowania przyciskami nie sprawdzałem. Natomiast sprawdziłem jak wygląda sterowanie jasnością z użyciem micros() na pinie 4. Dioda płynnie się rozjaśnia (kwestia doboru wartości).
  2. Podałem źródło do książki bo nie wiedziałem, że to jest na forum.
  3. ja tak tylko wtrącę jeśli ktoś był by ciekawy jak wygląda main() w arduino int main(void) { init(); initVariant(); #ifdefine(USBCON) USBDevice.attach(); #endif setup(); for(;;) { loop(); if (serialEventRun) serialEventRun(); } return 0; } Źródło: arduino a technical reference (strona 170). Całość zaczyna się od strony 168 i można sobie to podejrzeć w bezpłatnej próbce na google play.
  4. slon

    Problem z komunikacją APP Inventor 2 i HC-05

    Nawet tak się składa , że w arduino mega na pinach , 15 i 14 jest HS Bluetooth.begin(9600); // hardware serial for Bluetooth więc aby ten komentarz był prawdziwy to raczej trzeba by to było zapisać Serail3.begin(9600);
  5. slon

    Zasilanie Arduino nano

    Ja ze swojej strony podsuną bym ci taką alternatywę: zamiast 3xAA 4xAAA (te 4 małe paluszki będą niewiele większe od jednego AA a więc zaoszczędzisz sporo miejsca) czyli >6V na starcie do tego ta przetwornica (step-up step-down ) dzięki, której na wyjściu otrzymasz 5V w zakresie od 2 do 16V a wiec i tak o wiele większy zakres niż potrzebujesz. Podpinasz pod +5V arduino i to tyle a co do logiki 3,3V to zawsze można użyć konwertera poziomów logicznych.
  6. slon

    Jak pisać biblioteki na Arduino?

    Wracając do metronomu to zainteresowały mnie dwa założenia wpasowałem to do funkcji, którą zamieściłem na pierwszej stronie potencjometr=analogRead(A1); potencjometr=map(potencjometr,0,1023,30,250); BPM=60000/potencjometr/2; start(7,BPM,BPM); działa całkiem fajnie chociaż osobiście chyba bym wolał regulację BPM przyciskami "góra" , "dół".
  7. slon

    Jak pisać biblioteki na Arduino?

    Moją intencją nie było rozpisywanie pliku BlinkingLed.cpp czy , którejkolwiek z tych metod. Natomiast sam plik nagłówkowy BlinkingLed.h to w zasadzie mógł by wyglądać tak: #ifndef BlinkingLed_h #define BlinkingLed_h #include "Arduino.h" class BlinkingLed { private: int _pin; int _onTime; int _offTime; int _autostart; public: BlinkingLed(int pin); BlinkingLed(int pin, int OnTime, int OffTime, int autostart = 0); void setOnTime(int); void setOffTime(int); int getOnTime(void); int getOffTime(void); void start(void); void stop(void); void run(void); }; #endif oczywiście , żeby to mogło działać to trzeba by było obydwa te pliki (BlinkingLed.cpp oraz BlinkingLed.h) przenieść do folderu BlinkingLed i umieścić w folderze arduino Libraries (zakładając , że będziemy korzystać z arduino IDE) . Jeśli ktoś jest dalej zainteresowany tym tematem to zostaje do uzupełnienia plik BlinkingLed.cpp i rozpisanie poszczególnych metod. #include "Arduino.h" #include "BlinkingLed.h" BlinkingLed::BlinkingLed(int p) { }
  8. slon

    Jak pisać biblioteki na Arduino?

    Konstruktor przypisuje wartości początkowe do atrybutów BlinkingLed(int pin, int OnTime, int OffTime, int autostart = 0); czyli w tym wypadku do atrybutu _autostart domyślnie została by przypisana wartość zero. Tworząc nowy obiekt np: BlinkingLed led1(13,1000,1000); podaje wartości początkowe do pozostałych atrybutów. Metoda start(); sprawdza warunek np: start() { if (autostart==1) { // blink uruchomiony } else // czekamy } atrybut _autostart ma wartość 0 więc czekamy. Metoda run(); np: run() { autostar=1; } metoda stop(); stop() { autostart=0; } teraz gdybym chciał utworzyć kolejny obiekt BlinkingLed led2(3); tutaj zastosowałem pierwszy konstruktor BlinkingLed(int pin); czyli na tą chwilę miał bym dwie diody na na pinach 3 i 13 gotowe do uruchomienia np: led1.start(); led2.start(); led1.run(); led2.run(); czy to co napisałem jest poprawne zwłaszcza jeśli chodzi o zastosowanie konstruktora?
  9. slon

    Jak pisać biblioteki na Arduino?

    @ethanak dziękuje za dalsze podjęcie tematu oraz za podanie przykładowego interfejsu. Natomiast mam pytanie : czy dla podanej klasy BlinkingLed nie będę potrzebował definiować atrybutów? class BlinkingLed { private: int _pin int _onTime; int _offTime; int _autostart; public: BlinkingLed(int pin); BlinkingLed(int pin, int OnTime, int OffTime, int autostart = 0); void setOnTime(int); void setOffTime(int); int getOnTime(void); int getOffTime(void); void start(void); void stop(void); void run(void); };
  10. W arduino IDE masz dwa przykłady: Button oraz DigitalInputPullup obydwa pokazują i opisują (w komentarzu na początku skecza) to co już zostało wytłumaczone w wypowiedziach na forum tylko może w inny sposób.
  11. slon

    Jak pisać biblioteki na Arduino?

    @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?
  12. slon

    Jak pisać biblioteki na Arduino?

    @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 .
  13. slon

    Jak pisać biblioteki na Arduino?

    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.
  14. slon

    Jak sprawdzic czy dziala hc-sr04

    Tak z czystej ciekawości podpiołem hc-sr04 do arduino nano na płytce stykowej. Piny tak jak w kodzie czli trig 13 echo 12. Zasilanie czujnika z arduino 5V ,gnd czujnika do masy arduino. Kod z postu (ze zmianami, które zaproponowałem) działa ok. Najlepiej wklej foto jak to podłączyłeś. Nie napisałeś z jakiego arduino korzystasz bo to może być istotne. Natomiast co do ograniczeń to na pinie 13 jest dioda led co czasem ma pewne znaczenie.
  15. slon

    Jak pisać biblioteki na Arduino?

    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.
×