Skocz do zawartości

mateusz797

Użytkownicy
  • Zawartość

    18
  • Rejestracja

  • Ostatnio

Reputacja

-1 Słaba

O mateusz797

  • Ranga
    2/10

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Ja sie interesuje robotyka for fun. Dla zabawy. Czyli wystarczy zeby robot jezdzil w roznym kierunkach poruszal ramieniem podnosil lekkie rzeczy. Tyle ja mysle ze przy konstrukcji ramienia jest konieczny sterownik serw. Wiecie moze jak polaczyc go ze sterownikiem L298N zeby kontrolowac padem silniki i serwa? Mam pomysl na : arduino mega, sterownik serw, sterownik silnikow L298N, zasilanie akumulator li-ion 11V, konstrukcja ramienia i podwozia to juz wlasny zakres.
  2. Cześć, Wiecie moze w jaki sposob mozna przy pomocy arduino sterowac padem xbox? Mam pomysl na skonstruowanie takiego robota ktory bedzie sterowany padem. Bedzie mogl jezdzic do tylu lewo w prawo i do przodu oraz bedzie mial ramie składaje sie z 6 serwomechanizmow. Sterowany bedzie padem do xboxa. Ktos moze ma jakies przejrzyste materialy zeby o tym poczytac lub wie czy wogole mozna zastosowac takie rozwiazanie. Pozdrawiam, Mateusz
  3. Wczesniej zakres odległości byl na 40 i 50cm. Jak robot podjezdzal pod kątem wskazywal odleglosc 2300cm od przeszkody i uderzal w nia z impetem. Teraz zmienilem parametry losowo. Zadziałalo Zakres odległości jest nast. : A. Jesli robot widzi przeszkode w odl mniejsze niz 50cm i większe od 500cm- skreca w prawo, B. Jesli 45cm w lewo. U mnie jest ustawione tak ze w zaleznosci co odczyta skreca w lewo lub w prawi i analizuje kazde pole wolna skrecajac. Tez jest dobre rozwiazanie. Jest mozliwosc zeby robot moj w przyszlosci skanowal dystans i tam gdzie jest miejsce skręcał? Trzeba by zastosowac instrukcje z for dla okreslonego kata serwa.
  4. Cześć, Po licznych testach robot zaczal poprawnie działac. Wykrywa przeszkody wykonane z różnych materialow pod każdym kątem. Miłego ogladania
  5. Dzień dobry, Poniższy program służył mi do nadawania poszczególnych stanów dla silników, stosowałem go podczas budowy robotów. Program ten poprawnie mi działał do dzisiejszego dnia, czyli - po podłączeniu do mostka silnika L298N, arduino oraz platformy robota . Zasada działania programu : robot na poczatku przez 6 sek jedzie prosto, potem do tyłu następnie skręca w prawo oraz w lewo. Dzisiaj zaczalem program testowac na innym podwoziu. Lewy nie chce kręcic się do przodu, tylko do tyłu się kręci, czyli poprawnie działają teraz komendy : a) Jazda do tyłu (bo lewy silnik się kreci do tyłu) b) skręt w lewo (bo lewy kręci sie o tyłu a prawy do przodu) Nie działają komendy: c) Jazda o przodu (kręci sie tylko prawy silnik, lewy się nie rusza) d) Skręt w prawo (kręci sie prawy silnik o tyłu, lewy sie nie rusza) Rozebrałem podwozie, Pojedynczo podlaczylem silniki do małej baterii, jak zmienilem biegunowość to po podłączeniu do baterii, kazdy silnik sie krecil w lewo lub w prawo (Tak jak bylo na poczatku ), Przekladnie sprawdzalem, nigdzie nie ma połamanych zębów, smarowanie jest. Problem tkwi w tym że po podłączeniu sterownika silnikow i arduino działają mi tylko teraz dwa kanały. Ja mam wrazenie ze musze nowy mostek H kupic, bo za lewy silnik jest odpowiedzialny jest ENA. Czy mieli Państwo podobny problem? Program mi działał dobrze całe dwa miesiace spr. na tym silniki. Dzisiaj sie coś stało, ze lewy silnik tylko o tyłu sie kręci const int IN1 = 7; const int IN2 = 6; const int IN3 = 4; const int IN4 = 5; const int ENA = 11; const int ENB = 3; void setup() { pinMode (IN1, OUTPUT); pinMode (IN2, OUTPUT); pinMode (IN3, OUTPUT); pinMode (IN4, OUTPUT); pinMode (ENA, OUTPUT); pinMode (ENB, OUTPUT); // put your setup code here, to run once: } void loop() { delay(4000); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(ENA, 80); // 80/256 predkosc analogWrite(ENB, 80); // Syt. 1 - Prosto delay(6000); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); // Syt. 2 - Jazda do tyłu analogWrite(ENA, 80); // 80/256 predkosc analogWrite(ENB, 80); delay(6000); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENA, 105); // skret w prawo analogWrite(ENB, 105); delay(6000); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(ENA, 105); // lewo analogWrite(ENB, 105); delay(6000); }
  6. Widze ze milej nie mozna z Toba pisac. Okey sam tego chciales. Jak masz tak hamsko odpowiadac to daruj sobie. Zglosilem Twoje odpowiedzi do admina tego forum. Dostaniesz bana
  7. Jak podlaczylem ENA pod pin 2 to dalej nie działa. Czemu? Mam arduino UNO. Szczegółowe podłaczenie mostka L298N ENA - 2, IN 1 - 7, IN 2- 6, IN 3 - 4 IN 4 - 5 ENB - 3 Piny : 3,5,6 - PWM, 7,4 nie maja tego znaczka PWM.
  8. Serwomechanizm bardzo dobrze działa. Podlaczylem go pod PIN 10. W tym artykule są komendy serwomechanizmu. A tutaj chodzi o to że jeden silnik się nie obraca. Ena jest do 9 pinu podłączony.
  9. Dzień dobry, W ostatnim czasie postanowiłem zbudować robota inspekcyjnego na bazie platformy arduino. Ma on na celu wykrywanie przeszkód oraz ich omijanie. Pierwszy program jaki napisałem miał na celu wysterowanie silników. Drugi program ma na celu wysterowanie silników w następujący sposób: a) Jesli przeszkoda oddalona jest wiecej niz 15cm robot ma jechac prosto - dwa silniki kreca sie w jednakowa strone b) Jesli przeszkoda oddalona jest o mniej niz 15 cm robot ma zatrzymac sie i skrecic w prawo, czyli lewy silnik ma sie krecic do przodu a prawy do tyłu. 1. Ponizszy program majacy na celu sprawdzenie wysterowania silnikow tylko działa prawidłowo - sterowanie silnikami , kupiłem nowy mostek H, silniki poprawnie sie przełączaja oraz obracaja sie w zaleznosci od wpisanych predkosci do programu (niepoprawnie działa tylko program nr 2 mimo nadania takich samych stanow logicznych oraz pinow dla silnikow) const int IN1 = 7; const int IN2 = 6; const int IN3 = 4; const int IN4 = 5; const int ENA = 9; const int ENB = 3; void setup() { pinMode (IN1, OUTPUT); pinMode (IN2, OUTPUT); pinMode (IN3, OUTPUT); pinMode (IN4, OUTPUT); pinMode (ENA, OUTPUT); pinMode (ENB, OUTPUT); } void loop() { delay(4000); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(ENA, 90); // 90/256 predkosc analogWrite(ENB, 90); // Syt. 1 - Prosto delay(4000); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENA, 90); analogWrite(ENB, 90); delay(4000); } 2. Program koncowy nie dziala poprawnie - obraca sie tylko prawy silnik w jedna strone , robot jak zauwazy przeszkode to obraca czujnik odleglosci na serwomechanizmie, ale nie skręca. Takie same sa ustawione piny i stany na silnikach. Kod : #include <LiquidCrystal_I2C.h> #include <Wire.h> // zalacz biblioteki #include <Servo.h> Servo myservo; const int trigPin = 12; const int echoPin = 11; const int IN1 = 7; const int IN2 = 6; const int IN3 = 4; const int IN4 = 5; const int ENA = 9; const int ENB = 3; LiquidCrystal_I2C lcd(0x27,16,2); float duration, distance; void setup() { lcd.init(); lcd.backlight (); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); myservo.attach(10); Serial.begin(9600); myservo.write(104); delay(500); myservo.write(180); delay(500); myservo.write(0); delay(500); myservo.write(104); delay(500); pinMode (IN1, OUTPUT); pinMode (IN2, OUTPUT); pinMode (IN3, OUTPUT); pinMode (IN4, OUTPUT); pinMode (ENA, OUTPUT); pinMode (ENB, OUTPUT); } void loop() { lcd.clear(); lcd.setCursor (0,0); lcd.print ("Odleglosc:"); lcd.setCursor (0,1); lcd.println (distance); lcd.setCursor (5,1); lcd.print ("cm"); digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration*.0343)/2; Serial.print("Distance: "); Serial.println(distance); delay(300); if (distance < 15){ myservo.write(180); delay(500); myservo.write(0); delay(500); myservo.write(104); delay(500); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENA, 120); // skret analogWrite(ENB, 120); } if (distance > 15){ digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(ENA, 120); // jazda prosto analogWrite(ENB, 120); } } W pliku rar zostaly spakowane 3 filmiki A) jeden pokazuje dzialanie pierwszego programu - poprawne przelaczanie oraz obroty z zadana predkoscia w programie silnikow B) Kiedy robot nie widzi przeszkody porusza jednym silnikiem - kiedy zauwazy takze cofa tylko jednym (Program nie działa poprawnie według zadanych komend w konsoli) C) Kiedy nie ma w instrukcjach programu czujnika odleglosci lcd oraz serwa robot na zadane komendy : jazda do przodu przez x sek potem skret w prawo, jazda do tyłu oraz w lewo radzi sobie świetnie. Pozostaje tylko do rozwiazania problem w punkcie B. Czy mogliby Państwo wyjasnic , moze ktos miał podobna sytuacje dlaczego dla drugiego programu obraca sie tylko prawy silnik a lewy wogole sie nie rusza? Downloads.rar C.rar
  10. Dzień dobry, W ostatnim czasie postanowiłem zbudować robota inspekcyjnego na bazie platformy arduino. Ma on na celu wykrywanie przeszkód oraz ich omijanie. Pierwszy program jaki napisałem miał na celu wysterowanie silników. Drugi program ma na celu wysterowanie silników w następujący sposób: a) Jesli przeszkoda oddalona jest wiecej niz 15cm robot ma jechac prosto - dwa silniki kreca sie w jednakowa strone b) Jesli przeszkoda oddalona jest o mniej niz 15 cm robot ma zatrzymac sie i skrecic w prawo, czyli lewy silnik ma sie krecic do przodu a prawy do tyłu. 1. Ponizszy program tylko nie działa prawidłowo - sterowanie silnikami , wg tych komend silniki powinny reagowac na wpisana w programie zmiane predkosci. Jak wpisalem np. 100 to kreca sie z taka sama predkoscia. Powinny piszczec lub wolno sie krecic. const int IN1 = 7; const int IN2 = 6; const int IN3 = 4; const int IN4 = 5; const int ENA = 9; const int ENB = 3; void setup() { pinMode (IN1, OUTPUT); pinMode (IN2, OUTPUT); pinMode (IN3, OUTPUT); pinMode (IN4, OUTPUT); pinMode (ENA, OUTPUT); pinMode (ENB, OUTPUT); } void loop() { delay(4000); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(ENA, 90); // 90/256 predkosc analogWrite(ENB, 90); // Syt. 1 - Prosto delay(4000); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENA, 90); // 90/256 predkosc analogWrite(ENB, 90); delay(4000); } 2. Program koncowy nie dziala poprawnie - obraca sie tylko prawy silnik w jedna strone , robot jak zauwazy przeszkode to obraca czujnik odleglosci na serwomechanizmie, ale nie skręca. Takie same sa ustawione piny i stany na silnikach. Kod : #include <LiquidCrystal_I2C.h> #include <Wire.h> // zalacz biblioteki #include <Servo.h> Servo myservo; const int trigPin = 12; const int echoPin = 11; const int IN1 = 7; const int IN2 = 6; const int IN3 = 4; const int IN4 = 5; const int ENA = 9; const int ENB = 3; LiquidCrystal_I2C lcd(0x27,16,2); float duration, distance; void setup() { lcd.init(); lcd.backlight (); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); myservo.attach(10); Serial.begin(9600); myservo.write(104); delay(500); myservo.write(180); delay(500); myservo.write(0); delay(500); myservo.write(104); delay(500); pinMode (IN1, OUTPUT); pinMode (IN2, OUTPUT); pinMode (IN3, OUTPUT); pinMode (IN4, OUTPUT); pinMode (ENA, OUTPUT); pinMode (ENB, OUTPUT); } void loop() { lcd.clear(); lcd.setCursor (0,0); lcd.print ("Odleglosc:"); lcd.setCursor (0,1); lcd.println (distance); lcd.setCursor (5,1); lcd.print ("cm"); digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration*.0343)/2; Serial.print("Distance: "); Serial.println(distance); delay(300); if (distance < 15){ myservo.write(180); delay(500); myservo.write(0); delay(500); myservo.write(104); delay(500); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENA, 120); // skręt analogWrite(ENB, 120); } if (distance > 15){ digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(ENA, 120); // jazda prosto analogWrite(ENB, 120); } }
  11. Dziękuję za przesłanie artykuły. Powiem szczerze że niewiele rozumiem z tego kodu bo to typowy język C jest. Ja programuje w Arduino czysto dla funu. Nie rozumiem języka C bo są trudniejsze instrukcje. Z tego artykułu też niewiele wyciągnąłem. Na if i Else jest proste rozwiązanie. W arduino nie wiedziałbym jak taki program z regulatorem PID napisać.
  12. Robot został już zbudowany. Prezentuje Państwu filmik jego działania. Warunki if oraz Else if się sprawdzają. Pozdrawiam! Mateusz Pomorski
  13. Filmik pokazuje działanie robota. Niestety chyba robót nie wie co ma robić. Krąży w kółko czasami
  14. Zanim załączę silniki będę musiał naładować robota. Zamówiłem ładowarkę. Jeżeli nie podziała już i robót będzie zjeżdżał z trasy po tym to będą możliwe 3 przyczyny : A. Czujniki źle odczytują pomiar B. Czujniki źle przekazują do silników C. Układ się poprostu zacina jak komputer. Test ma trasie zdany. Pomógł Twój program ten co 4 czujniki trzeba było wpisać. Dziękuję!
  15. Dziękuję za podpowiedź. Efekty Czyli wiemy że pomogła wysokość czujników oraz poprawność programu. LCD clear. Czy mogę teraz pisać komendy dla silników? Linia jest gruba bo robót się gubi przy niewielkiej. Mało tego. Robót czasami z opóźnieniem zmienia napisy na wyświetlaczu. Płynnie nie zmienia.
×
×
  • Utwórz nowe...