• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zdalnie sterowany robot na module RF 433 Mhz
#11
Tak zgadza się, chciałem Ci tylko podesłać rozpiskę jak to ogólnie wygląda w przypadku tego shielda.
 
Odpowiedź
#12
nadajnik do z joy 2
Kod:
#include <VirtualWire.h>
const int transmit_pin = 3; // do tego pinu pin TX nadajnika XY-FST
int joystickPion = A0; // pin joysticka dla pionu
int joystickPoziom=A1; // pin joysticka dla poziomu
int joystickPion1 = A2; // pin joysticka dla pionu
int joystickPoziom1=A3; // pin joysticka dla poziomu
int a,b,c,d; // zmienne pomocnicze do obliczeń
long X = 0; // zmienna wynikowa, do przetworzenia w wiadomości
char wiadomosc[10]; // wiadomość tekstowa
// ------------------------------------------------------------------------------
void setup()
{
Serial.begin(9600);
// konfiguracja nadajnika i protokołu transmisji
vw_set_tx_pin(transmit_pin);
vw_set_ptt_inverted(true);
vw_setup(2000);
}
// -----------------------------------------------------------------------------
void loop() {
// czytamy stan manetek joysticka
a=analogRead(joystickPion);Serial.println(a);
b=analogRead(joystickPoziom);Serial.println(b);Serial.println("------");
X = a+b*1024L; // przetwarzamy stany na liczbę
ltoa(X, wiadomosc,10);  // zamiana liczby na text do wysłania
vw_send((uint8_t *)wiadomosc, strlen(wiadomosc));  // wysłanie wiadomości
vw_wait_tx();    
c=analogRead(joystickPion1);Serial.println(c);
d=analogRead(joystickPoziom1);Serial.println(d);Serial.println("------");
X = c+d*1024L; // przetwarzamy stany na liczbę
ltoa(X, wiadomosc,10);  // zamiana liczby na text do wysłania
vw_send((uint8_t *)wiadomosc, strlen(wiadomosc));  // wysłanie wiadomości
vw_wait_tx();                                      // konieczne dla skomunikowania modułów Nad.-Odb.
// konieczne dla skomunikowania modułów Nad.-Odb.
}


tak ma wyglodac koncowa wersja nadajnika
Kod:
#include <VirtualWire.h>
const int transmit_pin = 3; // do tego pinu pin TX nadajnika XY-FST
int joystickPion = A0; // pin joysticka dla pionu
int joystickPoziom=A1; // pin joysticka dla poziomu
int joystickPion1 = A2; // pin joysticka dla pionu
int joystickPoziom1=A3; // pin joysticka dla poziomu
int a,b,c,d; // zmienne pomocnicze do obliczeń
long X = 0; // zmienna wynikowa, do przetworzenia w wiadomości
long X1 = 0; // zmienna wynikowa, do przetworzenia w wiadomości
char wiadomosc[10]; // wiadomość tekstowa
// ------------------------------------------------------------------------------
void setup()
{
Serial.begin(9600);
// konfiguracja nadajnika i protokołu transmisji
vw_set_tx_pin(transmit_pin);
vw_set_ptt_inverted(true);
vw_setup(2000);
}
// -----------------------------------------------------------------------------
void loop() {
// czytamy stan manetek joysticka
a=analogRead(joystickPion);Serial.println(a);
b=analogRead(joystickPoziom);Serial.println(b);Serial.println("------");
X = a+b*1024L; // przetwarzamy stany na liczbę
ltoa(X, wiadomosc,10);  // zamiana liczby na text do wysłania
vw_send((uint8_t *)wiadomosc, strlen(wiadomosc));  // wysłanie wiadomości
vw_wait_tx();    
c=analogRead(joystickPion1);Serial.println(a);
d=analogRead(joystickPoziom1);Serial.println(b);Serial.println("------");
X1 = c+d*1024L; // przetwarzamy stany na liczbę
ltoa(X1, wiadomosc,10);  // zamiana liczby na text do wysłania
vw_send((uint8_t *)wiadomosc, strlen(wiadomosc));  // wysłanie wiadomości
vw_wait_tx();                                      // konieczne dla skomunikowania modułów Nad.-Odb.
// konieczne dla skomunikowania modułów Nad.-Odb.
}



na testach polegam na tobie sprawdź to czy działa na 1 joyu i opisz co nie tak jak by cos bylo zle
Kod:
//Odbiornik:

//Kod:
#include <VirtualWire.h>
// --- piny dla układu L293D ( nie możesz używać pinu nr 3 !!! )------
#define IN1 2   // dla silnika 1 (przód-tył)
#define IN2 4   // dla silnika 1 (przód-tył)
#define EN1 10  // koniecznie pin PWM (~)
#define IN3 6   // dla serwa (lewo-prawo)
#define IN4 7   // dla serwa (lewo-prawo)
#define EN2 11  // koniecznie pin PWM (~)
// --- moce silników -------------------------------------------------
int PWM1;
int PWM2;
// --- zmienne -------------------------------------------------------
char *kierunek; // kierunek ruchu, potrzebne tylko dla Seriala :-)
long X; // stan joysticka XY (przetworzona wiadomość)
// --- dla modułu XY-MK ----------------------------------------------
const int receive_pin = 3; // koniecznie ten pin
char wiadomosc[10]; // odebrana wiadomość
// -------------------------------------------------------------------
void setup()
{
Serial.begin(9600);
vw_set_rx_pin(receive_pin); // konfiguracja odbiornika
vw_set_ptt_inverted(true); // konfiguracja protokołu
vw_setup(2000);             // konfiguracja protokołu
vw_rx_start();              // start odbiornika

// --- konfiguracja pinów ------------------------------------------
pinMode(IN1,OUTPUT);digitalWrite(IN1,LOW);
pinMode(IN2,OUTPUT);digitalWrite(IN2,LOW);
pinMode(IN3,OUTPUT);digitalWrite(IN3,LOW);
pinMode(IN4,OUTPUT);digitalWrite(IN4,LOW);
pinMode(EN1,OUTPUT);
pinMode(EN2,OUTPUT);
}
// -------------------------------------------------------------------
void loop()
{
  uint8_t buf[VW_MAX_MESSAGE_LEN]; // definiujemy bufor do odbioru inf.
  uint8_t buflen = VW_MAX_MESSAGE_LEN; // rozmiar bufora
  if (vw_get_message(buf, &buflen)) // pobieramy wiadomość
  {
    int i,j;
    for (j=0; j=2;j++){
    for (i = 0; i < buflen; i++) // kopiujemy ją do zmiennej wiadomosc
      {
      wiadomosc[i] = char(buf[i]);
      }
  if(j==1){
   wiadomosc[buflen] = '\0'; // znak końca tekstu
   X = atol(wiadomosc);    // przetwarzamy tekst na liczbę
  }  
  }
  
  
  
  
   PWM1 = (int)(X%1024L); // obliczamy wychylenie w osi Y
   if(PWM1>535){
   kierunek="do przodu";
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
PWM1 = map(PWM1,535,1023,0,255);
analogWrite(EN1,PWM1);
}
   else
if(PWM1<505){
kierunek="do tylu";
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
PWM1 = map(PWM1,505,0,0,255);
analogWrite(EN1,PWM1);
}
   if(PWM1>=505 && PWM1<=535){
   kierunek=" stop ";PWM1=0;
   analogWrite(EN1,0);
}
   Serial.print("Silnik 1: kierunek: ");
   Serial.print(kierunek);Serial.print(" moc: ");
   Serial.println(PWM1);
   PWM2 = int(X/1024L); // obliczamy wychylenie w osi X
   if(PWM2>535){
   kierunek="w prawo ";
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
PWM2 = map(PWM2,535,1023,0,255);
analogWrite(EN2,PWM2);
}
   else
if(PWM2<505){
kierunek="w lewo";
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
PWM2 = map(PWM2,505,0,0,255);
analogWrite(EN2,PWM2);
}
   if(PWM2>=505 && PWM2<=535){
     kierunek=" stop ";
PWM2=0;analogWrite(EN2,0);
}
   Serial.print("Silnik 2: kierunek: ");
   Serial.print(kierunek);
   Serial.print(" moc: ");
   Serial.println(PWM2);
  
   Serial.println("--------------------------------------");
  }
}
 
Odpowiedź
#13
Kod:
#define IN1 11  // dla silnika 1 (przód-tył)
#define IN2 3  // dla silnika 1 (przód-tył)// musisz sprawdzić tyl z przodem nie wiem jak masz możne być na odwrót
#define EN1 1  // koniecznie pin PWM (~)
#define IN3 5   // dla serwa (lewo-prawo)
#define IN4 6   // dla serwa (lewo-prawo)
#define EN2 9  // koniecznie pin PWM (~)
tak masz mieć według twoich wytycznych
narazie sa 2 silniki jak zrobimy 2 joy to wyczyszcze nie potrzebne rzecz
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości