Mit VirtualWire Libary Funksteckdosen über 433MHz

Hallo,

ich möchte mir meine eigenen Funksteckdosen bauen. Nur sollen diese mal später über DMX angesteuert werden, was vorerst keine Rolle spielen sollte.

Ich habe in einem anderen Threath hier im Forum den tipp bekommen das ganze mit der VirtualWire Libary zu realisieren. Mittlerweile kann ich auch vom einem zum anderen Arduino wörter schicken, nur kann ich die empfangenen Daten leider nur über den Serial Monitor auslesen.

Ich würde gerne vom Sender aus eine 11dez schicken, dann würde die Steckdose 1 eingehen.
Wenn ich dann eine 10 schicke soll die Steckdose 1 aus gehen.

21 Steckdose 2 ein
20 Steckdose 2 aus
usw…

Möchte dann in dem jeweiligen empfänger mit einer If abfrage abragen, ob die Eigene Nummer mit der empfangenen Nummer übereinstimmt. Und je nachdem ob X0 oder X1 soll die der µC dann ein Relais ein oder ausschalten.

Haltet ihr meinen Lösungsansatz für sinnvoll?

Nun habe ich dass Problem, dass ich zwar beim Sender eine 11 Senden kann, die kommt aber als Hexadezimale Zahl im Empfänger in einem Serial.Print an. Könnt Ihr mir bitte sagen, wie ich die Hexadezimale Zahl als dezimale Zahl in einer neuen Variable speichern kann?
Hier der Code vom Empfänger:

// 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_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);
    }
}

Gruß

Bastian

Es gibt keine Dezimalen oder hexadezimalen Variablen sondern nur eine dezimale oder hexadezimale Ausgabe. Variablen werden wie alles in Computer als binäre Daten gespeichert oder verarbeitet. Du kannst um die Zehnerstelle zu erhalten die Zahl durch 10 teilen und dann modulo 10

Einer = EmpfangeneZahl%10; Zehner = (EmpfangeneZahl/10)%10; ecc

Ich finde es nicht sinnvoll zuerst Virtualwire zu benutzen um dann auf DMX umzusteigen. Fang gleich mit DMX an.

Grüße Uwe

hey, danke für deine schnelle Antwort. Ich hab mich falsch ausgedrückt. Ich möchte die Steckdosen nachwievor über 433MHz ansteuern, nur das steuersignal dass quasi die Steckdose anschaltet wird über DMX an den Sender übertragen. Man könnte sagen ich ersetze einfach die Fernbedienung einer Funksteckdose durch ein Mischpult (DMX)

edit: Wie bekomme ich jetzt denn Übertragenen Wert im Empfänger in eine If abfrage?