Skocz do zawartości

Kurs Arduino - #5 - PWM, serwomechanizmy, biblioteki


Komentator

Pomocna odpowiedź

Na szczęście mój egzemplarz Arduino okazał się "idioto-odporny" 🤪

Zadanie 5.4 napisałem i działa, ale wcześniej przy podłączaniu potencjometru popełniłem kardynalny błąd. Oczywiście wyleciały mi z głowy te czerwone ramki z ostrzeżeniami, z poprzednich części i z rozpędu potencjometr podłączyłem do napięcia 9v.

Na szczęście po przekraczaniu 5V mikrokontroler tylko się zawieszał... ale ja katowałem go dalej, bo zamiast szukać błędu w kablach, ciągle próbowałem poprawiać kod 🥴

Zdaje się ze wytrzymał i nadal jest w pełni sprawny, bo po tym zdarzeniu sprawdzałem go na różne sposoby, ale nie mam pewności, że teraz nie boli go coś, o czym jeszcze nie wiem.

Trochę znam samego siebie, dlatego oryginalne Arduino z zestawu, po zakupie tylko pooglądałem, wgrałem jakiś "Blink" i teraz leży grzecznie w szafce.
Ja uczę się na najtańszym klonie. Ale nawet i tego mi szkoda...

Wiem, że nie da się napisać kursu tak, aby ustrzec uczestników przed wszystkimi możliwymi problemami, bo nikt nie jest w stanie opisać wszystkich kombinacji na jakie mogą wpaść ludzie. Ale może by tak (przy najbliższej aktualizacji) ponownie wtrącić zdanie ostrzegające "Potencjometr podłącz pod maksymalnie 5V!" 👍

 

Link do komentarza
Share on other sites

Gdzie drwa rąbią, tam wióry lecą. Każdy popełnia błędy, Ci bardziej wprawieni też i nawet to ze co 2 zdanie w kursie będzie na czerwono nie da gwarancji, ze się nie pomylisz. Na szczęście pracujemy na stosunkowo niskich napięciach, to ucierpi ew. Sprzęt 😆 

  • 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

Dopiero zacząłem się uczyć i nie znam jeszcze "pozycja += zmiana" o co chodzi z tym += ?

Mój kod tak najbardziej łopatologicznie

Zadanie 5.2

#define LED 3

int wypelnienie = 0;
int zmiana = 1;

void setup() {
  pinMode(LED, OUTPUT); //ustawienie pinu 3 jako wyjście

}

void loop() {
 ;
 analogWrite(LED, abs(wypelnienie)); //Generujemy sygnał o zadanym wypełnieniu

if (wypelnienie < 255){
    wypelnienie = wypelnienie + zmiana; //zwiększamy wypelnienie
}

else { //jeżeli wypełnienie = 100% wtedy zmniejszamy

    wypelnienie = - wypelnienie;  
}
 delay(10); //prędkość zmiany wypełnienia
}

 

Edytowano przez kwiatekelk
Link do komentarza
Share on other sites

@kwiatekelk witam na forum 🙂 

i += 4; oznacza to samo co i = i + 4; czyli jest to dodanie do tej samej liczby (zwiększenie liczby o np. 4).

Jak masz i += 1; to możesz zapisać równoważnie jako i++ lub ++i, na razie bez wnikania w różnicę tych 2 zapisów.

Tu też taka historycza ciekawostka, język C++ w którym piszesz kod Arduino to zinkrementowany C czyli w praktyce D (bo C++ czyli C += 1, C = C + 1 = D).

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Na początku artykułu dodałbym jedno proste zdanie: PWM (Pulse-Width Modulation) - metoda regulacji polegająca na na zmianie wypełnienia sygnału, a potem wyjaśnić, na czym to polega. Można też inaczej, w każdym razie pisanie wielkiego wprowadzenia, bez wstępnego powiedzenia, o czym właściwie będziemy mówić, jest poważnym błędem redakcyjnym i utrudnia czytanie i rozumienie. 😞

Edytowano przez szaroblekitny
Link do komentarza
Share on other sites

Dnia 16.07.2015 o 22:52, Elvis napisał:

Co do zadania 5.2 - program działa dla zmiennej "zmiana" = 5. Ale czy będzie działał dla innej wartości? Np. zmiana = 4? Co zrobić, żeby nadal działał poprawnie?

Wydaje mi się że można by to zrobić za pomocą map(), aczkolwiek jeszcze nie próbowałem. 

Czy ktoś ma jakieś pomysły?

Link do komentarza
Share on other sites

(edytowany)
Dnia 7.02.2022 o 07:46, Gieneq napisał:

język C++ w którym piszesz kod Arduino to zinkrementowany C czyli w praktyce D

Ja bym jednak rzekł, że w praktyce C z dodatkami, coś po C. Nazywanie go D ujmuje istniejącemu językowi programowania D.

PS Ja wiem, że historycznie to go nie było na scenie, ale współcześnie to go szkoda :P.

PPS https://www.stroustrup.com/bs_faq.html#name (tl;dr: to nie miało być D)

Edytowano przez trainee
  • 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.