Skocz do zawartości

Połączenie dwóch kodów.


marcelh2o

Pomocna odpowiedź

Mam dwa różne kody 1. przykładowy do sterowania silnikiem z adafruit motor shield i drugi do sterowania silnikami prawo/lewo za pomocą joysticka. Jak połączyć te dwa kody żeby za pomocą joysticka sterować silnikami, które są podłączone do adafruit motor shield?

define joystick  A0
#define mostekprawo 9
#define mosteklewo 10
int odczyt;

void setup()
{               
 pinMode(mostekprawo, OUTPUT);
 pinMode(mosteklewo, OUTPUT);
 analogWrite(mosteklewo, LOW);
 analogWrite(mostekprawo, LOW);
}

void loop()
{
odczyt = analogRead(joystick);
 if(odczyt < 507)
 {
   analogWrite(mosteklewo, LOW);
   odczyt = map(odczyt, 506, 0, 0, 255);
   analogWrite(mostekprawo, odczyt);
 }
else if(odczyt > 511)
 {
   analogWrite(mostekprawo, LOW);
   odczyt = map(odczyt, 512, 1023, 0, 255);
   analogWrite(mosteklewo, odczyt);
 }
 else //czyli od 507 do 511 - te "509" w pozycji "zerowej" +/- 2
 {
 analogWrite(mosteklewo, LOW);
 analogWrite(mostekprawo, LOW);
 }
}
/* 
This is a test sketch for the Adafruit assembled Motor Shield for Arduino v2
It won't work with v1.x motor shields! Only for the v2's with built in PWM
control

For use with the Adafruit Motor Shield v2 
---->	http://www.adafruit.com/products/1438
*/

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"

// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
// Or, create it with a different I2C address (say for stacking)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61); 

// Select which 'port' M1, M2, M3 or M4. In this case, M1
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
// You can also make another motor on port M2
//Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2);

void setup() {
 Serial.begin(9600);           // set up Serial library at 9600 bps
 Serial.println("Adafruit Motorshield v2 - DC Motor test!");

 AFMS.begin();  // create with the default frequency 1.6KHz
 //AFMS.begin(1000);  // OR with a different frequency, say 1KHz

 // Set the speed to start, from 0 (off) to 255 (max speed)
 myMotor->setSpeed(150);
 myMotor->run(FORWARD);
 // turn on motor
 myMotor->run(RELEASE);
}

void loop() {
 uint8_t i;

 Serial.print("tick");

 myMotor->run(FORWARD);
 for (i=0; i<255; i++) {
   myMotor->setSpeed(i);  
   delay(10);
 }
 for (i=255; i!=0; i--) {
   myMotor->setSpeed(i);  
   delay(10);
 }

 Serial.print("tock");

 myMotor->run(BACKWARD);
 for (i=0; i<255; i++) {
   myMotor->setSpeed(i);  
   delay(10);
 }
 for (i=255; i!=0; i--) {
   myMotor->setSpeed(i);  
   delay(10);
 }

 Serial.print("tech");
 myMotor->run(RELEASE);
 delay(1000);
}
Link do komentarza
Share on other sites

Spróbuj je przeczytać, zrozumieć co robią i na ich podstawie napisać trzeci. Dla ułatwienia zrozumienia co robią możesz je wgrywać na arduino, wstawiać dodatkowe printy, komentaować albo usuwać linijki i patrzeć co się stanie.

A poza tym poszukaj "blink without delay" i też go zrozum, przyda się.

Link do komentarza
Share on other sites

Zawsze zanim napiszę na forum to sprawdzę dużo różnych kombinacji bo celem moich projektów jest nauka ale jeśli już jestem w kropce i nie potrafię nic więcej ruszyć piszę na forum. Jeśli mi ktoś udzieli pomocy to zawsze analizuje jego kod.

Zauważyłem (nie tylko w moich postach) że jesteś na tym forum żeby nabijać sobie komntarze. Pomoc z Twojej strony to głównie :znajdz se, pomysl, da sie ale nie powiem bo muszisz sam. Jakbym potrafił sam połączyć te kody to na pewno bym tutaj nie pisał. Słabo troche z Twojej strony :/

Link do komentarza
Share on other sites

No cóż, zostałem zdemaskowany.

A tak na poważnie, zastanów się trochę co chcesz osiągnąć. Jeśli zależy ci tylko na zdalnie sterowanej zabawce, to po prostu pójdź do sklepu i kup gotową. Wyjdzie szybciej, taniej i mniej się zmęczysz. Ale jeśli chcesz się czegoś nauczyć, to to niestety już będzie wymagać wysiłku. Nie wejdę do twojej głowy i nie włożę do niej wiedzy.

Oczywiście bardzo dobrze, że piszesz na forum jak jesteś w kropce. Jeśli przeczytasz moją odpowiedź uważnie to zauważysz, że wskazałem ci kierunek poszukiwań. Próbowałeś nim podążyć? Spojrzałeś chociaż na kod, o którym wspomniałem? (Jest też całkiem szczegółowy artykuł objaśniający ten kod.) Jeśli nie, to może jednak warto spróbować, zamiast się obrażać?

Tak jak zauważyłeś, staram się nie dawać gotowych rozwiązań (najczęściej sam ich nie znam), ale nie odpowiadam jeśli nie mogę wskazać choć ogólnego kierunku poszukiwań, który mógłby pomóc. Jeśli nie takiej pomocy oczekujesz, to może zadaj jakieś bardziej szczegółowe pytanie. Czego konkretnie nie rozumiesz? Na czym się zaciąłeś? Jeśli nie ja, to na pewno ktoś inny pomoże i wskaże dalszą drogę. Natomiast czy nią pójdziesz -- to już tylko zależy od ciebie.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

Tak jak napisałem chciałbym sterować joistyckiem kilka silników, a do zmiany kierunku obrotów wykorzystam adafruit motor shiled. Podałem dwa przykładowe kody dla ułatwienia pracy, które trzeba połączyć w jeden (ja próbowałem nie potrafie). No nie mam pojęcia co tutaj jest niezrozumiałego 😋 Pytałem nawet na Oferia.pl ile taki kod kosztuje powiedzieli mi że 200 zł + czujniki więc stwierdziłem że to nie jest cena warta świeczki bo kod na pewno jest banalnie prosty dla kogos kto wie z czym to się je 🙂

Link do komentarza
Share on other sites

Pytałem nawet na Oferia.pl ile taki kod kosztuje powiedzieli mi że 200 zł + czujniki więc stwierdziłem że to nie jest cena warta świeczki bo kod na pewno jest banalnie prosty dla kogos kto wie z czym to się je

I co, oczekujesz że tutaj wstawi ktoś gotowca?

Na forum możesz uzyskać pomoc gdy porządnie opiszesz problem i napiszesz co sam próbowałeś zrobić. Wklejenie dwóch programów ściągniętych z Internetu się nie liczy niestety.

Link do komentarza
Share on other sites

To może i ja spróbuję podbić sobie licznik postów. Skoro jest okazja to dlaczego nie spróbować?

Chyba już zrozumiałeś, że raczej nikt za Ciebie kodu nie napisze. Nie dostaniesz też żadnych sensownych wskazówek jak łączyć dwa programy, bo po prostu - mimo że chyba tak do tej pory robiłeś - tak się programów nie tworzy. Działający program jest pewną zamkniętą całością i bardzo trudno opisać ogólny sposób łączenia dwóch takich tworów w jeden nowy, także poprawnie działający byt. To trochę jakbyś miał dwa wiersze dwóch różnych autorów i próbował napisać swój własny, trzeci przez połączenie tamtych dwóch. Czy domyślasz się jakie byś dostał p/odpowiedzi na forum młodych artystów? Podejrzewam, że nie nadające się do publikacji. Być może wciąż nie możesz w to uwierzyć, ale tu jest podobnie.

Nie chcąc przedłużać proponuję (za Kolegami) byś sam taki kod napisał - to naprawdę nie jest trudne. Przy okazji możesz przejść standardową ścieżkę tworzenia własnych programów od pomysłu do pracującego kodu. Jeśli się dobrze przyłożysz nie będą Ci już potrzebne takie kawałki jak pokazałeś, tak jak nie są potrzebne nikomu z bardziej zaawansowanych programistów. Wystarczą opisy bibliotek i ew. krótkie przykłady użycia nowych funkcji jeśli tekst jest czasem niejednoznaczny.

Na początek spróbuj opisać własnymi słowami co Twój program miałby robić. Żeby jednak nie iść w kompletną poezję spróbuj swoje plany formułować w postaci punktów. Co najpierw, co potem - krok po kroku opisz co program musiałby robić by spełniał Twoje cele. Na tym etapie nie chodzi o szczegóły. Możesz wstawiać punkty w rodzaju: "Odczyt dwóch napięć z joysticka" albo "Obliczenie koniecznego wysterowania silnika 1". To chyba potrafisz, prawda? A opis algorytmu to pierwszy krok do zbudowania każdego nietrywialnego kodu. Do roboty. Czekamy.

Acha i jeszcze jedno. Skoro masz joystick z dwoma potencjometrami to z punktu widzenia Arduino jego "wajha" jest punktem poruszającym się po płaszczyźnie XY. Pole to ograniczone jest kwadratem ze środkiem w położeniu neutralnym joya lub okręgiem - to zależy od konstrukcji mechanicznej. Zastanów się jak chcesz by kręciły się Twoje silniki we wszystkich punktach charakterystycznych tego kwadratu. Mam na myśli środek (gdzie pewnie oba napędy stoją), cztery rogi kwadratu i środki jego boków. Narysuj to sobie, nanieś prędkości silników (typu "stop", "max przód" czy "max tył") na kwadrat i pokaż go w następnym poście. Tak jak to narysujesz tak będzie jeździł Twój pojazd. Przemyśl to dobrze.

Link do komentarza
Share on other sites

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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.