Danke für eure Beiträge
Ich habe jetzt probehalber den servo extern mit Strom versorgt und nur
Gnd
verbunden un schon sind die Probleme weg.
Hier der komplette Sketch
#include <Servo.h>
//Simple RFM12B wireless demo - Receiver - no ack
//Glyn Hudson openenergymonitor.org GNU GPL V3 12/4/12
//Credit to JCW from Jeelabs.org for RFM12
Servo myservo; // create servo object to control a servo
int val; // variable to read the value from the analog pin
#define RF69_COMPAT 0 // define this to use the RF69 driver i.s.o. RF12
#include <JeeLib.h>
#define myNodeID 30 //node ID of Rx (range 0-30)
#define network 210 //network group (can be in the range
1-250).
#define RF_freq RF12_433MHZ //Freq of RF12B can be RF12_433MHZ,
RF12_868MHZ or RF12_915MHZ. Match freq to module
typedef struct { int power1, power2, power3, battery; } PayloadTX;
// create structure - a neat way of packaging data for RF comms
PayloadTX emontx;
const int emonTx_NodeID=10; //emonTx node ID
int ledpmw;
void setup() {
myservo.attach(7); // attaches the servo on pin 9 to the servo
object
pinMode(9,OUTPUT);
pinMode(8,OUTPUT);
rf12_initialize(myNodeID,RF_freq,network); //Initialize RFM12 with
settings defined above
Serial.begin(9600);
Serial.println("RF12B demo Receiver - Simple demo");
Serial.print("Node: ");
Serial.print(myNodeID);
Serial.print(" Freq: ");
if (RF_freq == RF12_433MHZ) Serial.print("433Mhz");
if (RF_freq == RF12_868MHZ) Serial.print("868Mhz");
if (RF_freq == RF12_915MHZ) Serial.print("915Mhz");
Serial.print(" Network: ");
Serial.println(network);
}
void loop() {
digitalWrite(8,0);
if (rf12_recvDone()){
if (rf12_crc == 0 && (rf12_hdr & RF12_HDR_CTL) == 0) {
int node_id = (rf12_hdr & 0x1F); //extract nodeID from payload
if (node_id == emonTx_NodeID) { //check data is coming
from node with the corrct ID
emontx=*(PayloadTX*) rf12_data; // Extract the data
from the payload
digitalWrite(8,1);
// Serial.println(emontx.power1);
// Serial.println(emontx.power2);
Serial.println(emontx.power3);
Serial.println(val);
analogWrite(9,emontx.power2/4); // Ausgang für ADC
val = (emontx.power1); // reads the value of the
potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 5, 175); // scale it to use it with the
servo (value between 0 and 180)
myservo.write(val); // sets the servo position
according to the scaled value
delay(5); // waits for the servo to get
there
}
}
}
}