hello..
I was trying to built a wireless rf r/c car controlled by a analog joystick.
it had 4 motors and motors were controlled by a l293d ic.
here's the code .
i dont know wat got wrong the circuit or the code.
transmitter side
#include <VirtualWire.h> //transmitter
int joy1x = 1 ;
int joy1y = 2;
int button1 = 3 ;
int joy2x = 4 ;
int joy2y = 5 ;
int button2 = 6 ;
int ledPin = 7 ; // LED 1
int tx = 8 ;
int val1 = 0 ;
int val2 = 0 ;
int val3 = 0 ;
int val4 = 0 ;
int potPin = 9 ;
int potValue = 0 ;
void setup()
{
vw_set_tx_pin(tx);
vw_setup(1600);
pinMode(button1, INPUT) ;
pinMode(button2, INPUT) ;
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH); // set the LED on
delay(100); // wait for a second
digitalWrite(ledPin, LOW); // set the LED off
delay(100);
digitalWrite(ledPin, HIGH); // set the LED on
delay(100); // wait for a second
digitalWrite(ledPin, LOW);
}
void loop()
{
val1 = analogRead(joy1x) ;
delay(50) ;
val2 = analogRead(joy1y) ;
delay(50) ;
val3 = analogRead(joy2x) ;
delay(50) ;
val4 = analogRead(joy2y) ;
if(val1 >=510 && val1 <=520) {
if(val2 >=510 && val2 <=520) { //joystick 1
digitalWrite(ledPin, HIGH) ;
delay(val1 + val2 / 4 ) ;
digitalWrite(ledPin, LOW) ;
}
}
if(val1 >= 530 && val1 <= 1023)
{
char *msg = "f" ;
vw_send((uint8_t *)msg, strlen(msg)); //send the value
vw_wait_tx() ;
digitalWrite(ledPin, HIGH); // set the LED on
delay(100); // wait for a second
digitalWrite(ledPin, LOW);
}
if(val1 <=509 && val1 >= 0) {
char *msg = "b" ;
vw_send((uint8_t *)msg, strlen(msg)); //send the value
vw_wait_tx() ;
digitalWrite(ledPin, HIGH) ;
delay(100) ;
digitalWrite(ledPin, LOW) ;
}
if(val2 >= 530 && val2 <= 1023) {
char *msg = "l" ;
vw_send((uint8_t *)msg, strlen(msg)); //send the value
vw_wait_tx() ;
digitalWrite(ledPin, HIGH); // set the LED on
delay(100); // wait for a second
digitalWrite(ledPin, LOW);
}
if(val2 <=509 && val2 >= 0) {
char *msg = "r" ;
vw_send((uint8_t *)msg, strlen(msg)); //send the value
vw_wait_tx() ;
digitalWrite(ledPin, HIGH) ;
delay(100) ;
digitalWrite(ledPin, LOW) ;
}
if(val3 >= 530 && val3 <= 1023) {
char *msg = "s" ;
vw_send((uint8_t *)msg, strlen(msg)); //send the value
vw_wait_tx() ;
digitalWrite(ledPin, HIGH); // set the LED on
delay(100); // wait for a second
digitalWrite(ledPin, LOW);
}
if(val3 <=509 && val2 >= 0) {
char *msg = "m" ;
vw_send((uint8_t *)msg, strlen(msg)); //send the value
vw_wait_tx() ;
digitalWrite(ledPin, HIGH) ;
delay(100) ;
digitalWrite(ledPin, LOW) ;
}
if(button1 == HIGH && button2 == LOW)
{
potValue = 85 ;
vw_send((uint8_t *)potValue, 3) ;
vw_wait_tx() ;
digitalWrite(ledPin, HIGH) ;
delay(100) ;
digitalWrite(ledPin, LOW) ;
}
if(button1 == LOW && button2 == HIGH)
{
potValue = 170 ;
vw_send((uint8_t *)potValue, 3) ;
vw_wait_tx() ;
digitalWrite(ledPin, HIGH) ;
delay(100) ;
digitalWrite(ledPin, LOW) ;
}
if(button1 == HIGH && button2 == HIGH)
{
potValue = 255 ;
vw_send((uint8_t *)potValue, 3) ;
vw_wait_tx() ;
digitalWrite(ledPin, HIGH) ;
delay(100) ;
digitalWrite(ledPin, LOW) ;
}
}
receiver side
#include <VirtualWire.h>
const int ic2 = 0 ;
const int ic7 = 1 ;
const int ic10 = 2 ;
const int ic15 = 3 ;
const int rx = 13 ;
const int led = 12 ;
int ledState = LOW; // ledState used to set the LED
long previousMillis = 0; // will store last time LED was updated
long interval = 1000; // interval at which to blink (milliseconds)
void setup() {
vw_set_rx_pin(rx);
vw_setup(1600);
vw_rx_start() ;
pinMode(ic2, OUTPUT);
pinMode(ic7, OUTPUT);
pinMode(ic10, OUTPUT);
pinMode(ic15, OUTPUT);
pinMode(led, OUTPUT);
digitalWrite(led, HIGH); // set the LED on
delay(100); // wait for a second
digitalWrite(led, LOW); // set the LED off
delay(100);
digitalWrite(led, HIGH); // set the LED on
delay(100); // wait for a second
digitalWrite(led, LOW); // set the LED off
}
void loop () {
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
if (buf[0] == 'f') {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(led, ledState);
digitalWrite(ic2, LOW);
digitalWrite(ic7, HIGH);
digitalWrite(ic10, HIGH);
digitalWrite(ic15, LOW);
}
if (buf[0] == 'b') {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(led, ledState);
digitalWrite(ic2, HIGH);
digitalWrite(ic7, LOW);
digitalWrite(ic10, LOW);
digitalWrite(ic15, HIGH);
}
if (buf[0] == 'l') {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(led, ledState);
digitalWrite(ic2, LOW);
digitalWrite(ic7, HIGH);
digitalWrite(ic10, LOW);
digitalWrite(ic15, HIGH);
}
if (buf[0] == 'r') {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(led, ledState);
digitalWrite(ic2, HIGH);
digitalWrite(ic7, LOW);
digitalWrite(ic10, HIGH);
digitalWrite(ic15, LOW);
}
if (buf[0] == 's') {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(led, ledState);
digitalWrite(ic2, LOW);
digitalWrite(ic7, HIGH);
digitalWrite(ic10, LOW);
digitalWrite(ic15, LOW);
}
if (buf[0] == 'h') {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(led, ledState);
digitalWrite(ic2, LOW);
digitalWrite(ic7, LOW);
digitalWrite(ic10, HIGH);
digitalWrite(ic15, LOW);
}
}
}
}
}
}
}
}
}