Skocz do zawartości

Arduino Mega + Cytron MDD10


Piotrek95

Pomocna odpowiedź

Witam

Zaznaczę na początku że jestem kompletnie początkujący w tym temacie.

Sytuacja następująca posiadam Arduino Mega260 i do niego shield cytron MDD10. Mam podłączone zasilanie, silnik pod wyjścia M1A I M1B i chciałbym teraz sterować jego prędkością oraz kierunkiem za pomocą joysticka(tylko w osi X). Mialem wcześniej układ gdzie sterowałem silnikiem(L298N) ale bez tego shielda i wszystko było ok teraz próbuje sklecić coś do tego zestawu(musiałem dać mocniejszy silnik) ale nic mi nie wychodzi próbowałem przerobić gotowe projekty ale jest ich dość mało w tym zestawieniu a w zasadzie prawie ich nie ma. Joystick podłączony GND do GND na plytce 5V DO 5V i jedno pod analog A0.

Czy ktoś pomoże napisać kod?

Link do komentarza
Share on other sites

#include <CytronMotorDriver.h>

int pwm1 = 10;
int dir1 = A0;
int joy = A1;
int speed = 0;

void setup()
{
  pinMode(pwm1, OUTPUT);
  pinMode(dir1, OUTPUT);
  pinMode(joy, INPUT);
 }
void loop()
{
  pwm1 = analogRead(joy);

  if(pwm1<509)
  {
  digitalWrite(dir1, HIGH);

    speed = (pwm1, 0, 509, 0, 255);
  }

  else if ( pwm1 > 520)
  {
 digitalWrite(dir1, -HIGH);

 speed = (pwm1, 520, 1023, 0, 255);
  }
analogWrite(pwm1, speed);
}

 

Coś takiego udało mi się wysmarować .

Połączone jest następująco :

Joystick :

GND - GND

VCC - 5V

S-X - A1

10 - PWM(na shieldzie)

A0 - DIR (na shieldzie)

Oczywiście nie działa, reakcja jest taka że palą się diody od 2 kanałów w jeden kierunek (na shieldzie).

 

Ktoś coś ? 89038064_2575020189491739_6224098517523103744_n.thumb.jpg.2b890b9a20fe4a16a68aee6a72767944.jpg

Link do komentarza
Share on other sites

#include <CytronMotorDriver.h>

int pwm1 = 10;
int dir1 = A0;
int joy = A1;
int speed = 0;
int ruch = 514;
void setup()
{
  pinMode(pwm1, OUTPUT);
  pinMode(dir1, OUTPUT);
  pinMode(joy, INPUT);
 }
void loop()
{
  ruch = analogRead(joy);

  if(ruch < 509)
  {
  digitalWrite(dir1, HIGH);

    speed = (ruch, 0, 509, 0, 255);
  }

  else if ( ruch > 520)
  {
 digitalWrite(dir1, HIGH);

 speed = (ruch, 520, 1023, 0, -255);
  }
analogWrite(ruch, speed);
}

Mały update reaguje na kierunki ale problem jest taki że nie zawsze jakby łapie i do tego działają dwa kanały a powinien jeden nie wiem o co chodzi ?

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.