Skocz do zawartości

encelados

Użytkownicy
  • Zawartość

    26
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

Wszystko napisane przez encelados

  1. Witam. Do wszystkich miłośników paska menu z poleceniami tekstowymi (Command texts) po prawej stronie okna Eagle: Moja wersja Eagle'a to 6.5.0. Kolega "Nawyk" zaproponował rozwiązanie: Niestety, u mnie zaproponowane rozwiązanie powoduje błędy przy otwieraniu pliku ze schematem. Aby działało to bezbłędnie - odpowiedni fragment wpisu w pliku "eagle.scr" powinien wyglądać tak: SCH: Grid Default On; Change Width 0.006; MENU 'Add' 'Change' 'Copy' 'Delete' 'Display' 'Edit' 'Grid' 'Group' 'Move' 'Name' 'Net' 'Quit' 'Rect' 'Route' 'Script' 'Show' 'Signal' 'Split' 'Text' 'Value' 'Via' 'W
  2. Sorry za kłopot. Oczywiście spróbuję sam. Komunikat pewnie się pojawi. O ile nastąpi sukces. Na film raczej nie ma co liczyć. Nie dlatego, że nie chcę. Tylko dlatego, że nie mam kamery. Ani nawet... smartfona. A mój cyfrowy aparat foto (kompletnie "przedpotopowy") oraz aparat foto w moim telefonie komórkowym (też kompletnie "przedpotopowym" :->) robią fotki w takiej jakości, że kilka dni później - sam muszę się domyślać co to takiego "sfotografowałem" W każdym razie, niezależnie od mojego sukcesu lub porażki - wciąż pozostaje "druga alternatywa": dorobienie funkcji umożliwiając
  3. A czy mógłbyś zamieścić przykładowy kod "żarówkowy" dla zwykłej jednokolorowej diody LED (może być tylko jedna)? W takim przypadku jasnością diody będziemy sterować chyba zmieniając wypełnienie sygnału PWM...
  4. Dziękuję bardzo za wyczerpujące rozwinięcie tematu Co wybrać na jutro? Trudny wybór, bo ciekawi mnie i jedno i drugie. To może tak: najpierw popracujmy nad udawaniem na LEDach powolnych żarówek. A potem (pojutrze?) zajmiemy się dorobieniem funkcji umożliwiającej kontrolę diodek przez port szeregowy (ustawianie kolorów, jasności, mrugania itp) poprzez wpisywanie ciekawszych komend klawiaturowych zamiast trywialnych N i P Ciekawi mnie też czy gdybym zechciał wyjść z "piaskownicy" Arduino (oraz Arduino IDE) i zaprogramować jakiegoś AVR-ka (np. ATmegę 328P) pisząc program w C w np. At
  5. Witam ponownie - znowu upłynął ponad tydzień? Na wstępie chcę podziękować koledze z forum o nicku szrek2003 za podpowiedź będącą innym spojrzeniem (oszczędzającym) na to, co chcę osiągnąć w moim "projekcie". Przepraszam też, za mój głupawy i egoistyczny komentarz dotyczący nielogiczności zasięgu lokalnych zmiennych statycznych. Sądząc po długości Twojego ostatniego wpisu - to chyba teraz Ty się zirytowałeś. I słusznie, bo: programy pisane dla mikrokontrolerów AVR (a także dla innych mikrokontrolerów) potrafią na pewno realizować dużo więcej celów, niż ten mój problem. Ale dało mi to do my
  6. A wydawało mi się, że to rozumiem W swoim przykładzie pod tytułem: "żeby jeszcze bardziej zakręcić" - pokazujesz zmienne lokalne różnych (2 ?) typów o takich samych nazwach. Ale w obrębie jednej funkcji. Czy żeby to rozumieć prawidłowo, mam myśleć że zmiennna typu static o nazwie licznik zadeklarowana w funkcji akuku() i pozostawiona w pamięci mikrokontrolera po zakończeniu działania tej funkcji - nie zostanie "nadpisana" (pomylona?) ze zmienną typu static o takiej samej nazwie licznik zadeklarowanej w innej funkcji o nazwie np. kukuryku()? Jeśli tak, to jest to faktycznie lekko... niel
  7. Nie mam dość. A wręcz odwrotnie: czuję niedosyt Wcześniej napisałeś: Chyba wiem dlaczego działa, chociaż niby nie powinno: początek funkcji glowny_fsm()? // Zmienna statyczna - to przypisanie wykona się tylko raz, // na początku programu. static uint8_t sygnal_state = S1; Wracając do Twojego ostatniego postu: niestety, wciąż jeszcze musimy podchodzić do sprawy w sposób tylko "Arduinowy". Próbowałem, zgodnie z Twoimi wcześniejszymi sugestiami, zmienić kod tak, żeby używając tylko jednej funkcji wykryj_klik() i tylko jednej funkcji sito() odkłócać oraz wykrywać wciśnięcie dwóch przyciskó
  8. Dziękuję za cenne uwagi i porady. Zastosuję się. Fotek... nie będzie. Przynajmniej na tę chwilę. Bo moja "próba zbudowania w domu modelu (...)" - oznaczała na razie tylko złożenie prototypu układu na płytce stykowej i napisaniu kodu EDIT: Napisałeś No jasne. Przecież to było wyjaśnione już w filmie Barei pod tytułem "Miś":"Nie mieszajmy myślowo dwóch różnych systemów walutowych. Nie bądźmy peweksami." EDIT 2: W nawiązaniu do tego, że "Fotek... nie będzie (...)". Bo to na razie tylko 7 LED-ów i 1 przycisk, wpięte w płytkę stykową: Ten mój model semafora - w zamyśle miał być tak
  9. 1. To nie będzie makieta do kolejki H0. Więc skala jest... nieistotna. 2. No właśnie nie. Będą to same diodki (LED) plus sygnalizacja na LCD (początkowo Monitor Portu Szeregowego). Ale nie "kilka przycisków" - tylko... jeden przycisk. Po jego wciśnięciu wyświetlane przez LED-ki sygnały (oraz ich opisy na LCD lub w Monitorze Portu Szeregowego) będą się zmieniały "sekwencyjnie" - czyli po kolei, z jednego na drugi. 3. Nie mam pojęcia. Jakie powinny być opóźniena (w ms) zapalania i gaszenia LED aby to wyglądało na tradycyjną żarówkę? Próba zbudowania "w domu modelu pół-automatycznego
  10. To już tylko krótkie wyjaśnienie. Rzeczywiście brzmi to trochę jak nazwa jakiegoś Uzi. Jednak komora - to w tym przypadku (zupełnie nie nabojowa) oprawa świetlna. A pół-samoczynny - bo sygnał zezwalający na przejazd pociągu włącza dyżurny ruchu z nastawni, a gdy pociąg minie semafor - to semafor samoczynnie przełącza się na sygnał S1 ("Stój"). W odróżnieniu od semaforów samoczynnych SBL (Samoczynna Blokada Liniowa), w której przy torach są czujniki "masy" i semafor wykrywając nadjeżdżający pociąg - sam wyświetla mu odpowiedni sygnał w zależności od "zajętości" torów na kolejnych dwóch
  11. To nie tak. Rzadko kiedy się denerwuję. Ze mnie jest taki "niespotykanie spokojny człowiek". Raczej nigdy nie denerwuję się gdy mi coś nie wychodzi. A jeśli już taki "wyjątkowy wyjątek" się zdarzy, to denerwuję się tylko na siebie. Więc: 1. Po "pierwsze primo" - nie przepraszaj. Bo nie masz za co. 2. Po "drugie primo" - to ja przepraszam. I Ciebie i pozostałych kolegów z tego Forum. Przepraszam za moje czasami zbyt "impulsywne" wpisy, spowodowane moją niecierpliwością. To prawda, że w "przerwach" mogłem zajrzeć do podręcznika (którego nie mam) lub odpytać "wujka Google"i uzupełnić swoj
  12. Po kolei: Tu zacznę, sorki za wyrażenie, "od tyłu". 1. Moja funkcja będzie działała pod warunkiem, że dostaje wartości 0 lub 1. Przepraszam za (może głupie) pytanie - ale co innego ta moja funkcja może dostać? Co innego oprócz 0 lub 1 może dostać, jeśli wywoływana w niej funkcja sito() może zwrócić tylko 0 lub 1? 2. "Nie projektujemy tu rakiet" - no, to wiadomo "A operatory logiczne opanujesz po pierwszym przeczytaniu i użyciu. Dobra, biegłość - po dziesiątym." -----------------------I TU WAŻNA UWAGA ---------------------------------------------------------- Chyba się nie rozu
  13. No tak. Czasem najciemniej bywa pod latarnią... "Dobrych stron" jest więcej: teraz już wiem jak bardzo łatwo zgubić z oczu główny cel, kiedy zacznie się przyglądać rzeczom z pozoru ważnym, a ostatecznie zupełnie nieistotnym. Proste rzeczy "programuję" i analizuję "w głowie". Bardziej złożone (czyli z cyklu: "to się w głowie nie mieści...") - na papierze. "Na sprzęcie" zwykle testuję dopiero to, co uważam za "zakończony" szkic programu. Teraz - w razie potrzeby - będę tak sprawdzał także pojedyncze funkcje programu (szkicu). Widzę też, że wybierając dział do zadania pytania - zbyt optymi
  14. Jeszcze jedna próba Zakładając, że drgania styków objawiają się tylko i wyłącznie "naprzemiennym ciągiem jedynek i zer" - tzn. nie jest możliwa sytuacja, że uda się złapać po kolei dwa (lub więcej) zera albo dwie (lub więcej) jedynki - to odkłócanie "niesfornego przycisku" powinna załatwić funkcja w takiej postaci: #define pinPrzycisku 2 int sito() { const int czekaj = 5; static int zlicz, poprzedni, stabilny; int odczyt = digitalRead(pinPrzycisku); if (odczyt != poprzedni) { ++zlicz; if (zlicz < czekaj) { return stabilny; } if
  15. No fakt. Umknęło mi to. Jeśli wywołam funkcję gdy zlicz będzie miał wartość z zakresu od 0 do 4, to aktualny będzie zawsze 0. Jeśli stabilny będzie "pamiętał" też 0, to nic złego się nie stanie: zwrócę z funkcji ten sam stabilny. Ale jeśli stabilny będzie "pamiętał" 1, to zmienię i zwrócę z funkcji nową wartość zmiennej stabilny bez... sprawdzenia stanu przycisku. Teraz powinno być dobrze: #define pinPrzycisku 2 int sito() { const int czekaj = 5; static int zlicz, stabilny; int aktualny = digitalRead(pinPrzycisku); if (aktualny != stabilny) { if (++zlicz == czekaj)
  16. OK. No to funkcja odkłócająca "niesforny przycisk: #define pinPrzycisku 2 int sito() { const int czasSprawdzic = 5; static int zlicz, stabilny; int aktualny; if (++zlicz == czasSprawdzic) { aktualny = digitalRead(pinPrzycisku); } if (aktualny != stabilny) { stabilny = aktualny; zlicz = 0; return stabilny; } else { zlicz = 0; return stabilny; } }
  17. Dzięki za przykłady kodu. Sporo pokazują i wyjaśniają. Jednak wciąż nie rozumiem, dlaczego zmienna, która ma przechowywać wartości np. od 0 do 2 (ogólnie: mniej niż od 0 do 255) ma deklarowany typ int zamiast byte. Podobnie jak funkcja zwracająca jakąś wartość (wartość jakiejś zmiennej) - choćby ta funkcja mogła zwrócić tylko 0 lub 1 - to dlaczego ma to być funkcja z deklaracją typu int zamiast byte? Ten typ int to tylko taki "trynd" - czy jakaś formalna konieczność? Że niby byte jest do innych celów, czy jak? Chyba mam marne IQ i źle wybieram kursy www i książki. Bo tej pory nie udało
  18. Funkcja zmodyfikowana z parametrem led_mode. Parametr funkcji jest typu byte bo ma zakres od 0 do 2. W porównaniu do typu int - oszczędzam jeden bajt na rozmiarze zmiennej. Czy taki typ parametru jest prawidłowy? void migaj(byte led_mode) { static int licznik; // Kreska na ścianie if (led_mode == 0) // Gasimy LED { digitalWrite(13, LOW); licznik = 0; } if (led_mode == 1) // Zapalamy LED { digitalWrite(13, HIGH); licznik = 0; } if (led_mode == 2) // Mrugamy LED { licznik++; switch(licznik)
  19. Ta funkcja wywoływana co 10ms mogłaby wyglądać tak: void migaj() { static int licznik; // Kreska na ścianie licznik++; if (licznik == 1) { digitalWrite(13, HIGH); // Zapalamy latarnię } if (licznik == 10) // Minęło 100ms { digitalWrite(13, LOW); //Gasimy latarnię } if (licznik == 100) // Minęło kolejne 900 ms { licznik = 0; // Powtarzamy wszystko } }
  20. Nie jestem pewien czy dobrze zrozumiałem ten przykład. Domyślam się, że mrugaj - to jak ten samolot... Ale w sumie to nieistotne. Bo radaru też nie mam 1. Nie mam zegarka i też mam to gdzieś. Bo to posłaniec jest moim zegarkiem (a właściwie jego cykliczne wizyty). 2. Rozumiem, że to ów posłaniec zawsze przyniesie mi odpowiednie polecenie. Bo gdyby było inaczej - mówił by mi tylko jestem, już czas, a ja musiałbym liczyć jego wizyty i odpowiednio ustawić wajchę. 3. Nie widzę latarni i tego czy świeci czy nie - ale mam na ścianie wajchę w ustawieniu z poprzedniej wizyty posłańca. Więc
  21. Dziękuję za opinię. W programowaniu mikrokontrolerów jestem początkujący. Zdawałem sobie sprawę, że mój szkic jest niedoskonały Być może niepotrzebnie zafiksowałem się na świeceniu czy miganiu LED-ami z funkcji - chodziło mi oto, żeby po każdym wciśnięciu przycisku nie przepisywać fragmentu kodu ze zmienionymi numerami pinów, tylko taki fragment zapisać jako funkcję i potem tylko go wywoływać. Funkcja migania czy ta z "delay" czy ta bez - umieszczona jest w głównej pętli "loop", która jest cyklicznie powtarzana. Dlatego dioda miga. Jeśli kod migania umieszczę w innym miejscu (np. w funkc
  22. Trochę czasu mi to zajęło (naprawdę tydzień?) "Wieści z pola bitwy" są następujące: Układ: - do pinów cyfrowych (8 i 7) mam podpięte LED-y (jako OUTPUT): pin 8 LED zielona, pin 7 LED żółta; - do pinu cyfrowego 10 mam podpięty tactswitch, zwierający ten pin z masą. Tym razem bez zewnętrznego pullup-u. Wykorzystałem wewnętrzny rezystor podciągający (wejście jako: INPUT_PULLUP). Do odczytywania stanu przycisku i redukcji drgań styków użyłem biblioteki "Bounce" opisanej w książce Simona Monka "Arduino dla początkujących - Podstawy i szkice". Szkice opisane w książce oraz wspomnianą b
  23. Tak, rozumiem już w czym tkwił błąd. Dziękuję za podpowiedź
  24. Witam. Długo szukałem na forum rozwiązania mojego problemu przy pomocy "szukajki" i... nie znalazłem. Dlatego ośmielam się zapytać. Pewnie mój problem wyda się Wam śmieszny, jednak proszę o pomoc. Problem jest taki: - do pinów cyfrowych (8 i 7) mam podpięte LED-y (jako OUTPUT), - do pinu cyfrowego 10 mam podpięty tactswitch, zwierający ten pin z masą, z zewnętrznym rezystorem podciągającym 10k i układem RC redukującym drgania styków. Przyciskiem (na pinie 10) chcę sekwencyjnie przełączać wyświetlanie czterech sygnałów: 1. Dioda zielona (pin 8) świeci światłem ciągłym. 2. Dioda żółta
  25. Grecka litera µ jest wbrew pozorom bardzo łatwa do wpisania na komputerze! Wystarczy wcisnąć lewy ALT i trzymając go cały czas wciśnięty - na klawiaturze numerycznej wpisać 0181. Czyli ALT+0181. Nie wierzycie? To spróbujcie... [ Dodano: 07-02-2016, 18:11 ] "Przykład praktyczny" (użycia kondensatora): pamiętam z młodych lat, jak w rowerach z PRL-u do tzw. "dynama" podłączaliśmy kondensator o odpowiednio dużej pojemności (nie pamiętam już dziś wartości). Efekt? Po zatrzymaniu roweru (a więc i prądnicy - "dynama") światła (lampy) roweru świeciły jeszcze przez długi czas...
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.