Skocz do zawartości

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


Komentator

Pomocna odpowiedź

Umieszczasz guzik na srodku i pasuje!...druga sprawa..teraz twoj guzik dziala jak wcisniety wiec kod powinien sie wykonywac...czemu led nie swieci? Bo w ukladzie nie ma masy albo jestem slepy...doloz trzeci kabel i obroc guzik, i bedzie dzialac..

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

Taka myśl, w ramach mojego rozkawałkowanego monologu - wśród kursów, w kursie elektroniki #1 chyba są takie elementarne obwody, gdzie LED zapala się przyciskiem bez obecności Arduino. I gdy już to ma się dobrze opanowane, wtedy łatwiej doprowadzić do działania z Arduino.

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

Zaliczony rozdział

Przydało by się info od bardziej doświadczonych czy jest sposób ochrony usb komputera przed pomyłką na płytce. Natrafiłem na takie urządzenie jak "izolator usb" nie wiem czy ludzie używają takich urzadzeń

Edytowano przez Pierunek
  • Lubię! 1
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

@Pierunek niedawno zrobiłem zwarcie na porcie USB 3.1 w nowym lapku. Dostałem komunikat o przeciążeniu i po ponownym uruchomieniu wróciło do normy. Pewnie przeciążenie to 500mA, bo w tych inteligentnych USB to bez wstępnej komunikacji więcej nie pociągniesz. Myślę że sterowniki USB są na tyle inteligentne że mają więcej zabezpieczeń.

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

Witam 

mam pytanie odnośnie tych fragmentów w kursie:

Cytat

Kolorem ciemnozielonym (nr od 0 do 19) zaznaczono uniwersalne, cyfrowe piny wejścia/wyjścia (I/O).

Funkcja pinMode(Pin, Tryb) umożliwia wybranie, czy dany pin jest wejściem, czy wyjściem. Pin może być liczbą całkowitą z zakresu od 0 do 13.

Dlaczego do funkcji pinMode można wpisać liczby tylko od 0 do 13 a nie do 19 skoro wszystkich pinów jest 19?  W dalszej części kursu pisze, że  piny 14-19 mogą być wykorzystywane jako piny wejścia i wyjścia.

Cytat

Kolorem jasnozielonym zaznaczone zostały wejścia analogowe (A0-A5). Są to wyjątkowe piny, które pozwalają na pomiar napięcia (w zakresie 0-5V). Jak widać numeracja tych wejść pokrywa się z pinami uniwersalnymi (numery od 14 do 19).  Praca w trybie analogowym to dodatkowa funkcja tych pinów.

Zapamiętaj: piny analogowe A0-A5 mogą również pracować jako zwykłe piny I/O.

Czy to jakaś literówka? Z góry dziękuje za odpowiedź.

Link do komentarza
Share on other sites

12 godzin temu, Wojtek777 napisał:

Czy to jakaś literówka? Z góry dziękuje za odpowiedź.

@Wojtek777 nie tyle literówka, co pewne świadome uproszczenie tematu, aby na początku nie było konieczności zagłębiania się w alternatywne funkcje pinów, wejścia analogowe itd.

Link do komentarza
Share on other sites

W ramach ćwiczeń do pierwszej lekcji, zrobiłem światła, które migają cały czas na żółto, a po wciśnięciu przycisku wykonują sekwencję:
Czerwone - czerwone+żółte - zielone - żółte. 🙂

void setup() {
  pinMode(8, OUTPUT); //Dioda jako wyjście zielona
  pinMode(9, OUTPUT); //jw zolta
  pinMode(10, OUTPUT); //jw czerwona
  
  pinMode(7, INPUT_PULLUP); //Przycisk jako wejscie
  //Diody wylaczone na starcie//
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
}

void loop() {
  while (digitalRead(7) == LOW) {
    digitalWrite(8, LOW); //Zielona off
    digitalWrite(9, HIGH); //Zolta on
    digitalWrite(10, LOW); //Czerwona off
    delay(500);
    
     digitalWrite(8, LOW); //Zielona off
     digitalWrite(9, LOW); //Zolta off
     digitalWrite(10, HIGH); //czerwona on
     delay(2000);

     digitalWrite(8, LOW); //zielona off
     digitalWrite(9, HIGH); //zolta on
     digitalWrite(10, HIGH); //czerwona on
     delay(1500);

     digitalWrite(8, HIGH); //zielona on
     digitalWrite(9, LOW); //zolta off
     digitalWrite(10, LOW); //czerwona off
     delay(2500);

     digitalWrite(8, LOW); //zielona off
     digitalWrite(9, HIGH); //zolta on
     digitalWrite(10, LOW); //czerwona off
     delay(2500);
  }
  digitalWrite(8, LOW); //Zielona off
  digitalWrite(9, HIGH); //Zolta on
  digitalWrite(10, LOW); //Czerwona off
  delay(500); //Czek 0.5 s
  digitalWrite(8, LOW); //Zielona off
  digitalWrite(9, LOW); //Zolta off
  digitalWrite(10, LOW); //Czerwona off
  delay(500);
}

 

Programik bangla. 😄
Dla wielu banał, dla mnie duży krok i cieszę gębę.

 

Zauważyłem, jak ktoś wyżej, że muszę dłużej przytrzymać przycisk, żeby wykonała się pętla while.
Czy w dalszej części kursu jest coś w tej kwestii?
Na razie nie chcę wyprzedzać kursu, jak nie, to najwyżej wrócę do tego później. 😉

Link do komentarza
Share on other sites

18 minut temu, Danyeru napisał:

Zauważyłem, jak ktoś wyżej, że muszę dłużej przytrzymać przycisk, żeby wykonała się pętla while.
Czy w dalszej części kursu jest coś w tej kwestii?

Te delay() są winne temu. Co do kursu to wygląda na to, że się on skończył.

Link do komentarza
Share on other sites

27 minut temu, Belferek napisał:

Te delay() są winne temu. Co do kursu to wygląda na to, że się on skończył.

Jestem na początku pierwszej części, nie przeglądałem dalszych części, stąd pytam, czy w istniejącym kursie o tym będzie. 😉
Jak nie, to wrócę pytać jeżeli się w międzyczasie czegoś nie dowiem. 😄

Edytowano przez Danyeru
Link do komentarza
Share on other sites

15 godzin temu, Danyeru napisał:

Programik bangla. 😄
Dla wielu banał, dla mnie duży krok i cieszę gębę.

@Danyeru i o to chodzi, tak ma właśnie wyglądać nauka - dobra robota! Każdy powinien robić takie projekty, jakie aktualnie może i jakie sprawiają mu frajdę.

15 godzin temu, Danyeru napisał:

Zauważyłem, jak ktoś wyżej, że muszę dłużej przytrzymać przycisk, żeby wykonała się pętla while.
Czy w dalszej części kursu jest coś w tej kwestii?
Na razie nie chcę wyprzedzać kursu, jak nie, to najwyżej wrócę do tego później. 😉

To wynika z tego, że warunki w pętli nie jest sprawdzany ciągle, tylko tuż przed każdym wykonaniem pętli. Stąd, musisz trzymać przycisk aż nie skończy się sekwencja wewnątrz pętli while. Da się to rozwiązać na kilka sposobów - np. korzystając z milis lub za pomocą przerwań zewnętrznych. Oba te tematy są opisane w kursie Arduino, poziom II 🙂

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

Ciekawa lekcja wprowadzająca 👍

Gdyby ktoś potrzebował pomocy, poniżej podrzucam własne spostrzeżenia oraz kody programów do zadań domowych 😉

1️⃣ Zadanie domowe nr 1.1

Osobiście byłem w stanie zauważyć migotanie diody przy wartości 12 milisekund. Warto wykorzystać w tym celu aparat w telefonie. Włączając funkcję zwolnionego tempa możemy obserwować podobne zjawisko nawet przy wyniku 3 milisekund!

2️⃣ Zadanie domowe nr 1.2

Włączenie oraz wyłączenie, w tym samym czasie, diody nr 1 oraz diody nr 2:

void setup() {
  pinMode(8, OUTPUT); //Konfiguracja pinu 8 jako wyjście diody nr 1
  pinMode(7, OUTPUT); //Konfiguracja pinu 7 jako wyjście diody nr 2
}
 
void loop() {
  digitalWrite(8, HIGH); //Włączenie diody nr 1
  digitalWrite(7, HIGH); //Włączenie diody nr 2
  delay(1000); //Odczekanie 1 sekundy
  digitalWrite(8, LOW); //Wyłączenie diody nr 1
  digitalWrite(7, LOW); //Wyłączenie diody nr 2
  delay(1000); //Odczekanie 1 sekundy
}

Włączenie oraz wyłączenie, na przemian, diody nr 1 oraz diody nr 2:

void setup() {
  pinMode(8, OUTPUT); //Konfiguracja pinu 8 jako wyjście diody nr 1
  pinMode(7, OUTPUT); //Konfiguracja pinu 7 jako wyjście diody nr 2
}
 
void loop() {
  digitalWrite(8, HIGH); //Włączenie diody nr 1
  digitalWrite(7, LOW); //Wyłączenie diody nr 2
  delay(1000); //Odczekanie 1 sekundy
  digitalWrite(8, LOW); //Wyłączenie diody nr 1
  digitalWrite(7, HIGH); //Włączenie diody nr 2
  delay(1000); //Odczekanie 1 sekundy
}
  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

15 minut temu, Wejmon napisał:

Włączenie oraz wyłączenie, w tym samym czasie, diody nr 1 oraz diody nr 2:

Przyjrzyj się swojemu programowi. On nie wyłącza diod w tym samym czasie. Najpierw wyłącza diodę nr 1, a "za chwilę" diodę nr 2 :-).

  • Lubię! 1
  • Pomogłeś! 1
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.