#include <SPI.h> // Einbindung externer Bibliotheken
#include <Servo.h> // Zur Erzeugung des Servo-PWM Signals
#include <RF24.h>
RF24 Radio;
int K_width_1 = 0; // Setzt die Variable auf Integer und den Wert 0
int K_width_2 = 0;
int K_width_3 = 0;
Servo S1; // erstellt ein Servo(PWR)-Objekt mit der
Servo S2; // Bezeichnung S1-S3, um die Servomotore
Servo S3; // zu steuern
struct Signal { // Konvertiert Daten in den byte-Datentyp.
byte EinAus; // Ein Byte enthält 8-Bits (0-255)
byte Sauerstoff;
byte Ventil;
byte SenderEIN;
};
Signal data;
void Datenreset()
{
// Legt Grundwerte der Daten fest
data.EinAus = 100; // Neutralstellung Netzschalter
data.Sauerstoff = 127; // Mittelstellung
data.Ventil = 150; // Nullposition
}
void setup() // Funktionsdeklaration: Konfiguration
{
pinMode(7, INPUT_PULLUP); // definiert Pin7 als Eingang mit Ziehwiderst.
pinMode(8, INPUT_PULLUP); // definiert Pin8 als Eingang mit Ziehwiderst.
S1.attach(3); // Bindet den Servomotor an Pin 3 des Servoobjekts
S2.attach(5); // Pin 5
S3.attach(6); // Pin 6
}
void loop() // Funktionsdeklaration: Schleife
{
if (data.SenderEIN == 0) { Datenreset(); }
else {
// Auslesen Analog/Digitalwerte und senden
data.EinAus = map( digitalRead(7), 0, 1, 0, 255); // Analogwert 0-5 V (0-1023) von Pin A1
data.Sauerstoff = map( analogRead(A1), 0, 1023, 0, 255); // und A2 einlesen, auf 8 bit (0-255) wandeln
data.Ventil = map( analogRead(A2), 0, 1023, 0, 255); // Digitalwert Pin D7 einlesen
}
data.SenderEIN = digitalRead(8);
K_width_1 = map(data.EinAus, 0, 255, 500, 2500); // PWM signal an pin D6
K_width_2 = map(data.Sauerstoff, 0, 255, 500, 2500); // Wandeln eines 8 Bit Wertes auf Analog
K_width_3 = map(data.Ventil, 0, 255, 500, 2500); // Wandeln eines 8 Bit Wertes auf Analog
S1.writeMicroseconds(K_width_1); // Ausgabe des PWM Signals
S2.writeMicroseconds(K_width_2); // S=Servo, K=Kanal
S3.writeMicroseconds(K_width_3);
}