Hauptmenü

Egal wie toll, wie schön oder wir groß der heiße Draht gebaut worden ist, eines stört ganz oft. Das Kabel am Griff bzw. an der Spielöse . Damit der heiße Draht aber ohne Kabel Funktioniert ist ein bisschen Technik und ein kleines Programm erforderlich.  

 Um das Spiel Kabellos zu bauen benötig die Öse des heißen Drahtes einen Sender (rechts) und einen Attiny 85, der dem Sender die Daten zum senden liefert. Auf der anderen Seite braucht das Spiel einen Empfänger (links) und einen Arduino oder einen Attiny der die Daten empfängt, auswertet und die gemachten Fehler dann anzeigt. Für Sender und Empfänger dienen 433 MHZ Module die es bereits ab 4 Euro zu kaufen gibt. Für eine bessere Verbindung sollte auf jeden Fall eine kleine Antenne an Sender und Empfänger angeschlossen werden. 

heisser draht ohne kabel mit funk oese

In der Hardware auf den Bilder ist keine Sapnnungsversorgung eingezeichnet, da es verschiedene Möglichkeiten gibt. Der Empfänger benötigt 4,5 Volt. Der Arduino dagegen kann über Vin oder den USB mit Spannung versorgt werden. 

 

Sender heißer Draht:

 Wird ein Fehler gemacht, also berührt die Öse den Draht, dann leuchtet für 50 mS. die LED auf. Die LED kann auch weg gelassen werden, doch fand ich es gut am Griff eine kleine LED "Anzeige" zu habe, so sieht der Spieler sofort wenn er einen Fehler gemacht hat. Der Fehler wird über den Sender dann zum Arduino gesendet. 

Eine kurze Anleitung wie der Attiny mit dem Arduino programmiert wird findet ihr hier auf meiner Seite.

 Bevor der Code auf den Attiny übertragen werden kann muss noch über "Tools" -> Bootloader instalieren, der Bootloader auf dem Attiny gespeichert werden. Zudem muss die VirtualWire.h Bibliothek in der Arduino IDE eingebunden werden. Nun kann der Code auf den Attiny 85 geladen werden. 

 

Code Sender:

#include <VirtualWire.h>

#undef int
#undef abs
#undef double
#undef float
#undef round

const int rxPin = 2;

char *message;

void setup()
{
pinMode( 0 , INPUT);
pinMode( 3 , OUTPUT);

vw_set_ptt_inverted(true);
vw_setup(2000);
vw_set_tx_pin(rxPin);
}

void loop()
{

if (digitalRead(0))
{
message = "ON";

vw_send((uint8_t *)message, strlen(message));
vw_wait_tx();

delay(20);

digitalWrite(3, HIGH);
delay(50);
digitalWrite(3, LOW);

}}

Empfänger heißer Draht:

Empfängt der Empfänger ein Signal vom Sender wird LED und Summer für eine Sekunde angeschaltet und damit signalisiert, es wurde ein Fehler gemacht. An dieser Stelle im Code kann auch eine Siebensegmentanzeige, ein Display oder etwas anderes programmiert werden. Je nachdem wie ich die Fehler darstellen möchte. Der Code (if(SensorData == "ON")) ist die Bedingung, dass ein Fehler gemacht wurde. Nach dieser Bedingung, kann der rote Teil durch euren Code ersetzt werden. 

 Code Empfänger:

#include <VirtualWire.h>

boolean DEBUG = false;

int rxPin = 8;


void setup()
{
if(DEBUG)
{
Serial.begin(9600);
Serial.println(F("Arduino startet..."));
}


pinMode(12, OUTPUT);
pinMode(13, OUTPUT);


vw_setup(2000);
vw_set_rx_pin(rxPin);
vw_rx_start();
if(DEBUG) Serial.println(F("RF Verbindung gestartet"));
}

void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

char SensorDataTemp[VW_MAX_MESSAGE_LEN+1];
String SensorData;

if(vw_get_message(buf, &buflen))
{
memset(SensorDataTemp, 0, VW_MAX_MESSAGE_LEN+1);

for (int i = 0; i < buflen; i++)
{
SensorDataTemp[i] = (char)buf[i];
}

SensorDataTemp[VW_MAX_MESSAGE_LEN+1] = '\0';
SensorData = SensorDataTemp;

if(SensorData == "ON")
{
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
if(DEBUG) Serial.println(F("ON"));
}
delay (1000);
{
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
}
}

Suchen