Navers Napisano Sierpień 27, 2019 Udostępnij Napisano Sierpień 27, 2019 Witam, Jestem jeszcze zielony jeśli chodzi o Arduino , ale postanowiłem zbudować swojego pierwszego robota ,na bazie pomysłu pewnego użytkownika Youtube. Napotkałem pewien problem, otóż mój motor Servo,który jest połączony z ultrasensorem cały czas się kręci .Wykonuje swoje zadanie ,czyli po napotkaniu jakiejś przeszkody obraca się tak jak powinien , tylko później nadal się kręci . Czy ktoś mógłby mi pomóc rozwiązać ten problem, ponieważ brakuje mi tylko tej jednej rzeczy do ukończenia całego robota. Bardzo proszę o choćby najmniejszą pomoc 😉 Poniżej kod jaki został wprowadzony do Arduino, jeśli chodzi o Servo: void quaycbsangtrai() { myservo.write(180); delay(1000); dokhoangcach(); myservo.write(90); } void quaycbsangphai() { myservo.write(0); delay(1000); dokhoangcach(); myservo.write(90); } void resetservo() { myservo.write(90); } Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Sierpień 27, 2019 Udostępnij Sierpień 27, 2019 @Navers wklej cały program, bo z tego fragmentu nic nie wynika 😉 Cytuj Link do komentarza Share on other sites More sharing options...
Navers Sierpień 27, 2019 Autor tematu Udostępnij Sierpień 27, 2019 (edytowany) #include <Servo.h> Servo myservo; // create servo object to control a servo int pos = 0; // variable to store the servo position const int trig = 6; const int echo = 5; int tien1 = 10; int tien2 = 11; int lui1 = 12; int lui2 = 13; int dongcoservo = 9; int gioihan = 15; int i; int x = 0; unsigned long thoigian; int khoangcach; int khoangcachtrai, khoangcachphai; int maxspeed=30; void dokhoangcach(); void dithang(int duongdi); void disangtrai(); void disangphai(); void dilui(); void resetdongco(); void quaycbsangphai(); void quaycbsangtrai(); void setup() { // put your setup code here, to run once: myservo.attach(9); pinMode(trig, OUTPUT); pinMode(echo, INPUT); pinMode(tien1, OUTPUT); pinMode(tien2, OUTPUT); pinMode(lui1, OUTPUT); pinMode(lui2, OUTPUT); digitalWrite(tien1, LOW); digitalWrite(tien2, LOW); digitalWrite(lui1, LOW); digitalWrite(lui1, LOW); myservo.write(90); delay(500); } void loop() { khoangcach = 0; dokhoangcach(); if (khoangcach > gioihan || khoangcach == 0) { dithang(); } else { resetdongco(); quaycbsangtrai(); dokhoangcach(); khoangcachtrai = khoangcach; quaycbsangphai(); dokhoangcach(); khoangcachphai = khoangcach; if (khoangcachphai < 30 && khoangcachtrai < 30) { dilui(); } else { if (khoangcachphai >= khoangcachtrai) { disangphai(); delay(500); } if (khoangcachphai < khoangcachtrai) { disangtrai(); delay(500); } } } } void dithang() { digitalWrite(tien1, HIGH); digitalWrite(tien2, HIGH); } void disangphai() { resetdongco(); digitalWrite(lui1, HIGH); delay(900); digitalWrite(lui1, LOW); } void disangtrai() { resetdongco(); digitalWrite(lui2, HIGH); delay(900); digitalWrite(lui2, LOW); } void dilui() { resetdongco(); for (i = 0; i < 20; i++) digitalWrite(lui1, HIGH); digitalWrite(lui2, HIGH); delay(1000); digitalWrite(lui1, LOW); digitalWrite(lui2, LOW); } void resetdongco() { digitalWrite(tien1, LOW); digitalWrite(tien2, LOW); digitalWrite(lui1, LOW); digitalWrite(lui2, LOW); } void dokhoangcach() { digitalWrite(trig, LOW); delayMicroseconds(2); digitalWrite(trig, HIGH); delayMicroseconds(10); digitalWrite(trig, LOW); // Đo độ rộng xung HIGH ở chân echo. thoigian = pulseIn(echo, HIGH); khoangcach = thoigian / 2 / 29.412; } void quaycbsangtrai() { myservo.write(180); // tell servo to go to position in variable 'pos' delay(1000); dokhoangcach(); myservo.write(90); // tell servo to go to position in variable 'pos' } void quaycbsangphai() { myservo.write(0); // tell servo to go to position in variable 'pos' delay(1000); dokhoangcach(); myservo.write(90); // tell servo to go to position in variable 'pos' } void resetservo() { myservo.write(90); } myservo.write(90); } Edytowano Sierpień 27, 2019 przez Navers Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Sierpień 27, 2019 Udostępnij Sierpień 27, 2019 Zauważyłeś może nad edytorkiem takie coś z napisem "wstaw kod"? Popraw ten post, bo na razie nikt nie będzie analizował tych wypocin. Tak przy okazji... fajnie że nazywasz funkcje i zmienne w ojczystym języku, ale trzymajmy się może języków obowiązujących w UE. Łatwiej jest analizować kod w którym funkcja nazywa się "turnLeft" niż taki z "pashowTyV3pindyKitajskohoBoha". 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
Navers Sierpień 27, 2019 Autor tematu Udostępnij Sierpień 27, 2019 Przepraszam ,jestem nowy na forum . Teraz już będę zwracał uwagę 😉 Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Sierpień 27, 2019 Udostępnij Sierpień 27, 2019 Nie przepraszaj a popraw. Cytuj Link do komentarza Share on other sites More sharing options...
rafalini Sierpień 27, 2019 Udostępnij Sierpień 27, 2019 7 godzin temu, ethanak napisał: Tak przy okazji... fajnie że nazywasz funkcje i zmienne w ojczystym języku, ale trzymajmy się może języków obowiązujących w UE. Łatwiej jest analizować kod w którym funkcja nazywa się "turnLeft" niż taki z "pashowTyV3pindyKitajskohoBoha". Naprawdę chciałbyś nazw funkcji po łotewsku lub po maltańsku? W UE obowiązują 24 języki urzędowe: https://europa.eu/european-union/about-eu/eu-languages_pl Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Sierpień 28, 2019 Udostępnij Sierpień 28, 2019 9 godzin temu, rafalini napisał: W UE obowiązują 24 języki urzędowe: Jednak wolę łotewski niż wietnamski 😉 Poza tym zawsze jest szansa że trafi się język który przynajmniej rozumiem 😉 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!