Skocz do zawartości

TurBan

Użytkownicy
  • Zawartość

    31
  • Rejestracja

  • Ostatnio

Reputacja

1 Neutralna

O TurBan

  • Ranga
    3/10

Informacje

  • Płeć
    Mężczyzna
  1. Treker dzięki wielkie !!! Wystarczyło tylko wstawić || zamiast && i tygodniowy problem rozwiązany !!!
  2. Witam Otóż rzecz polega na tym, że (prawdopodobnie) w programie odbiornika, w void loop, mam błędnie sformułowane instrukcje do komendy stopp. Problem jaki mam, to gdy pchnę joystick np. do przodu to gdy go puszczę, żeby powrócił do pozycji zero, to silniki kręcą się dalej w tym kierunku , którym był ostatnio wysyłany sygnał, tylko, że wolniej (tak jakby Arduino nie wiedziało co ma zrobić dla pozycji zerowej joysticka).Problem na pewno leży w programie, bo w ramach testu ustawiłem w "void forward" wszystkie silniki na LOW i kiedy pchnąłem joystick do przodu to koła się zatrzymały. Może to chodzi o to, że w kodzie nadajnika nie ma val pod stop stworzonego? Ps. Jazda w przód, tył lewo, prawo działa bez zarzutu, tylko zatrzymanie kół nie działa. Nadajnik #include <SPI.h> #include "RF24.h" RF24 radio(9,10); const uint64_t pipe = 0xE8E8F0F0E1LL; int msg[1]; int potpin_1 = A0; // VRy z modułu joysticka int val_1; int potpin_2 = A1; // VRx z modułu joysticka int val_2; void setup(void){ radio.begin(); radio.openWritingPipe(pipe); } void loop() { //przypisanie wysyłanej informacji odpowiednim wychyleniom potencjometrów val_1 = analogRead(potpin_1); val_1 = map(val_1, 0, 1023, 71, 170); msg[0] = val_1; radio.write(msg, 1); val_2 = analogRead(potpin_2); val_2 = map(val_2, 0, 1023, 1, 70); msg[0] = val_2; radio.write(msg, 1); } Odbiornik #include <SPI.h> #include "RF24.h" RF24 radio(9,10); const uint64_t pipe = 0xE8E8F0F0E1LL; int msg[1]; int data; int pos; int sspeed; // prędkość const int ena = 5; // PWM pin do zmiany prędkości //silnik-lewy tył const int in1t = 4; const int in2t = 2; //silnik-prawy tył const int in12t = 8; const int in22t = 7; void setup() { pinMode(ena, OUTPUT); pinMode(in1t, OUTPUT); pinMode(in2t, OUTPUT); pinMode(in12t, OUTPUT); pinMode(in22t, OUTPUT); delay(50); radio.begin(); radio.openReadingPipe(1,pipe); radio.startListening(); } void loop() //przypisanie odbieranym sygnałom odpowiednich czynności { if (radio.available())radio.read(msg, 1); if (msg[0] >0 && msg[0] <30){data = msg[0]; sspeed = map(data, 0, 30, 255, 50); right(sspeed);} if (msg[0] >40 && msg[0] <70){data = msg[0]; sspeed = map(data, 700, 40, 255, 50); left(sspeed);} if (msg[0] >70 && msg[0] <115){data = msg[0]; sspeed = map(data, 71, 115, 255, 50); backward(sspeed);} if (msg[0] >125 && msg[0] <170){data = msg[0]; sspeed = map(data, 170, 124, 255, 50); forward(sspeed);} if ((msg[0] >=115 && msg[0] <=125)&&(msg[0] >=30 && msg[0] <=40)){data = msg[0]; stopp(); } } void stopp() { analogWrite(ena, 0); digitalWrite(in1t, LOW); digitalWrite(in2t, LOW); digitalWrite(in12t, LOW); digitalWrite(in22t, LOW); } void forward(int sspeed) //jazda w przód { digitalWrite(in1t, HIGH); digitalWrite(in12t, HIGH); digitalWrite(in2t, LOW); digitalWrite(in22t, LOW); analogWrite(ena, sspeed); } void backward(int sspeed) //jazda w tył { digitalWrite(in1t, LOW); digitalWrite(in12t, LOW); digitalWrite(in2t, HIGH); digitalWrite(in22t, HIGH); analogWrite(ena, sspeed); } void left(int sspeed) // prawe silniki do przodu, a lewe do tyłu { digitalWrite(in1t, LOW); digitalWrite(in12t, HIGH); digitalWrite(in2t, HIGH); digitalWrite(in22t, LOW); analogWrite(ena, sspeed); } void right(int sspeed) // lewe silniki do przodu, a prawe do tyłu { digitalWrite(in1t, HIGH); digitalWrite(in12t, LOW); digitalWrite(in2t, LOW); digitalWrite(in22t, HIGH); analogWrite(ena, sspeed); } Z góry dzięki
  3. Dobra, znalazłem przyczynę okazało się, że do silników jak i do serw przypisałem ten sam pin, prze to jak sterowałem to program się gubił w wartościach, teraz jak pozmieniałem piny w programie to wszystko działa!!! Dzięki za pomoc! Temat można zamknąć
  4. Nawet jak fizycznie odłączę to serwo i poruszę potencjometrem to zaczynają wariować pozostałe (tak jakby każde dostawało sygnał z tego potencjometru).
  5. Dobra, naładowałem akumulator i sprawa wygląda tak: mogę sterować każdym serwem, ale jak steruje serwo przypisane do potencjometru A8 to wtedy zaczynają się wariacje z resztą. Myślałem, że coś z serwem jest nie tak i pozamieniałem serwa pinami na arduino i niestety dalej przy sterowaniu serwem przypisanym do A8 wszystko wariuje. Możecie proszę sprawdzić czy w kodzie wszystko się zgadza? (pin 8 dla val 8, dla servo6).
  6. No może i tak zrobiłem, i może tak działało jak robiłem cały przewodowo na jednym arduino.
  7. zasilam 6v/8,4Ah i właśnie zobaczyłem, że woltomierz zaczął wskazywać 5,2v, także zobaczę jak naładuje się akumulator czy wszystko wtedy chodzi, a co do UART to zapomniałem wsumie sprawdzić, dzięki !
  8. Chyba jednak tak, arduino ma swoje zasilanie, serwa swoja i maja wspólną masę.
  9. Witam Korzystam z arduino Mega 2560, a do serw mam podpięte osobne wystarczające zasilanie. Otóż mój problem polega na tym, że przy sterowaniu jednym serwem inne zaczynają drgać. Najlepiej da się to zauważyć przy sterowaniu serwa powiązanego z potencjometrem podpiętym do A8, wtedy zaczyna drgać serwo powiązane z A6 ( piszę tu skrótowo, wszystko widać na kodzie). Wie ktoś jak można temu zaradzić? problem w tym, że sygnał jest niewyraźny, czy jakieś wartości/sygnały się mieszają? Tam znajdują się jeszcze silniki dc, do których są te wiersze ze skrętami itp. Nadajnik #include <SPI.h> #include "RF24.h" RF24 radio(9,10); const uint64_t pipe = 0xE8E8F0F0E1LL; int msg[1]; int potpin_1 = A0; // VRy z modułu joysticka int val_1; int potpin_2 = A1; // VRx z modułu joysticka int val_2; int potpin_3 = A3; // potencjometr do sterowania serwomechanizmem int val_3; int potpin_4 = A4; // potencjometr do sterowania serwomechanizmem int val_4; int potpin_5 = A5; // potencjometr do sterowania serwomechanizmem int val_5; int potpin_6 = A6; // potencjometr do sterowania serwomechanizmem int val_6; int potpin_7 = A7; // potencjometr do sterowania serwomechanizmem int val_7; int potpin_8 = A8; // potencjometr do sterowania serwomechanizmem int val_8; void setup(void){ radio.begin(); radio.openWritingPipe(pipe); } void loop() { //przypisanie wysyłanej informacji odpowiednim wychyleniom potencjometrów val_1 = analogRead(potpin_1); val_1 = map(val_1, 0, 1023, 71, 170); msg[0] = val_1; radio.write(msg, 1); val_2 = analogRead(potpin_2); val_2 = map(val_2, 0, 1023, 0, 70); msg[0] = val_2; radio.write(msg, 1); val_3 = analogRead(potpin_3); val_3 = map(val_3, 0, 1023, 171, 184); msg[0] = val_3; radio.write(msg, 1); val_4 = analogRead(potpin_4); val_4 = map(val_4, 0, 1023, 186, 198); msg[0] = val_4; radio.write(msg, 1); val_5 = analogRead(potpin_5); val_5 = map(val_5, 0, 1023, 200, 212); msg[0] = val_5; radio.write(msg, 1); val_6 = analogRead(potpin_6); val_6 = map(val_6, 0, 1023, 214, 226); msg[0] = val_6; radio.write(msg, 1); val_7 = analogRead(potpin_7); val_7 = map(val_7, 0, 1023, 228, 240); msg[0] = val_7; radio.write(msg, 1); val_8 = analogRead(potpin_8); val_8 = map(val_8, 0, 1023, 242, 254); msg[0] = val_8; radio.write(msg, 1); } Odbiornik #include <Servo.h> #include <SPI.h> #include "RF24.h" RF24 radio(9,10); const uint64_t pipe = 0xE8E8F0F0E1LL; int msg[1]; int data; int pos; Servo servo1; Servo servo2; Servo servo3; Servo servo4; Servo servo5; Servo servo6; int sspeed; // prędkość //silnik-lewy przód const int in1 = 15; const int in2 = 14; const int ena = 5; // PWM pin do zmiany prędkości //silnik-lewy tył const int in1t = 4; const int in2t = 2; //silnik-pawy przód const int in12 = 17; const int in22 = 16; //silnik-prawy tył const int in12t = 8; const int in22t = 7; void setup() { servo1.attach(6); servo2.attach(3); servo3.attach(4); servo4.attach(5); servo5.attach(2); servo6.attach(7); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(ena, OUTPUT); pinMode(in1t, OUTPUT); pinMode(in2t, OUTPUT); pinMode(in12, OUTPUT); pinMode(in22, OUTPUT); pinMode(in12t, OUTPUT); pinMode(in22t, OUTPUT); delay(50); radio.begin(); radio.openReadingPipe(1,pipe); radio.startListening(); } void loop() //przypisanie odbieranym sygnałom odpowiednich czynności { if (radio.available())radio.read(msg, 1); if (msg[0] >0 && msg[0] <30){data = msg[0]; sspeed = map(data, 0, 30, 255, 50); right(sspeed);} if (msg[0] >40 && msg[0] <70){data = msg[0]; sspeed = map(data, 700, 40, 255, 50); left(sspeed);} if (msg[0] >70 && msg[0] <115){data = msg[0]; sspeed = map(data, 71, 115, 255, 50); backward(sspeed);} if (msg[0] >125 && msg[0] <170){data = msg[0]; sspeed = map(data, 170, 124, 255, 50); forward(sspeed);} if ((msg[0] >=115 && msg[0] <=125)&&(msg[0] >=30 && msg[0] <=40)){data = msg[0]; stopp(); } if (radio.available())radio.read(msg, 1); if (msg[0] <184 && msg[0] >170){data = msg[0]; pos = map(data, 171, 183, 0, 180); servo1.write(pos);} if (msg[0] <198 && msg[0] >185){data = msg[0]; pos = map(data, 186, 197, 0, 180); servo2.write(pos);} if (msg[0] <212 && msg[0] >199){data = msg[0]; pos = map(data, 200, 211, 0, 180); servo3.write(pos);} if (msg[0] <226 && msg[0] >213){data = msg[0]; pos = map(data, 214, 225, 0, 180); servo4.write(pos);} if (msg[0] <240 && msg[0] >227){data = msg[0]; pos = map(data, 228, 239, 0, 180); servo5.write(pos);} if (msg[0] <254 && msg[0] >241){data = msg[0]; pos = map(data, 242, 253, 0, 180); servo6.write(pos);} delay(15); } void stopp() { analogWrite(ena, 0); digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in12, LOW); digitalWrite(in22, LOW); digitalWrite(in1t, LOW); digitalWrite(in2t, LOW); digitalWrite(in12t, LOW); digitalWrite(in22t, LOW); } void forward(int sspeed) //jazda w przód { digitalWrite(in1, HIGH); digitalWrite(in12, HIGH); digitalWrite(in2, LOW); digitalWrite(in22, LOW); digitalWrite(in1t, HIGH); digitalWrite(in12t, HIGH); digitalWrite(in2t, LOW); digitalWrite(in22t, LOW); analogWrite(ena, sspeed); } void backward(int sspeed) //jazda w tył { digitalWrite(in1, LOW); digitalWrite(in12, LOW); digitalWrite(in2, HIGH); digitalWrite(in22, HIGH); digitalWrite(in1t, LOW); digitalWrite(in12t, LOW); digitalWrite(in2t, HIGH); digitalWrite(in22t, HIGH); analogWrite(ena, sspeed); } void left(int sspeed) // prawe silniki do przodu, a lewe do tyłu { digitalWrite(in1, LOW); digitalWrite(in12, HIGH); digitalWrite(in2, HIGH); digitalWrite(in22, LOW); digitalWrite(in1t, LOW); digitalWrite(in12t, HIGH); digitalWrite(in2t, HIGH); digitalWrite(in22t, LOW); analogWrite(ena, sspeed); } void right(int sspeed) // lewe silniki do przodu, a prawe do tyłu { digitalWrite(in1, HIGH); digitalWrite(in12, LOW); digitalWrite(in2, LOW); digitalWrite(in22, HIGH); digitalWrite(in1t, HIGH); digitalWrite(in12t, LOW); digitalWrite(in2t, LOW); digitalWrite(in22t, HIGH); analogWrite(ena, sspeed); }
  10. hahahah o co ci chodzi? hahaha. Zawsze odpowiadasz nie na temat, albo jakoś bezsensownie. Jak nie wiesz to nie odpisuj. Gąsienica to gąsienica, ma jeździć po wszystkim.
  11. Witam Chce zrobić gąsienice taką jak na zdjęciu, tylko, że mam problem z wyborem materiału :/ . Zastanawiam się nad wyborem blachy nierdzewnej H18, bo ma dobrą odporność na korozje, wytrzymałość mechaniczną i słabo przewodzi ciepło, ale jest twarda przez co ciężko mi będzie zawinąć blaszkę. Druga to blacha aluminiowa 1050A, też odporna na korozje, ale przewodzi ciepło i jest plastyczna, dzięki czemu łatwo ją zawinę ale nie wiem czy ta plastyczność nie spowoduje odkształceń podczas jazdy po np. kamienistym torze. Na ogniwo będzie jeszcze naklejona guma zrobiona z dętki rowerowej. Jaki materiał byłby najlepszy do tych ogniw? z góry Dzięki
  12. Witam Potrzebowałbym opinii na temat tego serwa https://botland.com.pl/serwa-typu-standard/3576-serwo-powerhd-lf-20mg-standard.html lub jeżeli znacie jakieś dobre serwo o sile +- 20 kg do 100 zł to podajcie jego nazwę, bo po przygodach z TowerPro 995 wolę się najpierw upewnić czy warto to kupować. Serwo ogólnie jest potrzebne do poruszania się ramienia robota. Z góry dzięki
  13. Ogólnie to odradzałbym ci tych serw, bo u mnie miały słabą dokładność , nie mogły znaleźć stabilnego punktu (tykały) i po pewnym czasie się paliły. Ogólnie jest chińskie bardzie, które nie opłaca się kupić
  14. To we wszystkich 7 serwach jest jakiś okruszek w przekładniach że tak powiem niemożliwością fizyczną
  15. Jeżeli chodzi o tranzystory to palą się oba a jedyne co wytwarza ciepło w tym momencie to ten palący sie tranzystor
×
×
  • Utwórz nowe...