Hallo allerseits,
ich beschäftige mich gerade zum ersten mal wirklich mit Kommunikation zwischen zwei Arduinos weil ich später ein selbstgebautes Fahrzeug fernsteuern möchte. Ich habe angedacht das mit meinen 433MHz Modulen zu machen, weil die hier rumliegen und ausreichend Reichweite haben. Weiterhin verwende ich die library VirtualWire, da RCSwitch sehr lahm ist wie ich bei Tests gemerkt habe.
Ich bin an dem Punkt, dass die Testsketches (siehe unten) für die 433MHz Kommunikation funktionieren, ich aber Teile davon nicht verstehe und deshalb nicht an meine Bedürfnisse anpassen kann. In dem Sendersketch wird das char/string (?) "Hallo Welt" verschickt. Allerdings ist das glaube ich mit einem Pointer (*) geschrieben und wird daher ins Eeprom geschrieben(?!), was ich nicht möchte. Ohne funktioniert der Sketch leider nicht, er kompiliert, aber die Nachricht kommt nicht mehr an. Auch möchte ich nicht Wörter oder Sätze, sondern veränderliche Zahlenwerte verschicken, z.B. Lenkwinkel = 10 oder Gas = 255.
Frage: Kann ich mit der Library Zahlen versenden und wenn ja wie und welche Variablentypen?
Ich habe noch nie mit strings und chars gearbeitet und irgendwie hat die Recherche bisher wenig Früchte getragen daher danke schonmal für die Hilfe!
Hier der Code des Senders, er ist auf einem Nano aufgespielt:
#include <VirtualWire.h>
#include <VirtualWire_Config.h>
// 433 MHz Sender mit der VirtualWire Library V 1.27
// Matthias Busse 17.5.2014 Version 1.0
// Daten > D4
char *msg = "Hallo Welt";// Nachricht
const byte DatenPin = 4;
void setup() {
pinMode(DatenPin, OUTPUT);
vw_setup(2000); // Bits pro Sekunde
vw_set_tx_pin(DatenPin); // Datenleitung
}
void loop(){
vw_send(msg, strlen(msg));
vw_wait_tx(); // warten bis alles übertragen ist
//delay(1000);
}
Und hier der Empfänger-Sketch, der auf einem Uno läuft:
#include <VirtualWire.h>
#include <VirtualWire_Config.h>
// 433 MHz Empfänger mit der VirtualWire Library V 1.27
// Matthias Busse 17.5.2014 Version 1.0
// Data > D5
const byte DatenPin = 2;
int i;
void setup() {
Serial.begin(9600);
vw_setup(2000); // Bits pro Sekunde
vw_set_rx_pin(DatenPin); // Datenleitung
vw_rx_start(); // Empfänger starten
}
void loop() {
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) { // überprüfen ob eine Nachricht eingegangen ist
for (i = 0; i < buflen; i++) {
Serial.print((char)buf[i]); // Nachricht aus buf ausgeben
}
Serial.println(" ");
}
}