01-09-2015, 21:20
Tak zgadza się, chciałem Ci tylko podesłać rozpiskę jak to ogólnie wygląda w przypadku tego shielda.
Ocena wątku:
Zdalnie sterowany robot na module RF 433 Mhz
|
#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.
}
#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.
}
//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("--------------------------------------");
}
}
#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 (~)