und die Codes der Empfänger
[/code]
Empfänger Ton
// Eingebundene Bebliotheken
#include <Wire.h> // Wire Bibbliothek für mp3 player
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h" //Bibbliothek für mp3 player
// Festgelegte Belegung
/*MP3 PLayer*/
SoftwareSerial mySoftwareSerial(0, 1); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
// Variablen
volatile int pwm_value = 0; //written by transmitter
volatile int prev_time = 0;
/*delay platzhalter*/
int delay_blink = 50;
int delay_blink2 = 250;
int delay_blink3 = 500;
void setup() {
/*PWM lesen*/
attachInterrupt(0, rising, RISING); // when pin D2 goes high, call the rising function
/*mp3 player setup*/
mySoftwareSerial.begin(9600);
(!myDFPlayer.begin(mySoftwareSerial));
myDFPlayer.volume(20); //lautstärke von 0 = 30
pinMode(LED_BUILTIN, OUTPUT); //kontroll led
}
void loop()
{
if (pwm_value > 200 && pwm_value < 210) {
digitalWrite(LED_BUILTIN, HIGH);
myDFPlayer.playMp3Folder(0000); // start first mp3 file
myDFPlayer.playMp3Folder(0001);
delay (5500);
myDFPlayer.playMp3Folder(0002);
delay (2000);
digitalWrite(LED_BUILTIN, LOW);
pwm_value = 0; //pwm_value to 0 to stop working
}
if (pwm_value > 400 && pwm_value < 410) {
digitalWrite(LED_BUILTIN, HIGH);
delay(delay_blink);
digitalWrite(LED_BUILTIN, LOW);
delay(delay_blink);
pwm_value = 0;
}
if (pwm_value > 600 && pwm_value < 610) {
digitalWrite(LED_BUILTIN, HIGH);
delay(delay_blink);
digitalWrite(LED_BUILTIN, LOW);
delay(delay_blink);
pwm_value = 0;
}
else {
digitalWrite(LED_BUILTIN, LOW);
}
}
void rising()
{
attachInterrupt(0, falling, FALLING);
prev_time = micros();
}
void falling()
{
attachInterrupt(0, rising, RISING);
pwm_value = micros() - prev_time;
Serial.println(pwm_value);
}
Empfänger Licht
// Eingebundene Bebliotheken
#include <Adafruit_NeoPixel.h>
// Festgelegte Belegung
/*Neopixel*/
#define PIN 5 //angeschlossen an Pin X
#define NUMPIXELS 8 // X Pixel werden verwendet
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
// Variablen
volatile int pwm_value = 0;
volatile int prev_time = 0;
int delay_blink = 50;
int delay_blink2 = 250;
int delay_blink3 = 500;
void setup() {
/*Neopixel initialisieren*/
strip.begin();
strip.show();
/*PWM lesen initialisieren*/
Serial.begin(115200);
attachInterrupt(0, rising, RISING); // when pin D2 goes high, call the rising function
pinMode(LED_BUILTIN, OUTPUT); //Kontroll LED
}
void loop()
{
if (pwm_value > 200 && pwm_value < 210)
{
digitalWrite(LED_BUILTIN, HIGH);
strip.setPixelColor(0, 0, 0, 0);
strip.setPixelColor(1, 0, 0, 0);
strip.setPixelColor(2, 0, 0, 0);
strip.setPixelColor(3, 0, 0, 0);
strip.setPixelColor(4, 0, 0, 0);
strip.setPixelColor(5, 0, 0, 0);
strip.setPixelColor(6, 0, 0, 0);
strip.setPixelColor(7, 0, 0, 0);
strip.show();
delay (14500);
strip.setPixelColor(0, 50, 50, 0);
strip.setPixelColor(7, 50, 50, 0);
strip.show();
delay(200);
strip.setPixelColor(0, 100, 100, 0);
strip.setPixelColor(1, 50, 50, 0);
strip.setPixelColor(6, 50, 50, 0);
strip.setPixelColor(7, 100, 100, 0);
strip.show();
delay(200);
strip.setPixelColor(0, 200, 200, 0);
strip.setPixelColor(1, 100, 100, 0);
strip.setPixelColor(2, 50, 50, 0);
strip.setPixelColor(5, 50, 50, 0);
strip.setPixelColor(6, 100, 100, 0);
strip.setPixelColor(7, 200, 200, 0);
strip.show();
delay(200);
strip.setPixelColor(1, 200, 200, 0);
strip.setPixelColor(2, 100, 100, 0);
strip.setPixelColor(3, 50, 50, 0);
strip.setPixelColor(4, 50, 50, 0);
strip.setPixelColor(5, 100, 100, 0);
strip.setPixelColor(6, 200, 200, 0);
strip.show();
delay(200);
strip.setPixelColor(2, 200, 200, 0);
strip.setPixelColor(3, 100, 100, 0);
strip.setPixelColor(4, 100, 100, 0);
strip.setPixelColor(5, 200, 200, 0);
strip.show();
delay(200);
strip.setPixelColor(3, 200, 200, 0);
strip.setPixelColor(4, 200, 200, 0);
strip.show();
digitalWrite(LED_BUILTIN, LOW);
pwm_value = 0;
}
if (pwm_value > 400 && pwm_value < 410)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(delay_blink);
digitalWrite(LED_BUILTIN, LOW);
delay(delay_blink);
pwm_value = 0;
}
if (pwm_value > 600 && pwm_value < 610)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(delay_blink);
digitalWrite(LED_BUILTIN, LOW);
delay(delay_blink);
pwm_value = 0;
}
else if (pwm_value > -10 && pwm_value < 10) {
digitalWrite(LED_BUILTIN, LOW);
}
}
void rising()
{
attachInterrupt(0, falling, FALLING);
prev_time = micros();
}
void falling()
{
attachInterrupt(0, rising, RISING);
pwm_value = micros() - prev_time;
Serial.println(pwm_value);
}
Empfänger Servos und Motoren
#include <Servo.h>
Servo servo1;
Servo servo2;
const int servopower = 4;
const int servo1Pin = 5;
const int servo2Pin = 6;
const int steptime = 350;
volatile int pwm_value = 0;
volatile int prev_time = 0;
int delay_blink = 50;
int delay_blink2 = 250;
int delay_blink3 = 500;
void setup() {
servo1.attach(5); // Servo an Pin 10
servo2.attach(6); // Servo an Pin 11
pinMode(servopower, OUTPUT);
pinMode(servo1Pin, OUTPUT);
pinMode(servo2Pin, OUTPUT);
Serial.begin(115200);
// when pin D2 goes high, call the rising function
attachInterrupt(0, rising, RISING);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
if (pwm_value > 200 && pwm_value < 221)
{
digitalWrite(servopower, HIGH);
digitalWrite(LED_BUILTIN, HIGH);
servo1.write(0); // max down position / startposition
servo2.write(150);
delay(steptime);
servo1.write(160); //max up position / pos1
servo2.write(0);
delay(steptime);
servo1.write(40); //mid position / pos2
servo2.write(75);
delay(steptime);
servo1.write(112); //pos3
servo2.write(150);
delay(steptime);
servo1.write(40); //pos4
servo2.write(37);
delay(steptime);
servo1.write(120); //pos5
servo2.write(112);
delay(steptime);
servo1.write(0); //pos6
servo2.write(0);
delay(steptime);
servo1.write(80); //pos7
servo2.write(75);
delay(steptime);
servo1.write(40); //pos8
servo2.write(37);
delay(steptime);
servo1.write(120);
servo2.write(112);
delay(steptime);
servo1.write(80);
servo2.write(75);
delay(steptime);
servo1.write(40);
servo2.write(112);
delay(steptime);
servo1.write(80);
servo2.write(75);
delay(steptime);
servo1.write(160);
servo2.write(0);
delay(steptime);
servo1.write(120);
servo2.write(37);
delay(steptime);
servo1.write(40);
servo2.write(112);
delay(steptime);
servo1.write(120);
servo2.write(37);
delay(steptime);
servo1.write(0);
servo2.write(150);
delay (steptime);
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(servopower, LOW);
pwm_value = 0;
}
if (pwm_value > 400 && pwm_value < 410)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(delay_blink);
digitalWrite(LED_BUILTIN, LOW);
delay(delay_blink);
pwm_value = 0;
}
if (pwm_value > 600 && pwm_value < 610)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(delay_blink);
digitalWrite(LED_BUILTIN, LOW);
delay(delay_blink);
pwm_value = 0;
}
else if (pwm_value > -10 && pwm_value < 10) {
digitalWrite(LED_BUILTIN, LOW);
}
}
void rising()
{
attachInterrupt(0, falling, FALLING);
prev_time = micros();
}
void falling()
{
attachInterrupt(0, rising, RISING);
pwm_value = micros() - prev_time;
Serial.println(pwm_value);
}