Blinkmuster gekoppelt an Modeschalter

Status
Nicht offen für weitere Antworten.

Crashdiver

Neuer Benutzer
#1
Hallo Community,
zuerst möchte ich, da dies hier mein erster Beitrag in diesem Forum ist, mich kurz vorstellen.
Ich heisse Markus und wohne in der Nähe von Ramstein / Kaiserslautern.
Modellbau betreibe ich mit einigen Pausen seit etwa 25 Jahren, bisher vorwiegend Flächenmodelle. Vor etwa einem halben Jahr habe ich meine Liebe für Multicopter und FPV entdeckt.
Da ich an meiner Taranis die Sprachausgabe für den Modeschalter (Stufenschalter 5-Fach) nicht zum laufen bekommen habe, habe ich stattdessen die LED-Streifen der Beleuchtung mit verschiedenen Blinkmustern versehen.
Diese werden dann mitsamt den Flugmodes umgeschaltet.
Verwendet hab ich einen Attiny45 den ich mittels Arduino Uno programmiert habe.

Ein Video von der Funktionsweise:
https://www.youtube.com/watch?v=JZnnqzKazLE

Hier der Code:
Code:
/*
  ACL Attiny45
  
  Outputs: Pin 5+6 + Pin 2 for RTL / Failsafe 
  Input: Pin 7
  
  Mode:
  1 - LED-Strips an
  2 - abwechselnd Doppelblinks
  3 - Doppel und Tripleblinks
  4 - abwechselnd Tripleblinks
  5 - Tripleblinks
  6 -  Wechselblink LED-Strips und Tripleblitz an Pin 2 für RTL auf Flugmode 5

  modified 28. November 2015
  by Markus Schmidt
 */
int a;

void setup() {
  // Initialisiert Pins 2, 5 und 6 als Output und Pin 7 als Input für RC.
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode (2, INPUT);
}

void loop (){
a = pulseIn(2,HIGH,24000);//Liest Eingangssignal,an Pin 7

if(a>900 && a<1230)  //Wenn Eingangssignal zwischen 900 und 1230 -> Mode 1, dann Licht an
{  
  digitalWrite (0, HIGH);
  digitalWrite (1, HIGH);
  digitalWrite (3, LOW);
 } 
if(a>1231 && a<1360)  //Wenn Eingangssignal zwischen 1231 und 1360 -> Mode 2, dann Wechselblinken doppelt
{
  digitalWrite(0, HIGH);   
  delay(150);              
  digitalWrite(0, LOW);     
  delay(150);               
  digitalWrite(0, HIGH);    
  delay(150);               
  digitalWrite(0, LOW);     
  delay(300);                     
  digitalWrite(1, HIGH);    
  delay(150);               
  digitalWrite(1, LOW);    
  delay(150);               
  digitalWrite(1, HIGH);    
  delay(150);               
  digitalWrite(1, LOW);     
  delay(300);               
}
if(a>1361 && a<1490)  //Wenn Eingangssignal zwischen 1361 und 1490 -> Mode 3, dann Wechselblinken Triple und Doppel
{
  digitalWrite(0, HIGH);   
  delay(70);              
  digitalWrite(0, LOW);     
  delay(70);               
  digitalWrite(0, HIGH);    
  delay(70);               
  digitalWrite(0, LOW);     
  delay(70);               
  digitalWrite(0, HIGH);   
  delay(70);               
  digitalWrite(0, LOW);    
  delay(100); 
  digitalWrite(1, HIGH);    
  delay(150);               
  digitalWrite(1, LOW);    
  delay(150);               
  digitalWrite(1, HIGH);    
  delay(150);               
  digitalWrite(1, LOW);     
  delay(300);      
  
  
}
if(a>1491 && a<1620)  //Wenn Eingangssignal zwischen 1491 und 1620 -> Mode 4, dann Wechselblinken Tripel  
{
  digitalWrite(0, HIGH);   
  delay(70);              
  digitalWrite(0, LOW);     
  delay(70);               
  digitalWrite(0, HIGH);    
  delay(70);               
  digitalWrite(0, LOW);     
  delay(70);               
  digitalWrite(0, HIGH);   
  delay(70);               
  digitalWrite(0, LOW);    
  delay(100);              
  digitalWrite(1, HIGH);    
  delay(70);               
  digitalWrite(1, LOW);    
  delay(70);               
  digitalWrite(1, HIGH);    
  delay(70);               
  digitalWrite(1, LOW);     
  delay(70);               
  digitalWrite(1, HIGH);    
  delay(70);               
  digitalWrite(1, LOW);     
  delay(100);  
 } 
if(a>1621 && a<1749)  //Wenn Eingangssignal zwischen 1621 und 1749 -> Mode 5, dann Tripelblinken
{
  digitalWrite(0, HIGH); 
  digitalWrite(1, HIGH);    
  delay(70);              
  digitalWrite(0, LOW);
  digitalWrite(1, LOW);     
  delay(70);               
  digitalWrite(0, HIGH); 
  digitalWrite(1, HIGH);   
  delay(70);               
  digitalWrite(0, LOW); 
  digitalWrite(1, LOW);    
  delay(70);               
  digitalWrite(0, HIGH);
  digitalWrite(1, HIGH);   
  delay(70);               
  digitalWrite(0, LOW);
  digitalWrite(1, LOW);    
  delay(300);              
}
if(a>1750 && a<2100)  //Wenn Eingangssignal zwischen 1750 und 2100 -> Mode 6, dann Blinken LED-Streifen und Tripleblitz Landelicht an Pin 2
{
  digitalWrite(0, HIGH); 
  digitalWrite(1, HIGH);    
  delay(150);              
  digitalWrite(0, LOW);
  digitalWrite(1, LOW);     
  delay(150);
  digitalWrite(3, HIGH);   
  delay(70);              
  digitalWrite(3, LOW);     
  delay(70);               
  digitalWrite(3, HIGH);    
  delay(70);               
  digitalWrite(3, LOW);     
  delay(70);               
  digitalWrite(3, HIGH);   
  delay(70);               
  digitalWrite(3, LOW);    
  delay(150);   
}
{
  digitalWrite (3, LOW);
}
}
Hier der Schaltplan:

Anhang anzeigen 142370

Verbesserungsvorschläge sind immer willkommen :D !

Gruß Markus
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten