ethanak Maj 11, 2020 Udostępnij Maj 11, 2020 15 minut temu, Gieneq napisał: może też dodaj w przyszłych kodach procedury #define @Gieneq... błagam... ja rozumiem że przyszedłeś do mikrokontrolerów ze świata Javy (no wiesz, te wszystkie "thinking in Java" i tak dalej) ale naucz się wreszcie języka którym tu się posługujemy bo piękniejszego przykładu oksymoronu dawno nie widziałem!
Vova Maj 11, 2020 Udostępnij Maj 11, 2020 I znowu przy wsparciu forum (posiliłem się rozwiązaniem kolegi bakardi92 ) zadanie 8.3 String liczba = "";//Zmienna do wprowadzania tekstu int ilosc = liczba.toInt();//Zmaina tekstu na liczby void setup() { Serial.begin(9600);//Nawiazanie komunikacji przez UART } void loop() { if (Serial.available() > 0) {//Czy Arduino odebrało dane? liczba = Serial.readStringUntil('\n');//Zapisz danie do zmiennej ilosc = liczba.toInt();//Przeksztalcenie ciagu znakow na liczby for (int i = 0; i < ilosc; i++) {//Drukuj test gdy warunki sa spelnione Serial.print("*"); } Serial.print('\n');//Zacznij od nowej linii } 1
Gieneq Maj 12, 2020 Udostępnij Maj 12, 2020 @Vova kolejne zadanie zrobione, tak trzymaj @ethanak dyrektywa jest lepszą nazwą? 1
ethanak Maj 12, 2020 Udostępnij Maj 12, 2020 36 minut temu, Gieneq napisał: @ethanak dyrektywa jest lepszą nazwą? Jak najbardziej, i ta powinna być stosowana. Prawidłowe jest również użycie w stosunku do #define słowa "makro" (chociaż wielu - szczególnie początkującym - nie będzie wiedziało o co chodzi). Słowo "procedura" sugeruje, że "coś" się wykonuje - tymczasem cały preprocesor z #define na czele służy między innymi właśnie do tego, aby nic się nie wykonywało 2
ceiem Maj 21, 2020 Udostępnij Maj 21, 2020 Jakiego kondensatora trzeba użyć (chodzi mi o ten czarny)? 1
jas123 Maj 21, 2020 Udostępnij Maj 21, 2020 45 minut temu, ceiem napisał: Jakiego kondensatora trzeba użyć (chodzi mi o ten czarny)? To jest kondensator elektrolityczny i w tym przypadku nie ma dokładnie wyznaczonego kondensatora który koniecznie musisz podłączyć żeby układ działał . Ten "czarny" służy do filtrowania zasilania może on mieć 100µF, 200µF, 1000µF . Ważne żeby nie był za mały (chodzi o pojemność). Za duży też nie potrzebny. . 1
ceiem Maj 21, 2020 Udostępnij Maj 21, 2020 (edytowany) Bardzo dziękuję. Mogę więc zacząć wykonywać ćwiczenie [edit] Jednak nie zacznę ćwiczenia. Dlaczego tutaj są dwa kondensatory? Jest czarny i pomarańczowy. Czy sposób ich podłączania (nie wiem jak to nazwać, kolejność podłączania na płytce, rozmieszczenie?) ma jakieś znaczenie? Edytowano Maj 21, 2020 przez ceiem
jas123 Maj 21, 2020 Udostępnij Maj 21, 2020 1 godzinę temu, ceiem napisał: Jest czarny i pomarańczowy. Czy sposób ich podłączania (nie wiem jak to nazwać, kolejność podłączania na płytce, rozmieszczenie?) ma jakieś znaczenie? Ten "pomarańczowy" to kondensator ceramiczny i również służy do filtrowania zasilania . Kondensatory ceramiczne dobrze radzą sobie z filtrowaniem wysokich częstotliwości a elektrolityczne dobrze filtrują niskie częstotliwości.Dlatego często stosuje się oba rodzaje. Cytat Jeżeli chodzi o technikę cyfrową, to kondensatory są stosowane głównie do filtracji zasilania. Układy cyfrowe (w tym mikrokontrolery) są wrażliwe na zakłócenia, które mogą powodować ich nieprawidłowe działanie (np. zawieszanie się). Stąd, zasilanie każdego układu cyfrowego powinno być filtrowane (np.: przez kondensatory ceramiczne 100 nF). Filtrowanie polega na włączeniu kondensatorów między linię zasilającą, a masę. Sprawdzają się one w tej roli, ponieważ nie przepuszczają prądu stałego (można je podłączyć do baterii bez obawy o jej zwarcie), za to przewodzą prąd zmienny. Dzięki temu, zakłócenia w postaci napięcia zmiennego, są zwierane do masy. Kondensatory elektrolityczne, mimo osiągania dużych pojemności, nie są skuteczne w filtrowaniu sygnałów o naprawdę wysokich częstotliwościach. Jest to spowodowane pewną ich niepożądaną cechą, zwaną indukcyjnością szeregową (o indukcyjności w dalszej części kursu). Z kolei kondensatory ceramiczne nie potrafią skutecznie odfiltrować zakłóceń o niewielkich częstotliwościach. Z wyżej wymienionych powodów, najskuteczniejsze jest równoległe połączenie obu rodzajów kondensatorów: elektrolitycznego i ceramicznego. Źródło :Kurs elektroniki – #4 – kondensatory, filtrowanie zasilania 2
ceiem Czerwiec 29, 2020 Udostępnij Czerwiec 29, 2020 Nie rozumiem jak mam do jednego mostka podłączyć dwa silniki...?
Gieneq Czerwiec 30, 2020 Udostępnij Czerwiec 30, 2020 @ceiem Choć mostek jest jeden to posiada 2 kanały. Oznacza, że z jednego układu scalonego możesz sterować 2 silnikami. które wyprowadzenia do tego służą? Jest to opisane w dokumentacji, która jest podlinkowana w kursie: Do nóżek output podłączasz silnik. Możesz wybrać pary po danej stronie układu np. 1 silnik to OUTPUT1 I OUTPUT2, a 2 silnik to pozostałe 3 i 4. Nie ma znaczenia, które podłączysz do którego kabelka z silnika, co najwyżej będzie kręcił się w drugą stronę w stosunku do sąsiedniego silnika. 1
badbit Październik 23, 2020 Udostępnij Październik 23, 2020 (edytowany) Cześć, mój kod do zadania 8.4. Działa ale może jakieś sugestie? // sterowanie silnikiem (diodami) void setup() { // silnik nr 1 pinMode(6, OUTPUT); // PWM pinMode(7, OUTPUT); // w lewo pinMode(8, OUTPUT); // w prawo // silnik nr 2 pinMode(3, OUTPUT); // w lewo pinMode(4, OUTPUT); // w prawo pinMode(5, OUTPUT); // PWM } int aktualnaPredkosc; // do zapisu osiagnietej predkosci - przyda sie przy hamowaniu int maksPredkosc = 255; // do ustawienia maksymalnej predkosci void loop() { startPrawo(5, 25); // start silnikow w prawo hamuj(5, 25); // hamowanie do zera delay(2000); startLewo(5, 25); //start silnikow w lewo hamuj(5, 25); // hamowanie do zera delay(2000); } void startPrawo(int zmianaPredkosci, int opoznienie) { // ustawienie wyjsc dla silnika nr 1: obroty w prawo digitalWrite(7, 0); digitalWrite(8, 1); // ustawienie wyjsc dla silnika nr 2: obroty w prawo digitalWrite(3, 0); digitalWrite(4, 1); for (int i = 0; i <= maksPredkosc; i += zmianaPredkosci) { analogWrite(6, i); // stopniowe zwiekszanie obrotow silnikna nr 1 analogWrite(5, i); // stopniowe zwiekszanie obrotow silnika nr 2 aktualnaPredkosc = i; // zapis predkosci - zostanie uzyty przy hamowaniu delay(opoznienie); } } void startLewo(int zmianaPredkosci, int opoznienie) { // ustawienie wyjsc dla silnika nr 1: obroty w lewo digitalWrite(8, 0); digitalWrite(7, 1); // ustawienie wyjsc dla silnika nr 2: obroty w lewo digitalWrite(4, 0); digitalWrite(3, 1); for (int i = 0; i < maksPredkosc; i += zmianaPredkosci) { analogWrite(6, i); // stopniowe zwiekszanie obrotow silnika nr 1 analogWrite(5, i); // stopniowe zwiekszanie obrotow silnika nr 2 aktualnaPredkosc = i; delay(opoznienie); } } void hamuj(int zmianaPredkosci, int opoznienie) { for (int i = aktualnaPredkosc; i >= 0; i -= zmianaPredkosci) { // hamujemy od aktualnej predkosci do zera analogWrite(6, i); // stopniowe zmniejszanie obrotow do zera (silnik nr 1) analogWrite(5, i); // stopniowe zmniejszanie obrotow do zera (silnik nr 2) delay(opoznienie); } } Film (polecam wyłączyć dźwięk, bo za oknem prace): Edytowano Październik 23, 2020 przez badbit 2
Gieneq Październik 23, 2020 Udostępnij Październik 23, 2020 (edytowany) @badbit fajnie że działasz z zadaniami dodatkowymi Sugestie? No to dam 2: łatwa - dodaj etykiety do tzw. magicznych liczb. Czyli żeby nie było jakiś liczb w kodzie tylko daj definy które je opisują, np. LEFT_PIN 6 itp. trudne - wyrzuć delaye to już daleko poza kursem, ale jak masz ochotę się z tym zmierzyć to próbuj. Edytowano Październik 23, 2020 przez Gieneq
badbit Październik 23, 2020 Udostępnij Październik 23, 2020 (edytowany) @Gieneq ok, wyrzucam delaye i dalej działa, tylko że nic nie widać! A tak poważnie to na razie chyba za trudne. Edytowano Październik 23, 2020 przez badbit
EnderDpl Listopad 8, 2020 Udostępnij Listopad 8, 2020 Mi nie działa czy może być to wina za słabego kondensatora?
Treker (Damian Szymański) Listopad 9, 2020 Udostępnij Listopad 9, 2020 @EnderDpl witam na forum Co dokładnie Ci nie działa, co podłączyłeś i jakie są objawy? Niestety nie masz zarejestrowanego zestawu do tego kursu, więc nie wiem jakim sprzętem dysponujesz.
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »