Skocz do zawartości

Kurs Arduino - #2 - podstawy programowania, porty I/O


Komentator

Pomocna odpowiedź

7 minut temu, RysiekUP napisał:

Kod, który wysłałeś lepiej działa ale rozgryzienie go pewnie zajęłoby mi całą noc 😝
 

Ale dziala tak jak zalozyles???

 

7 minut temu, RysiekUP napisał:

Nawet mnie nie załamuj 😞 A ja myślałem, że zmienię branżę hehe

Sluchaj...ja jak zobaczylem przykladowe kody to na kilka lat temat calkiem porzucilem, wiadomo hieroglify i szlaczki...ale wkoncu sie przelamalem i teraz zaluje ze wtedy sie wylamalem...😉 po troszku wszystko do glowy wejdzie

Link do komentarza
Share on other sites

Zerkne jutro bo szczerze nie chcialo mi sie tego pisac i tak na chama to zrobilem...😜

Tzn...kod dziala w kolko...gdy wcisniesz guzik zrobi druga sekwencje i powroci do pierwszej 

Edytowano przez farmaceuta
Link do komentarza
Share on other sites

Witam 😄 ja mam kilka pytań odnoście tej części kursu:

1. Jeśli funkcja zwraca jakąś wartość, to funkcja pinMode i digitalWrite zwracają wartość w postaci High lub LOW (0 lub 1 ) ?

2. INPUT_PULLUP łączy się przez rezystor do wyjścia "5v" z arduino ? czy da się podciągnąć tym rezystorem wewnętrznym do masy, aby sterować dodatnim napięciem ?

3. Przy pętli While - skoro przycisk łączy 7 pin Arduino z masą, to dlaczego w zapisie   while(digitalRead(7) == HIGH){} jest "HIGH" zamiast LOW ? przeciez arduino czeka, aż dostanie LOW - stan niski a nie HIGH - stan wysoki aby wykonać pętlę.

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

35 minut temu, Silver_1 napisał:

Witam 😄 ja mam kilka pytań odnoście tej części kursu:

1. Jeśli funkcja zwraca jakąś wartość, to funkcja pinMode i digitalWrite zwracają wartość w postaci High lub LOW (0 lub 1 ) ?

2. INPUT_PULLUP łączy się przez rezystor do wyjścia "5v" z arduino ? czy da się podciągnąć tym rezystorem wewnętrznym do masy, aby sterować dodatnim napięciem ?

3. Przy pętli While - skoro przycisk łączy 7 pin Arduino z masą, to dlaczego w zapisie   while(digitalRead(7) == HIGH){} jest "HIGH" zamiast LOW ? przeciez arduino czeka, aż dostanie LOW - stan niski a nie HIGH - stan wysoki aby wykonać pętlę.

 

1. Nie, akurat te funkcje nie zwracają żadnej wartości.

2.Chyba nie ma takiej możliwości.

3.Zakładam, że chodzi Ci o przykład ze światłami drogowymi. Tutaj, w pętli program czeka, aż pojawi się stan niski(przycisk zostanie wciśnięty),

dlatego jest HIGH, a nie LOW. Dopiero kiedy na pinie będzie stan niski, program wychodzi z pętli i wykonuje dalsze instrukcje.

  • Lubię! 2
Link do komentarza
Share on other sites

Witajcie. Coś dla dociekliwych:

     Program do migania diodą w cyklu jednosekundowym zadziałał bez problemu, ale zastanowiło, dlaczego sekunda sekundzie nie jest równa - obok też coś migało umownie co sekundę, ale było dużo szybsze od doświadczalnego Arduino (MEGA 2560). W czasie minuty potrafiło nadgonić z półtorej sekundy. Pojawiły się dwa podejrzenia:

1) Oscylatory chodzą mało dokładnie.

2) Program się mozoli, bo zastosowana jest daleka droga do tego, aby na końcu uzyskać zmianę stanu logicznego na wyjściu portu.

    Zastanowiło też, jak wąski impuls można wycisnąć (takim sposobem) z Arduino, oraz: Czy czas wykonywania instrukcji wewnątrz pętli oraz obsługa pętli są na tyle znaczące, aby wskazane było odjęcie jakiejś wartości od tego tysiąca milisekund. Program rozciągnąłem, aby było kilka prostokątów do obejrzenia oscyloskopem, ale celowo, w celach pomiarowych, bez stosowania wewnętrznych pętli: 

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);
  digitalWrite(LED_BUILTIN, HIGH);
  digitalWrite(LED_BUILTIN, LOW);
  digitalWrite(LED_BUILTIN, HIGH);
  digitalWrite(LED_BUILTIN, LOW);    // 1
  digitalWrite(LED_BUILTIN, LOW);    // 2
  digitalWrite(LED_BUILTIN, HIGH); // 1
  digitalWrite(LED_BUILTIN, HIGH); // 2
  
  digitalWrite(LED_BUILTIN, LOW);    // 1
  digitalWrite(LED_BUILTIN, LOW);    // 2
  digitalWrite(LED_BUILTIN, LOW);    // 3
  digitalWrite(LED_BUILTIN, LOW);    // 4
  digitalWrite(LED_BUILTIN, LOW);    // 5
  digitalWrite(LED_BUILTIN, LOW);    // 6
  digitalWrite(LED_BUILTIN, LOW);    // 7
  digitalWrite(LED_BUILTIN, LOW);    // 8
  digitalWrite(LED_BUILTIN, LOW);    // 9
  digitalWrite(LED_BUILTIN, LOW);    // 10
  digitalWrite(LED_BUILTIN, HIGH); // 1
  digitalWrite(LED_BUILTIN, HIGH); // 2
  digitalWrite(LED_BUILTIN, HIGH); // 3
  digitalWrite(LED_BUILTIN, HIGH); // 4
  digitalWrite(LED_BUILTIN, HIGH); // 5
  digitalWrite(LED_BUILTIN, HIGH); // 6
  digitalWrite(LED_BUILTIN, HIGH); // 7
  digitalWrite(LED_BUILTIN, HIGH); // 8
  digitalWrite(LED_BUILTIN, HIGH); // 9
  digitalWrite(LED_BUILTIN, HIGH); // 10  
}

Wyniki:

zrzut1.thumb.png.8384c7139158290266329bde84a81347.png   zrzut2.thumb.png.781988a7959cee61b8f0d51343656dfc.png 

pokazały że tym sposobem przełączania stanów logicznych można uzyskać generator fali prostokątnej o częstotliwości podchodzącej pod 100kHz, a minimalna szerokość impulsu wynosi około 5.28µs (na oscylogramie po prawej uwidoczniony jest pomiar grupy 10-ciu impulsów).

Wniosek: Za omijanie Assemblerów i wygodę płaci się nie tylko długością programu wynikowego, ale też jego umiarkowaną prędkością. Warto o tym pamiętać (element edukacji), ale w ćwiczeniu z LED'em w niczym nie przeszkadza.

Pozdrawiam

Tomasz

  • Lubię! 1
Link do komentarza
Share on other sites

Nie musisz się bawić w asemblery i gmeranie po rejestrach bo ktoś już to za ciebie zrobił - poszukaj digitalWriteFast.

A jako ćwiczenie porównaj kody źródłowe oryginalnego digitalWrite z digitalWriteFast.

  • Lubię! 2
Link do komentarza
Share on other sites

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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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