Hi all,
I have posted something similar in the software/interfacing section, but I am not so sure what it falls under now.
I came across this Hobby Robotics » Cheap Arduino Wireless Communications and thought that it was an awesome idea.
I have been looking at this more however as he uses VirtualWire:
http://www.benjohansen.com/archives/642
I plan to use the VirtualWire library www.open.com.au/mikem/arduino/VirtualWire.pdf.
And these transmitters and receivers:
I am having trouble understanding the example that comes with the library for both transmitter and receiver.
I wish to read a value from an analog input and then send it to the receiver where it will be used for a PWM output.
My transmitter code looks something like this:
#include <VirtualWire.h>
int POTPIN = 0;
int POTVAL = 0;
byte PWMVAL = 0;
// int PWMOUT = 3;
void setup()
{
Serial.begin(9600); // Debugging only
Serial.println("setup");
// Initialise the IO and ISR
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
}
void loop()
{
const char *msg;
POTVAL = analogRead(POTPIN); // read value from potentiometer
PWMVAL = map(POTVAL, 0, 1023, 0, 255); // map the value so that it can be used for PWM signal
msg = "PWMVAL";
Serial.println(msg);
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Wait until the whole message is gone
delay(100);
}
One of my problems is that I do not want to send characters and instead just one byte of the value from mapped analog value.
I am unsure of how to adapt the code for my project Sad.
The original example code from the VirtualWire library is as follows:
Transmitter code:
// transmitter.pde
//
// Simple example of how to use VirtualWire to transmit messages
// Implements a simplex (one-way) transmitter with an TX-C1 module
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@open.com.au)
// Copyright (C) 2008 Mike McCauley
// $Id: transmitter.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $
#include <VirtualWire.h>
void setup()
{
Serial.begin(9600); // Debugging only
Serial.println("setup");
// Initialise the IO and ISR
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
}
void loop()
{
const char *msg = "hello";
digitalWrite(13, true); // Flash a light to show transmitting
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13, false);
delay(200);
}
Receiver Code:
// receiver.pde
//
// Simple example of how to use VirtualWire to receive messages
// Implements a simplex (one-way) receiver with an Rx-B1 module
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@open.com.au)
// Copyright (C) 2008 Mike McCauley
// $Id: receiver.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $
#include <VirtualWire.h>
void setup()
{
Serial.begin(9600); // Debugging only
Serial.println("setup");
// Initialise the IO and ISR
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
vw_rx_start(); // Start the receiver PLL running
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) // Non-blocking
{
int i;
digitalWrite(13, true); // Flash a light to show received good message
// Message with a good checksum received, dump it.
Serial.print("Got: ");
for (i = 0; i < buflen; i++)
{
Serial.print(buf*, HEX);*
- Serial.print(" ");*
- }*
- Serial.println("");*
- digitalWrite(13, false);*
- }*
}
If anyone has any advice I would greatly appreciate it.
Thanks in advance.