Treker (Damian Szymański) Styczeń 23, 2019 Udostępnij Styczeń 23, 2019 @Patita, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start: Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników. Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć? Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości. 22 minuty temu, Patita napisał: Czy możliwe jest by podłączyć dwa serwa które jednocześnie będą wykonywały dwa różne ruchy? Tak, oczywiście - bez żadnego problemu. Cytuj Link do komentarza Share on other sites More sharing options...
krzych90 Styczeń 31, 2019 Udostępnij Styczeń 31, 2019 Witam, Jako całkowity amator mam problem, mianowicie w lekcji 3 było pokazane pobieranie tekstu. Natomiast w zadaniu domowym z lekcji o serwomechanizmach i PWM jest zadanie domowe 5.4. Nie mam totalnie pojęcia jak pobrać zmienną, próbowałem konwersji, zaglądnąłem na strone arduino do manuali, i każda próba pobrania zmiennej kończy się fiaskiem. Niby pobiera wartość liczbową, i wyświetla ją, ale zaraz potem niezaleznie od metody jest jakaś nagła odpowiedź mikro-kontrolera. (zaznaczam iż ta 5 nie ma nic wspolnego z odpowiedzią, niezależnie od tej linijki i tak wyświetlane są wartości wpisane, i zaraz potem całkowicie niespodziewana liczba. Dlaczego? 😞 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Styczeń 31, 2019 Udostępnij Styczeń 31, 2019 @krzych90, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start: Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników. Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć? Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości. 1 godzinę temu, krzych90 napisał: Niby pobiera wartość liczbową, i wyświetla ją, ale zaraz potem niezaleznie od metody jest jakaś nagła odpowiedź mikro-kontrolera. (zaznaczam iż ta 5 nie ma nic wspolnego z odpowiedzią, niezależnie od tej linijki i tak wyświetlane są wartości wpisane, i zaraz potem całkowicie niespodziewana liczba. Widocznie wysyłasz do Arduino "coś więcej" oprócz wpisanej przez Ciebie liczby. Zapewne wynika to z ustawień Twojego monitora portu szeregowego: W obecnej formie program "myśli", że przesyłane znaki linii też mają być traktowane jak liczby stąd pojawia się 0+5=5. Jeśli chcesz tego uniknąć to wystarczy tak zmienić ustawienia nadawania, aby nie wysyłać żadnych innych znaków. Możesz też zmodyfikować program, aby sam filtrował takie znaki. PS na przyszłość umieszczaj kody programów w treści wiadomości i wklejaj zrzuty ekranu całego okna monitora portu szeregowego to będzie łatwiej udzielić pomocy 😉 Cytuj Link do komentarza Share on other sites More sharing options...
krzych90 Styczeń 31, 2019 Udostępnij Styczeń 31, 2019 Dziękuję za pomoc w początkach zabawy z Arduino :) Genialne, tyle godzin nad tym spędziłem a po zmianie w monitorze portu szeregowego jest OK :) a jak wyglądałaby modyfikacja, aby program sam filtrował znaki? Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
Treker (Damian Szymański) Luty 2, 2019 Udostępnij Luty 2, 2019 @krzych90, nie mam teraz pod ręką Arduino, ale pewnie wystarczyłoby coś takiego dodać do Twojego programu (trim usuwa białe znaki): String odebrane = Serial.readString(); odebrane.trim(); zmienna = odebrane.toInt(); Cytuj Link do komentarza Share on other sites More sharing options...
Karliko Luty 15, 2019 Udostępnij Luty 15, 2019 (edytowany) Hej, mam pytanko. Serwo zawsze na początku ustawia się do pozycji około 90 stopni, czy to można jakoś zmienić? By np zaczynał od 0. Edytowano Luty 15, 2019 przez Karliko Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Luty 17, 2019 Udostępnij Luty 17, 2019 @Karliko, serwomechanizm tego typu nigdy nie ustawia się sam w żadnej pozycji. Wszystko zależy od programu 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
arek2007100 Marzec 7, 2019 Udostępnij Marzec 7, 2019 (edytowany) #define diodaPIN 3 byte wypelnienie = 0; int zmiana = 5; void setup() { pinMode(diodaPIN, OUTPUT);//Konfiguracja pinu jako wyjścia } void loop() { analogWrite(diodaPIN, wypelnienie); //Generujemy sygnał o zadanym wypełnieniu wypelnienie=wypelnienie+zmiana; delay(50); //Małe opóźnienie, aby efekt był widoczny } zad5.1 Jest latwe nawet dla kogos kto nie potrafi programowac 🙂 #define diodaPIN 3 byte wypelnienie = 0; int zmiana = 5; void setup() { pinMode(diodaPIN, OUTPUT);//Konfiguracja pinu jako wyjścia } void loop() { analogWrite(diodaPIN, wypelnienie); //Generujemy sygnał o zadanym wypełnieniu if (wypelnienie < 255) { //Jeśli wypełnienie mniejsze od 100% wypelnienie = wypelnienie + zmiana; //Zwiększamy wypełnienie } else if(wypelnienie==255) // Jeśli wypełnienie osiągnie 100% { while(wypelnienie>0) // Jeśli wypełnienie większe od 0 { wypelnienie=wypelnienie-zmiana; // Zmniejsz je do 0 analogWrite(diodaPIN, wypelnienie); delay(15); } } delay(15); //Małe opóźnienie, aby efekt był widoczny } zad 5.2 Wydaje mi sie ze dziala poprawnie. Prosze o podpowiedz jesli mozna cos zmienic na lepsze poniewaz sie ucze 🙂 5.4 #include <Servo.h> //Bibloteka odpowiedzialna za serwa Servo servoMechanizm; //Tworzymy obiekt, dzieki ktoremu mozemy odwolac sie do serwa int pozycja=0; // Aktualna pozycja serva 0-100 void setup() { Serial.begin(9600); servoMechanizm.attach(9); //Servomechanizm podlaczony do pinu 9 } void loop() { Serial.print("Poczatkowa pozycja: "); Serial.println(pozycja); for(int pozycja; pozycja<=180; pozycja++) //Zwiekszaj pozycje { Serial.print("Aktualna pozycja: "); Serial.println(pozycja); servoMechanizm.write(pozycja); //Wykonaj ruch if(pozycja ==180) { Serial.print("Maksymalna pozycja: "); Serial.println(pozycja); pozycja=0; } delay(50); } } Jak to poprawic? Chcialbym aby terminal byl bardziej czytelny + chce zeby kiedy silnik dojedzie do pozycji maks wyswieltal sie ponownie napis pozycja poczatkowa. 🙄 Edytowano Marzec 7, 2019 przez arek2007100 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Marzec 9, 2019 Udostępnij Marzec 9, 2019 Dnia 7.03.2019 o 15:16, arek2007100 napisał: Chcialbym aby terminal byl bardziej czytelny + chce zeby kiedy silnik dojedzie do pozycji maks wyswieltal sie ponownie napis pozycja poczatkowa. Co dokładnie chciałbyś poprawić? Wyświetlanie napisu o pozycji początkowej najprościej będzie uzależnić od wartości zmiennej pozycja - będziesz mógł wyświetlać wtedy odpowiednie komunikaty dla praktycznie dowolnej pozycji 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Kage Marzec 11, 2019 Udostępnij Marzec 11, 2019 (edytowany) Witam, Do tej pory przerobiłem wszystkie zadania, ale mam pytanie dotyczące serwo z kursu. Doczytałem już z poprzednich postów, że może być to inny model, bez blokady mechanicznej. Na pewno takiej nie posiada, bo wykonując poniższy program zachowuje się inaczej niż założenia w kursie. #include <Servo.h> // Biblioteka Servo serwomechanizm; // tworzenie obiektu int pozycja = 0; // aktualna pozycja int zmiana = 6; // zmiana pozycji serwa void setup() { serwomechanizm.attach(5); // podłączenie do pinu 5 Serial.begin(9600); // prędkość transmisji } void loop() { if (pozycja < 180) { // jeżeli pozycja jest <180 serwomechanizm.write(pozycja); // wykonanie ruchu } else { // w przeciwnym wypadku pozycja = 0; } Serial.println(pozycja); // wyświetl pozycję pozycja += zmiana; // zwiększenie pozycji delay(200); // opóźnienie } Najpierw wykonuje kilka obrotów. Następnie zwalnia, wykonuje powolny obrót o kilkadziesiąt stopni i wraca do położenia innego, niż początkowe. Wg monitora portu szeregowego zmiana kierunku obrotów następuje przy wartości 90. Przy nastawieniu pozycji na kilkanaście "stopni" kręci się w jedną stronę. Nie jestem pewien jak długo, bo wolę go w ten sposób nie eksploatować. Wygląda, jakby serwo jednak nie interpretował zadanej pozycji, jako stopnie wychylenia z pozycji zerowej. Moje pytania brzmią. Po pierwsze, czy nie popełniłem jakiejś głupoty w programie (sądzę, że podłączyłem wszystko właściwie). Jeżeli wszystko jest napisane poprawnie, czy mogę to serwo zmusić do współpracy? Wiem już, że mogę próbować pisać do botlandu o serwo dokładnie taki jak w kursie, ale sądzę, że mógłbym spróbować pracować z tym co mam. Zwłaszcza, że nie jest najwidoczniej uszkodzony. Edytowano Marzec 11, 2019 przez Kage Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Marzec 14, 2019 Udostępnij Marzec 14, 2019 @Kage, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start: Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników. Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć? Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości. Dnia 11.03.2019 o 18:27, Kage napisał: Następnie zwalnia, wykonuje powolny obrót o kilkadziesiąt stopni i wraca do położenia innego, niż początkowe. Wg monitora portu szeregowego zmiana kierunku obrotów następuje przy wartości 90. Jeśli Twoje serwo zmienia kierunek obrotów o 360*, to wygląda na to, że posiadasz złe serwo. Konkretnie masz serwo 360*, które używa się np. do napędzania małych robotów. W przypadku tych serw nie ma możliwości, aby kontrolować ich położenie. Zmiana wypełnienia sygnału PWM wpływa tylko na kierunek i prędkość obrotów. pozostaje więc wymiana na właściwe serwo lub po prostu możesz zostawić sobie takie, bo też jest przydatne 😉 Cytuj Link do komentarza Share on other sites More sharing options...
walfer2000 Marzec 16, 2019 Udostępnij Marzec 16, 2019 Witam, Od jakiegoś czasu zmagałem się z lekcją #5 kursu arduino i sterowaniem serwem SG90. Problem polegał na tym, że nie dało się nim kompletnie sterować, tak jak to jest opisane w kursie. Jego ramie poruszało sie chaotycznie w zakresie ok 15 stopni, a samo serwo mocno drgało (co widac na zalaczonym gifie). Jezeli chodzi o zasilanie, to próbowałem różnych konfiguracji: bezpośrednie podłączenie serwa do zasilacza LW-K3010D, zasialnie z zasilacza poprzez LM7805 lub z wykorzystaniem baterii. W każdej wersji zasilanie prowadzone było niezależnie od płytki, którą zasilałem z USB z kompa. W skrócie sygnal PWM z pin 9 był podawany z arduino, a zasialnie silnika szło oddzielnie poza kontrolerem. Za kazdym razem objawy były identyczne. Program do sterowania został skopiowany ze strony, jak należy. Dodałem dwie linie kodu, aby odczytać wartości 'pozycja' przez serial monitor i PWM działało bez zarzutu. Niby wszystko było ok, ale serwo trząsło się jak przy ataku żółtej febry. Ogarniała mnie już desperacja i miałem ochotę się poddać, gdy wpadłem na pomysł płączenie masy płytki z masą zasilania silnika w serwie. I to było bingo. Drgawki ustały, a ramie zaczęło sie rytmicznie poruszać. Wprawdzie, nie wszystko jeszcze działa dobrze, bo ramie krąży w zakrasie 0-165 stopni, ale mam nadzieję, że dojdę do tego, jak uzyskać obrót 0-180. Może macie jakieś sugestie? Mam nadzieję, ze ten wpis zaoszczędzi komuś trochę czasu. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Marzec 17, 2019 Udostępnij Marzec 17, 2019 @walfer2000 czy to serwo pochodzi z naszego zestawu? Pytam, bo nie widzę, abyś miał przypisany jakiś zestaw do swojego konta na forum, a warto byłoby zacząć od tego czy wina nie leży w zakupie złego napędu. Akurat w przypadku tego typu serwa symbol SG90 nie mówi zbyt wiele, bo producenci pod tą samą nazwą wypuszczają na rynek zupełnie różne napędy. Cytuj Link do komentarza Share on other sites More sharing options...
walfer2000 Marzec 17, 2019 Udostępnij Marzec 17, 2019 Problem został już pozytywnie rozwiązany. Mea culpa. Wielkie dzięki za pomoc. Cytuj Link do komentarza Share on other sites More sharing options...
Arteriuss Kwiecień 2, 2019 Udostępnij Kwiecień 2, 2019 Zadanie 5.3 #include <Servo.h> Servo serwo; int pozycja = 0; int zmienna = 6; int opoznienie = 200; int zmiana = 50; void setup() { serwo.attach(9); } void loop() { if (pozycja < 180){ serwo.write(pozycja); } else { pozycja = 0; } pozycja = pozycja + zmienna; delay(opoznienie); opoznienie = opoznienie + zmiana; } Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!