SOLVED: Virtual Wire & 433Mhz modules not functioning as expected Arduino Mega.

Right now, I have got:

Arduino Mega 1 (the transmitter)

The 433mhz transmitter is hooked up to the ground pin, and to the 5v pin of the arduino. The data pin is hooked up to pin 12.

Arduino Mega 2 (the receiver)

The 433mhz receiver is hooked up to the ground pin, and to the 5v pin of the arduino. The data pin is hooked up to pin 11.

This is the code for the transmitter:

// 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@airspayce.com)
// 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_tx_pin(12);
    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);
}

The Transmitter's serial output is only ever "Setup" just once, at startup.

This is the receivers 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@airspayce.com)
// 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_rx_pin(11);
    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[i], HEX);
	    Serial.print(" ");
	}
	Serial.println("");
        digitalWrite(13, false);
    }
}

this also only ever outputs "Setup" when connected to Serial.

You can test the VirtualWire examples by just connecting the TX pin and ground on one Arduino, with wires to the RX pin and ground on the other Arduino. This bypasses possible problems with the radios.

Don't forget that transmitter and receiver each need an antenna, about 17 cm of straight wire.

Alright, well the sketch works with a direct wire...

So does this mean my RF tx is bad?

I do have an approximately 17cm antenna on to both of the TX and RX, and they are both connected to the arduino's 5v

Can you post of photo of how you have connected the antennas?

Ok, this is a picture of the transmitter

http://s1.postimg.org/3t6e2bzfz/IMG_2899.jpg

http://s18.postimg.org/ik5owba7d/IMG_2898.jpg

After taking these pictures, i realized that i hooked the transmitter up in reverse... vcc on the transmitter was connected to ground on the arduino, and ground on the transmitter was connected to vcc on the transmitter....

I just switched them, but no luck.... Would this have destroyed the transmitter?

You solved my problem by asking me to take a picture! A whole friday night spend troubleshooting. :-/.

All along it was the positive and negative that was reversed (as well as a the data wire in the wrong place after repeated attempts at messing with it).

Working great now!

woo hoo!

Thanks.