Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] Jak wyłączyć migającą diodę w Arduino

falekw 04 Aug 2019 16:26 2007 9
  • #1
    falekw
    Level 10  
    Witam, jakiś czas temu rozpocząłem zabawę z Arduino, więc jestem początkujący w tym temacie. Zaopatrzyłem się z płytkę Arduino Uno uruchomiłem środowisko Arduino IDE, podłączyłem płytkę i wgrałem przykładowy program czyli migająca dioda.
    I teraz moje pytanie: co mam zrobić (jak wyłączyć) tą migającą na płytce diodę? Jak usunąć w pamięci ten program? Czytałem na jakimś forum, że trzeba wyczyścić pamięć EEPROM Arduino poprzez polecenie Plik->Przykłady->EEPROM->eeprom_clear. Ale czy w ten sposób nie usunę też bootloadera? Czy są jakieś inne sposoby wyłączenia tej migającej diody (usunięcie programu). Chciałbym spróbować wgrać jeszcze jakieś inne proste przykłady i wiem że pamięć w Arduino ma jakąś ograniczoną wielkość.
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Helpful post
    #2
    Wilktor
    Level 26  
    Wgraj pusty program
  • #4
    falekw
    Level 10  
    OK, mam rozumieć że wgrywając jakiś kolejny program, to ten program poprzedni z mrugającą diodą zostanie nadpisany. Czy będą dwa programy ten z mrugającą diodą i ten kolejny?
  • #5
    khoam
    Level 41  
    falekw wrote:
    OK, mam rozumieć że wgrywając jakiś kolejny program, to ten program poprzedni z mrugającą diodą zostanie nadpisany.

    Tak, zostanie nadpisany, a dioda przestanie migać, jeżeli nowy program nie będzie miał takiej funkcji.
  • #6
    emarcus
    Level 38  
    falekw wrote:
    Witam, jakiś czas temu rozpocząłem zabawę z Arduino, więc jestem początkujący w tym temacie.

    Zaopatrzyłem się z płytkę Arduino Uno uruchomiłem środowisko Arduino IDE, podłączyłem płytkę i wgrałem przykładowy program czyli migająca dioda.
    I teraz moje pytanie: co mam zrobić (jak wyłączyć) tą migającą na płytce diodę? Jak usunąć w pamięci ten program? Czytałem na jakimś forum, że trzeba wyczyścić pamięć EEPROM Arduino poprzez polecenie Plik->Przykłady->EEPROM->eeprom_clear. Ale czy w ten sposób nie usunę też bootloadera? Czy są jakieś inne sposoby wyłączenia tej migającej diody (usunięcie programu). Chciałbym spróbować wgrać jeszcze jakieś inne proste przykłady i wiem że pamięć w Arduino ma jakąś ograniczoną wielkość.


    Początkujacym byłeś 'jakiś czas temu' , teraz już masz pewne doświadczenie, więc juz nie jesteś poczatkujący.

    ...Jakiś czas temu byłem młody i ...... - juz nie jestem mimo że...

    Biorąc się za programowanie, musisz przestawic swoje myślenie na bardziej logiczne..
    Nowa/ zakupiona płytka arduino ma fabrycznie wpisany testowy program; - właśnie z migającą diodą.
    Czy masz pewnośc że dioda miga w/g twojego programu, czy też programowanie 'nie powiodło się' i dioda mruga starym/oryginalnym programem.

    <ciach>

    e marcus

    Moderated By dondu:

    Raportowaną część postu usunąłem.
    3.1.11. Nie wysyłaj wiadomości, które nic nie wnoszą do dyskusji.

  • #7
    kaczakat
    Level 33  
    Zacznij od "przerobienia" jakiegoś kursu Arduino, pytanie o takie rzeczy na forum to niepoważne podejście do tematu. Indywidualne posty zakłada się wtedy, gdy napotkasz sytuację, która nie jest wyświetlana choćby na pierwszej stronie wyszukiwarki GOOGLE. W świecie uC raczej nic nie znajdziesz łatwiejszego na start niż Arduino, ale nawet tu wymagane jest jakieś zaangażowanie i zapoznanie się z podstawami. Wpisz w Google "kurs Arduino", na pewno jest przynajmniej jeden obszerny po polsku, linku Ci nie wrzucam, ale jak nie jesteś botem to na pewno zauważysz.
  • #8
    mark77
    Level 2  
    Przepraszam ,ze może nie w temacie ale mam problem jedna funkcja blokuje mi drugą.
    Już tłumaczę, mam dwa przyciski i dwie diody led gdy nacisnę jeden przycisk led świeci mi 10s i w tym czasie chcę oświecić drugą drugim przyciskiem.

    if (digitalRead(11) == LOW) { //Jeśli przycisk wciśnięty
    digitalWrite(4, HIGH); //Włącz PK
    delay(10000); //Czekamy
    digitalWrite(4, LOW); //Wyłączamy PK
    delay(1000); //Czekamy
    }

    if (digitalRead(12) == LOW) { //Jeśli przycisk wciśnięty
    digitalWrite(3, HIGH); //Włącz PK
    delay(100); //czekamy
    digitalWrite(3, LOW); //Wyłączamy PK
    delay(300); //czekamy
    digitalWrite(3, HIGH); //Włącz PK
    delay(100); //czekamy
    digitalWrite(3, LOW); //Wyłączamy PK
    delay(3000); //Czekamy
    }
  • #9
    emarcus
    Level 38  
    mark77 wrote:
    Przepraszam ,ze może nie w temacie ale mam problem jedna funkcja blokuje mi drugą.


    Nie ma za co przepraszać...
    Pytanie jest absolutnie sensowne..
    Robisz ten sam błąd, co większość początkujących i niecierpliwych programistów w środowisku Arduino.
    1. Funkcja ?delay?, jak doświadczyłeś blokuje (zatrzymuje program w tym miejscu na określony w niej czas () wyrażony w milisekundach. Mimo, że te interwały milisekundowe są odmierzane Timerem 0, to jednak ich zliczanie w tej funkcji ?delay() jest wykonywane przez procesor, a że ten jest jednowątkowy, to na ten czas nawet nie ?widzi?, że naciskasz jakiś przycisk - zwyczajnie wykonuje wcześniej zadane liczenie milisekund, czyli program ?stoi?. - To taka skrócona wersja....
    2. Wspomniany wyżej Timer0 w Arduino jest automatycznie podczas kompilacji skonfigurowany nie tylko do odmierzania tych milisekund, ale wbudowana ta sama funkcja ?millis()? tworzy swoisty dla Arduino zegar naliczający te milisekundy do czterobajtowej zmiennej o tej samej nazwie, od momentu Power-up albo Reset.
    Możesz korzystać z tego zegara w podobnym stylu, jak posługujesz się zwykłym zegarem ściennym. Obliczasz różnicę wskazań pomiędzy zdarzeniami.
    Zainteresuj się tym zagadnieniem wykorzystanym w przykładzie :
    Examples >02.Digital > BlinkWithout Delay.

    W każdym przewinięciu pętli 'loop' sprawdzasz, czy ten czas już upłynął, a w międzyczasie wykonujesz inne zaplanowane zadania.
    Rezultat może by obarczony błędem przedziału czasu wykonywania jednego obrotu pętli loop (pomiędzy sprawdzaniem upływu czasu).
    Doczytaj szczegóły, bo mi się papier kończy...

    To powinno rozwiązać twoją kwestię.

    e marcus
  • #10
    falekw
    Level 10  
    Zamykam temat, problem rozwiązany przez wgranie nowego programu. Pozdrawiam i dziękuję wszystkim z pomoc.