"Taste" soll die Variable sein, die den sketch steuert. Der Name bezieht sich aus die Tasten der Fernsteuerung, in die eine 3x4 Tastatur verbaut ist. Der Senderscetch sieht bisher so aus:
#include <RCSwitch.h>
const byte keypadPin = A0;
int val = 0;
RCSwitch mySwitch = RCSwitch();
void setup()
{
Serial.begin(9600);
pinMode(keypadPin, INPUT_PULLUP);
mySwitch.enableTransmit(12); // Der Sender wird an Pin 12 angeschlossen
}
void loop()
{
val = analogRead(keypadPin);
if ((val > 400) && (val <=500))
{
val = 12; //bzw 11 490
}
else if ((val > 500) && (val <=525))
{
val = 11; // bzw. 0 510
}
else if ((val > 525) && (val <= 555 ))
{
val = 10; //540
}
else if ((val > 555) && (val <= 585))
{
val = 9; //570
}
else if ((val > 585) && ( val <=620))
{
val = 8; //600
}
else if ((val > 620) && ( val <=660))
{
val = 7; //640
}
else if ((val > 660) && ( val <=705))
{
val = 6; //680
}
else if ((val > 705) && ( val <=760))
{
val = 5; //730
}
else if ((val > 760) && ( val <=820))
{
val = 4; //790
}
else if ((val > 820) && ( val <=890))
{
val = 3; //850
}
else if ((val > 890) && ( val <=976))
{
val = 2; //930
}
else if ((val > 976) && ( val <=1045))
{
val = 1; //1023
}
mySwitch.send(val, 24);
Serial.println(val);
}
Aber das hat mit meinem Problem nichts zu tun. Das Kompilieren des Empfängerprogramms klappt nicht.
Mehr scetch habe ich im Moment noch nicht. wollte mit schrittweise voran arbeiten.
Ziel ist es, am Empfänger verschiedene Unterprogramme zu starten abhängig davon welche Taste am Sender zuletzt gedrückt wurde.
Am Ende wird damit ein kleines Ruderboot mit 4 Servos (linkes Ruder vor und zurück, linkes Ruder hoch runter, rechtes Ruder vor und zurück, rechtes Ruder hoch runter) gesteuert. Die Unterprogramme sind dann z.B.: Vorwärts, Rückwärts, Linksrum, Rechtsrum).
Der Empfänger-Sketch ist wie schon mehrfach geschrieben, unvollständig.
Damit mitlesende kein Problem mit deinem Sketch haben, solltest du den unbedingt noch vollständig liefern und den fehlerhaften austauschen. Oder möchtest du, das andere User sich darüber ärgern ?
Oh, jetzt habe ich erst gesehen was du meinst (kann nicht schaden seine eigenen Posts zu kontrollieren.
Hatte beim kopieren nicht den gesamten sketch erwischt.
Hier nun der jetzige Stand des Empfänger-scetches:
#include <RCSwitch.h>
#include <Servo.h>
int VorServoRechtsPosVorn = 60;
int VorServoRechtsPosHinten = -60;
int VorServoLinksPosVorn = 60;
int VorServoLinksPosHinten = -60;
int HochServoRechtsPosOben = 60;
int HochServoRechtsPosUnten = -60;
int HochServoLinksPosOben = 60;
int HochServoLinksPosUnten = -60;
long Taste=0;
Servo VorServoRechts;
Servo VorServoLinks;
Servo HochServoRechts;
Servo HochServoLinks;
RCSwitch mySwitch = RCSwitch();
void setup()
{
VorServoRechts.attach(5);
VorServoLinks.attach(6);
HochServoRechts.attach(7);
HochServoLinks.attach(8);
Serial.begin(9600);
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
}
void loop()
{
if (mySwitch.available())
{
Serial.print("Empfangen: ");
Serial.print( mySwitch.getReceivedValue() );
Taste = mySwitch.getReceivedValue();
if (Taste == 1)
{
vorwaerts;
}
}
mySwitch.resetAvailable();
}
void vorwaerts()
{
HochServoRechts.write(HochServoRechtsPosOben);
HochServoLinks.write(HochServoLinksPosOben);
delay(200);
VorServoRechts.write(VorServoRechtsPosVorn);
VorServoLinks.write(VorServoLinksPosVorn);
delay(200);
}
michael_x:
Das tut nichts.
Du willst vermutlich die Funktion aufrufen.
vorwaerts ();
Ein Grund die Warnungen einzuschalten.
Somewhere\ServoRC\ServoRC.ino: In function 'void loop()':
Somewhere\ServoRC\ServoRC.ino:40:17: warning: statement is a reference, not call, to function 'vorwaerts' [-Waddress]
vorwaerts;
^