• Die Forumsregeln und Nutzungsbedingungen findet ihr in der Navbar unter Impressum !
    Bitte unbedingt beachten!
    Wie überall im Leben gibt es Spielregeln, so auch hier!
    Die Datenschutzerklärung zum DSGVO findet ihr ebenfalls in der Navbar unter Datenschutzerklärung !
    Hinweis nach DSGVO :
    Es ist hier keinerlei Angabe erforderlich. Alle Angaben in diesem Bereich sind öffentlich sichtbar und werden freiwillig gemacht. Mit einem Eintrag in diesem Bereich erkenne ich dieses an, und bestätige die Datenschutzerklärung zur DSGVO für das Forum gelesen zu haben.

    Danke
  • Hallo Gast, beschränke dich hier bitte auf den Bereich der Elektronik. Die Fahrzeuge oder Gebäude, wo diese Elektronik eingebaut wird bitte in dem passenden Fachbereiich behandeln. Auch wenn Teile des Projektes dadurch im Forum doppelt vorhanden sind! Danke.

ATTiny Blinker und Warnblinker mit uPC

So, nachdem ich den Servosteller auch noch ein bisschen getunt habe konnte ich das Programm auc gut testen.
Der Baustein ist für ein Bremslicht & Rüchfahrscheinwerfer & Warnton. Die Pinbelegung ist in den Kommentaren mit drin.

Code:
// Schaltmodul über RCKanal mit Bremslicht und Rückfahrscheinwerfer und Rückfahrwarner
// für Attiny 85-20 mit 8 MHz 

const byte PIN_RC = 1; // PB1 ist an pin 6 -  wo das Empfängersignal eingelesen wird!!!!
volatile int RcValue;  // Eingelesener Wert direkt aus dem RAM w.g. volatile)

int timer_loop = 0; //Schleife bis LED aus
boolean Null = 0; // Nullstellung wird erkannt
boolean vorher_Null = 0; // Nullstellung vorher

const byte LED=3; // PB3  ist an pin 2 - Rückfahr LED weiß
const byte LEDrt=4; // PB4 ist an pin3 - Bremslicht rot

const byte speakerPin = 0;    // PB0 ist an pin 5  (PWM) - Lautsprecher
int frequency  = 1300; // 1300Hz 
int duration = 400;   // Dauer des Tons
int ton_loop = 0;  // Intervallzeit für den Ton


void setup() 
{ 
pinMode (LED, OUTPUT); // Rückfahrlicht
pinMode (LEDrt, OUTPUT); // Bremslicht LED
pinMode(PIN_RC, INPUT);  // Eingang für Empfängersignal an Pin 2   
digitalWrite(PIN_RC, HIGH); // pull-up Widerstand am Eingang
} 

void loop() 
{ 
   RcValue = pulseIn(PIN_RC, HIGH, 100000); // Aktuellen RC-Wert vom Empfänger einlesen, HIGH = Flanke, 100000 = Timeout
 if (RcValue < 1420) { 
  digitalWrite (LED,HIGH); // Rückfahrscheinwerfer ein
  ton_loop = ton_loop + 1; // als Ersatz für den Pausetimer gibt es dises Schleife
    if (ton_loop <=1) { // am Anfang Ton einschalten
    tone(speakerPin, frequency, duration); // 400 ms Ton ausgeben
    }
    if (ton_loop == 60) { // Intervallzeit für den Ton 
    ton_loop = 0;} // wenn Intervall voll, Loop wieder zurück setzen
}
if (RcValue >1451) { 
  digitalWrite (LED,LOW); // Rückfahrscheinwerfer aus
  ton_loop = 0; // Ton_loop aus
 }
 
if ((RcValue >1450) && (RcValue <1550)) {// Abfrage Nullstellung 
  Null = true;}
  
   if (vorher_Null == false && Null == true) { //vorher keine Null -> jetzt Null-> Bremslicht an
      digitalWrite (LEDrt,HIGH);
      timer_loop = 0; // timer auf 0 setzen
      }
    if (timer_loop == 200 || Null == false) { // wenn timer = 200 -> 10s oder wieder FWD bzw RVS, dann Bremslicht aus
    digitalWrite (LEDrt,LOW);
    }
vorher_Null = Null; // alten Null Wert speichern
Null = false;

timer_loop = timer_loop +1; // Timer um 1 hochzählen
if (timer_loop == 210) {  // bei 210 Timer löschen, sonst gibt es einen Überlauf!
  timer_loop = 0;}
}
 

Servonaut
Zurück
Oben Unten