Lukaszm Styczeń 13, 2018 Udostępnij Styczeń 13, 2018 wypelnienie < 255; Co robi ta linijka? Cytuj Link do komentarza Share on other sites More sharing options...
mistus Styczeń 13, 2018 Udostępnij Styczeń 13, 2018 zezwala dodawać tylko do 255 [ Dodano: 13-01-2018, 20:06 ] zadanie 5.2 Miałem mały problem z while nie sądziłem ze arduino tak szybko zlicza i ciągle świeciła mi dioda ;d ale Serial.begin pomógł 😉 #define czerwona 3 int wypelnienie = 0; int czas = 200; int zmiana = 5; void setup() { pinMode(czerwona, OUTPUT); Serial.begin(9600);// sprawdzam czy wszystko dzala } void loop() { while (wypelnienie < 255){ Serial.println(wypelnienie); analogWrite(czerwona, wypelnienie); wypelnienie = wypelnienie + zmiana;// rozswietlamy diode delay(czas); } while(wypelnienie > 0){ Serial.println(wypelnienie); analogWrite(czerwona, wypelnienie); wypelnienie = wypelnienie - zmiana;// gasimy diode delay(czas); } } Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Styczeń 13, 2018 Udostępnij Styczeń 13, 2018 zezwala dodawać tylko do 255 Oj to chyba coś Ci ucięło przy wklejaniu programu. Czy nie powinno tam być żadnego warunku 😉? Cytuj Link do komentarza Share on other sites More sharing options...
mistus Styczeń 13, 2018 Udostępnij Styczeń 13, 2018 no właśnie działało bez warunku co mnie zaskoczyło skoro źle to jeszcze pomyśle a tu rozwiązanie na zadanie 5.3 #include <Servo.h>// ustawiamy bibliotekę Servo serwomechanizm;// tworzymy obiekt do odwołania się dla serwa int pozycja = 0; int zmiana = 6; int czas = 200;//ustawiamy wstępny czas int minuty = 10;//wydłużamy czas void setup() { serwomechanizm.attach(9);// włączamy jako wyjście 9 serwomechanizmowi } void loop() { if (pozycja < 180){// zlicza od 0 do 180 stopni serwomechanizm.write(pozycja);// o ile ma wykonać ruch } else { pozycja = 0;// ustawia pozycje znów na początek } pozycja = pozycja + zmiana;//przesuwa serwomechanizm delay(czas);// wstępny czas czas = czas + minuty;// wydłużamy czas reakcji serwomechanizmu } [ Dodano: 13-01-2018, 22:10 ] odpowiedz na zadanie 5.4 #include <Servo.h>// ustawiamy bibliotekę Servo serwomechanizm;// tworzymy obiekt do odwołania się dla serwa int pozycja = 0; String dane = "";// wpisanie z komputera dane pozycji void setup() { Serial.begin(9600);// połączenie z komputerem serwomechanizm.attach(9);// włączamy jako wyjście 9 serwomechanizmowi } void loop() { Serial.flush();// wykasowanie danych z bufora if(Serial.available() > 0){// sprawdzenie czy są jakieś dane w buforze dane = Serial.readStringUntil('\n');// odczytanie danych i wpisanie w nową linie pozycja = dane.toInt();// zmiana danych na pozycje i danie zmiennej int if (pozycja < 181){ serwomechanizm.write(pozycja);// przesuniecie serwa o pozycje nadana przez nas } else { Serial.println(" zły zakres"); } } } [ Dodano: 14-01-2018, 10:36 ] Nie wiedziałem o co do końca chodzi w zadaniu 5.5 wiec zrobiłem na 3 sposoby 1. #include <Servo.h>//ustawiamy bibliotekę #define machina 9 //nadaje pinowi 9 nazwę Servo serwomechanizm;// tworzymy obiekt do odwołania się dla serwa int pozycja = 0; int dane = 0; float napiecie = 0; int zmiana = 6; float dzielnik = 3.0;// nasz dzielnik napięcia void setup() { serwomechanizm.attach(machina);// ustawienie machiny jako output } void loop() { dane = analogRead(A5);// odczytanie danych z potencjometru napiecie = dane *(5.0/1023.0);// zamieniamy na napięcie if (napiecie > dzielnik){ serwomechanizm.write(pozycja);//ustawiamy wstępnie serwomechanizm pozycja = pozycja + zmiana;// przesuwamy w lewo delay(200); } else if (napiecie < dzielnik){ serwomechanizm.write(pozycja);//ustawienie wstępne serwomechanizmu pozycja = pozycja - zmiana;// przesuwamy w prawo delay(200); } } 2. #include <Servo.h>// ustawiamy bibliotekę #define machina 9// nadajemy pinowi 9 nazwę Servo serwomechanizm;// tworzymy obiekt do odwołania się dla serwa int dane = 0; float napiecie = 0; float pozycja = 0; void setup() { Serial.begin(9600);// połączenie z komputerem serwomechanizm.attach(machina); } void loop() { dane = analogRead(A5);// odczytanie danych z potencjometru napiecie = dane * (5.0/1023.0);// zamieniamy na napięcie pozycja = napiecie; pozycja = map(pozycja ,0,5,1,180);// dziele napięcie na odcinki Serial.println(pozycja);// sprawdzam czy wszystko hula serwomechanizm.write(pozycja);//przesuwanie skokowo (na odcinki) delay(100); } 3. ta opcja najbardziej mi się podobała 🙂 #include <Servo.h>// ustawiamy bibliotekę #define machina 9// nadaje pinowi 9 nazwę Servo serwomechanizm;// tworzymy obiekt do odwołania się dla serwa int dane = 0; float pozycja = 0; void setup() { Serial.begin(9600);// połączenie z komputerem serwomechanizm.attach(machina); } void loop() { dane = analogRead(A5);// odczytanie danych z potencjometru pozycja = dane; pozycja = map(pozycja ,0,1023,1,180);// dziele pozycje by mieściły się od 0 - 180 stopni Serial.println(pozycja);// sprawdzam czy wszystko hula serwomechanizm.write(pozycja);//przesuwam w lewo lub prawo delay(100); } 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
PawełD Styczeń 18, 2018 Udostępnij Styczeń 18, 2018 Zadanie 5.4 wiem ze to było ponad 2 lata temu na topie, ale jako że to moje pierwsze w 100% samodzielnie zrobione zadanie domowe 😉 to muszę je tutaj wrzucić. 😅 __________ Komentarz dodany przez: Treker Kody programów należy umieszczać przez narzędzie KOD (znajdziesz je w edytorze pod ikonką "<>"). Dzięki niemu składania programów jest automatycznie kolorowana, a wtedy wszystkim znacznie łatwiej analizować wklejone programy. Proszę to poprawić - z góry dziękuję za zrozumienie i pomoc przy utrzymaniu porządku na forum. #include <Servo.h> // dodanie biblioteki odpowiedzialnej za serwa Servo serwomechanizm; // obiekt serwomechanizmu aby moc sie do niego //odwoływać String pozycja = ""; int pozycjaint = 0; void setup() { Serial.begin(9600); serwomechanizm.attach(9); // deklaracja podlaczenia serwa } void loop() { if(Serial.available()>0) { pozycja = Serial.readStringUntil('n'); Serial.println(pozycja); pozycjaint = pozycja.toInt(); if(pozycjaint>=0 && pozycjaint<=180){ serwomechanizm.write(pozycjaint); // komenda do wykonania ruchu serwa }else{ Serial.println("zla wartosc, podaj wartosc w zakresie 0-180"); } }} Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Styczeń 18, 2018 Udostępnij Styczeń 18, 2018 PawełD, witam na forum 🙂 Kurs jest cały czas aktualny, więc śmiało można się chwalić swoimi programami! Pamiętaj tylko, aby kody wklejać wewnątrz tagów . Dzięki temu inni będą mogli łatwiej analizować Twoje programy - popraw to proszę 😉 Cytuj Link do komentarza Share on other sites More sharing options...
PawełD Styczeń 19, 2018 Udostępnij Styczeń 19, 2018 zadanie 5.5 widzę, że if-a mogłem opuścić, ale jak już dałem to niech zostanie #include <Servo.h> // biblioteka serwa Servo serwo; // obiekt serwa int potencjometr = 0; void setup() { serwo.attach(9); //deklaracja podlaczenia serwa do pinu 9 } void loop() { potencjometr = analogRead(A5);//odczytanie wartosci potencjometru potencjometr = map(potencjometr, 0, 1015, 0, 180); //przeskalowanie zmiennej potencjometr z zakresu 0-1015 na 0-180 if(potencjometr>=0 && potencjometr <=180){ serwo.write(potencjometr); //komenda do wykonania ruchu } delay(100); } Cytuj Link do komentarza Share on other sites More sharing options...
Matas Luty 6, 2018 Udostępnij Luty 6, 2018 Cześć. 🙂 W zestawie, który kupiłem, razem ze stabilizatorem napięcia są dwa kondensatory - jeden ceramiczny (0.1 uF), drugi elektrolityczny (10uF). Czy ma jakieś znaczenie to gdzie podłącze który? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Luty 10, 2018 Udostępnij Luty 10, 2018 Matas, witam na forum 🙂 Na tym etapie testów nie zrobi to większej różnicy - możesz na początku podłączyć oba na wyjściu stabilizatora. Cytuj Link do komentarza Share on other sites More sharing options...
Matas Luty 12, 2018 Udostępnij Luty 12, 2018 Ok, dzięki za pomoc. 😉 Cytuj Link do komentarza Share on other sites More sharing options...
Marcin9405 Luty 14, 2018 Udostępnij Luty 14, 2018 Cześć, proszę o wyjaśnienie jak zrobic zadanie domowe 5.1 i 5.2 bo jestem ciekaw jak to zrobic i nie chce isc dalej bez tej wiedzy. Pozdrawiam 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Luty 15, 2018 Udostępnij Luty 15, 2018 Marcin9405, witam na forum 🙂 Chętnie pomogę, ale sprawdź może najpierw programy innych czytelników (znajdziesz ich wiele w tym temacie). Powinny naprowadzić Cie na rozwiązania. Jak utkniesz w jakimś konkretnym miejscu to daj wtedy znać i będziemy razem myśleć. Cytuj Link do komentarza Share on other sites More sharing options...
dexu Luty 19, 2018 Udostępnij Luty 19, 2018 zadanie domowe 5.4 Witam mam takie pytanie dlaczego po wpisaniu małego kąta o jaki ma się obrócić serwomechanizm (<12) wykonuje on ciągłe obroty o 360 stopni zamiast o kat ustalonej wartości? Ponizej kod programu. #include <Servo.h> //Biblioteka odpowiedzialna za serwa Servo serwo; //Tworzymy obiekt, dzięki któremu możemy odwołać się do serwa int zmiana = 0; //Co ile ma się zmieniać pozycja serwa? String odbior = ""; void setup() { serwo.attach(9); //Serwomechanizm podłączony do pinu 9 Serial.begin(9600); } void loop() { Serial.println(" Podaj kat przesuniecia ramienia sweromechanizmu"); while(Serial.available()==0){} odbior = Serial.readStringUntil('\n'); zmiana = odbior.toInt(); if(zmiana > 180 || zmiana < 0){ Serial.println(" Kąt przesuniecia ramienia sweromechanizmu musi znajdowac sie w przedziale od 0 do 180"); } else { serwo.write(zmiana); //Wykonaj ruch } } Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Luty 20, 2018 Udostępnij Luty 20, 2018 dexu, widocznie otrzymałeś serwo inne od tego, które jest opisywane w kursie (bez blokady mechanicznej). Jeśli kupiłeś zestaw w Botlandzie to poproś o wymianę - nie będzie z tym żadnego problemu 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
MrauMrauChan Luty 20, 2018 Udostępnij Luty 20, 2018 Dzień dobry Mam pewien problem odnośnie serwa. Po wpisaniu polecenia jego obrotu o kąt >175 stopni (ale mniejszy niż 180) dociera do tego punktu, przez chwilę się trzęsie a następnie zaczyna obracać się o 360 stopni. Czy to znaczy, że serwomechanizm jest uszkodzony ? Edit: Zauważyłem również , że kąty nie przebiegają prawidłowo, tj, różnica pomiędzy pozycją 0 stopni a pozycją 174 stopnie daje obrót o ponad 180 stopni 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!