Robot radio RF med joystick (1 / 2 steg)
Steg 1: Kod för Robot - reciver eller RX
//***********************
2 motorer och Joystik
motorer på motor sheld
//**********************
Libbrerie e costanti
#include < VirtualWire.h >
stift för ledde
#define LED_pin4 4 / / avanti GIALLO gå gul
#define LED_pin5 5 / / indietro BLU bo tillbaka BLU
#define LED_pin6 6 / / destra VERDE höger grön
#define LED_pin7 7 / / sinistra ROSSO vänster röd
stift del ricevitore pin av RX
#define RX_pin 2
PIN direzione e velocità del motore sinistro, dir och kraften i vänster motor
int pinDirS = 13.
int pinVelS = 11;
PIN direzione e velocità del motore destro, dir och kraften i höger motor
int pinDirD = 12;
int pinVelD = 3;
void setup()
{
Serial.BEGIN(38400);
STIFT PER SEGNALARE QUELLO CHE ARRIVA DAL JOYSTIK ACCENDENDO JAG LED
Detta stift är för se signalen från joystik
pinMode (LED_pin4, OUTPUT);
pinMode (LED_pin5, OUTPUT);
pinMode (LED_pin6, OUTPUT);
pinMode (LED_pin7, OUTPUT);
spengo tutti jag ledde, ledde alla bort
digitalWrite (LED_pin4, låg);
digitalWrite (LED_pin5, låg);
digitalWrite (LED_pin6, låg);
digitalWrite (LED_pin7, låg);
vw_set_rx_pin(RX_pin);
Icke servirebbe: il standard è 11
vw_setup(3000); Bitar per sekund vw_rx_start();
Inizio il processo di ricezione
Serial.println ("Ricevitore aktiv:");
Imposto jag stift del motore sinistro, lämnade motor
pinMode (pinDirS, produktionen);
pinMode (pinVelS, produktionen);
Imposto jag stift del motore destro, rätt motor
pinMode (pinDirD, produktionen);
pinMode (pinVelD, produktionen);
}
void loop() {
uint8_t buf [VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
om (vw_get_message (buf, och buflen)) / / icke-blockerande
{buf [buflen] = '\0'; / / Birgit il terminatore di stringa
om (strncmp ((char *) buf, "Alt", buflen) == 0) {avanza();
}
om (strncmp ((char *) buf, "Basso", buflen) == 0) {indietro();
}
om (strncmp ((char *) buf, "Destra", buflen) == 0) {giraDX();
}
om (strncmp ((char *) buf, "Sinistra", buflen) == 0) {giraSX();
}
annars om (strncmp ((char *) buf, "Bottone", buflen) == 0) ferma();
Serial.Print ("Comando Ricevuto (" + String(buflen) + "bil.):");
Serial.println ((char *) buf+String("//"));
}
}
funktion
void avanza() {
Serial.println("Avanzo");
digitalWrite (LED_pin4, hög); Kemical il ledde 4 giallo
digitalWrite (LED_pin5, låg); Spengo il LED 5
digitalWrite (LED_pin6, låg); Spengo il LED 6
digitalWrite (LED_pin7, låg); Spengo il LED 7
digitalWrite (pinDirS, hög);
digitalWrite (pinDirD, hög);
analogWrite (pinVelS, 255);
analogWrite (pinVelD, 255);
}
void indietro() {
Serial.println("Indietro");
digitalWrite (LED_pin4, låg); Spengo il LED
digitalWrite (LED_pin5, hög); Kemical il ledde 5 blu
digitalWrite (LED_pin6, låg); Spengo il LED 6
digitalWrite (LED_pin7, låg); Spengo il LED 7
digitalWrite (pinDirS, låg);
digitalWrite (pinDirD, låg);
analogWrite (pinVelS, 255);
analogWrite (pinVelD, 255);
}
void giraDX() {
Serial.println ("Giro en DX");
digitalWrite (LED_pin4, låg); Spengo il LED 4
digitalWrite (LED_pin5, låg); Spengo il LED 5
digitalWrite (LED_pin6, hög); Kemical il ledde 6 verde
digitalWrite (LED_pin7, låg); Spengo il LED 7
digitalWrite (pinDirS, låg);
digitalWrite (pinDirD, hög);
analogWrite (pinVelS, 255);
analogWrite (pinVelD, 255);
}
void giraSX() {
Serial.println ("Giro en SX");
digitalWrite (LED_pin4, låg); Spengo il LED 4
digitalWrite (LED_pin5, låg); Spengo il LED 5
digitalWrite (LED_pin6, låg); Spengo il LED 6
digitalWrite (LED_pin7, hög); Kemical il ledde 7 rosso
digitalWrite (pinDirS, hög);
digitalWrite (pinDirD, låg);
analogWrite (pinVelS, 255);
analogWrite (pinVelD, 255);
}
void ferma() {
Serial.println ("Mi fermo");
digitalWrite (LED_pin4, låg); Spengo il LED 7
digitalWrite (LED_pin5, låg); Spengo il LED 4
digitalWrite (LED_pin6, låg); Spengo il LED 6
digitalWrite (LED_pin7, låg); Spengo il LED 5
digitalWrite (pinDirS, hög);
digitalWrite (pinDirD, hög);
analogWrite(pinVelS,0);
analogWrite(pinVelD,0);
}