Hallo zusammen,
habe nun endlich meine Schaltung von Post 110 in den Rumpf eingebaut.
Habe aber die Belegung der Pins was Funktionen und Beleuchtung betrifft noch einmal angepasst.
Habe jetzt ca. 3 Stunden probiert und Fehlersuche betrieben.
Bis ich darauf gekommen bin, das bei Ausgabe im seriellen Monitor die ersten beiden Pins belegt werden.
Die Auswertung der beiden Sendersignale wollte überhaupt nicht klappen. Im Monitor wurde nur Müll angezeigt.
Jetzt funzt es aber einwandfrei. Manchmal sind es kleine Dinge auf die man erst mal kommen muss
- Positionsbeleuchtung und Landescheinwerfer über normalen Schalter am Heli einschalten ( onkl. Servo fahren )
- Doppelblitz ACLs
- Wechsellicht Scheinwerfer am Bug
- Taster an Sender wählt auf MP3 Player nächsten Titel an
- Schalter an Sender (drei Stellungen) schaltet später Zusatzfunktionen Winde oder Wasserpumpe für Löschtank
Hier mal mein aktueller Scatch. Eventuell kann sich ja noch jemand was abkupfern.
Wobei Ihr beim Thema Arduino kompetenter seit als ich.
Programm Bell UH-1H RAVEN 3
#include <Servo.h>
Servo SERVO1;
Servo SERVO2;
Servo SERVO3;
int Kanal7;
int Kanal8;
void setup() {
pinMode(0, OUTPUT); // Legt OUT 0 als Ausgang Leiste Pin7 ACL Unten fest > Blinkfrequenz
pinMode(1, INPUT); // Eingang Kanal7 von Sender
pinMode(2, INPUT); // Eingang Kanal8 von Sender
pinMode(3, INPUT_PULLUP); // Legt IN 3 als Eingang Schalter Beleuchtung fest
pinMode(4, OUTPUT); // Legt OUT 4 als Ausgang Leiste Pin 6 ACL Oben fest > Blinkfrequenz
pinMode(5, OUTPUT); // Legt OUT 5 als Ausgang Leiste Pin 5 Scheinwerfer Unten rechts fest
pinMode(6, OUTPUT); // Legt OUT 6 als Ausgang Leiste Pin 4 Scheinwerfer Unten links fest
pinMode(7, OUTPUT); // Legt OUT 7 als Ausgang Leiste Pin 3 Landescheinwerfer und Positionslampen fest
pinMode(8, OUTPUT); // Legt OUT 8 als Ausgang Relais 1 fest > Motor Wasserpumpe Ein
SERVO1.attach(9); // Legt PWM OUT 9 für das Servo des Landescheinwerfers fest.
SERVO2.attach(10); // Legt PWM OUT 10 für das Servo des Lasthaken fest.
SERVO3.attach(11); // Legt PWM OUT 11 für das Servo des Winde fest.
pinMode(12, OUTPUT); // Legt OUT 12 als Ausgang Relais 2 fest > Vorwärts MP3 Player
pinMode(13, OUTPUT); // Legt OUT 13 als Ausgang Relais 3 fest > Play MP3 Player
//Serial.begin(9600); // Startet die Datenübertragung mit 9600 Baud
}
void loop() { // Loop starten// Positionsbeleuchtungen einschalten,
if (digitalRead(3) == LOW) { // Schalter am Input 3 auf Platine schaltet Beleuchtung ein
digitalWrite(7,HIGH); //Schaltet Landescheinwerfer und Positionslampen ein
}
else {
digitalWrite(7,LOW); //Schaltet Landescheinwerfer und Positionslampen aus
}
// Relais K1 9V Ausgang für Pumpe
if (digitalRead(3) == LOW) {
digitalWrite(8,HIGH); //Schaltet Relais K1 ein.
}
else {
digitalWrite(8,LOW); //Schaltet Relais K1 aus.
}
// MP3 Player vorwärts schalten Relais K2
Kanal7 = pulseIn(1, HIGH, 25000); //Ließt Eingangssignal am Input 1 an Platine ein Taster Ruhestellung ca.1100.
//Serial.print("RX-K7 (ms): ");
//Serial.println(Kanal7);
if (Kanal7 >=1600) { //Wenn Eingangssignal größer 1600 Signal ein Titel weiter
digitalWrite (12,HIGH); //Schaltet Relais K2 am Ausgang 12 Vorwärts am MP3 Player
}
if (Kanal7 <=1500){
digitalWrite (12,LOW);
}
// Schalten Relais K3
Kanal8 = pulseIn(2, HIGH, 25000); //Ließt Eingangssignal am Input 2 ein Stellung 1 ca.1100, Stellung 2 ca.1600, Stellung 3 ca.1900
if (Kanal8 >=1200) { //Wenn Eingangssignal
digitalWrite (13,HIGH); //Schaltet Relais K2 am Ausgang 13
}
if (Kanal8 <=1200){
digitalWrite (13,LOW);
}
// ACL einschalten und blinken lassen
unsigned long time = millis() % 2000; // Zeitachse zum schalten der ACL Beleuchtung
if (time <= 80 || time >=160 && time <=240) { // Schaltet zwischen zu den angegebenen Zeiten ACL Oben ein
digitalWrite(4, HIGH); // Ausgang ACL Oben ein
}
else {
digitalWrite(4, LOW);
}
if (time >= 1000 && time <= 1080 || time >=1160 && time <=1240) { // Schaltet zwischen zu den angegebenen Zeiten ACL Unten ein
digitalWrite(0, HIGH); // Ausgang ACL Unten ein
}
else {
digitalWrite(0, LOW);
}
// Bugscheinwerfer einschalten und blinken lassen
if (time <= 900) { // Schaltet innerhalb der ersten 900ms Bugscheinwerfer Links ein
digitalWrite(6, HIGH); // Ausgang Bugscheinwerfer Links
}
else {
digitalWrite(6, LOW);
}
if (time >= 1000 && time <=1900) { // Schaltet zwischen 1000ms und 1900ms Bugscheinwerfer Rechts ein
digitalWrite(5, HIGH); // Ausgang Bugscheinwerfer Rechts
}
else {
digitalWrite(5, LOW);
}
// Servo Landescheinwerfer ein/ausfahren und Landescheinwerfer ein/ausschalten
if (digitalRead(3) == LOW) { // Abfrage Schalter Input 3 auf Platine
SERVO1.write(140); // Servo fährt auf Position 140 Grad Landescheinwerfer ausfahren
delay(10); // Verzögerungszeit Landescheinwerfer einschalten
digitalWrite(6,HIGH); // Einschalten Landescheinwerfer am Ausgang 6
}
else
{
SERVO1.write(20); // Servo fährt auf Position 10 Grad Landescheinwerfer eingefahren
digitalWrite(6,LOW); // Ausschalten Landescheinwerfer am Ausgang 6
}
} //Programmende