-         
Ergebnis 1 bis 4 von 4

Thema: Ein-Aus Schalter mit Attiny85 und LED

  1. #1
    Neuer Benutzer
    Registriert seit
    28.04.2018
    Ort
    Timisoara
    Beiträge
    2
    Blog-Einträge
    1

    Idee Ein-Aus Schalter mit Attiny85 und LED

    Anzeige

    Hallo!
    Ich habe eine Schaltung gebaut um einen Verbraucher mit einem Taster ein oder ausschalten zu koennen. Die Idee war diese mit einem Attiny85 zu verwirklichen.
    Die Schaltung und auch das Program funktioniert . Nun wuerde ich es gerne so machen, dass wenn die Schaltung in bereitschaft ist ( Relay = LOW ) das LED weiter langsam ein und aus geht um die Bereitschaft (Standby) zu signalisieren und bei druecken des Tasters die Schaltung sofort von Standby auf ein (Relay auf HIGH und LED auf permanent HIGH) geht.
    Vielleicht kann mir da jemand helfen das Program zu ergaenzen und so das Problem zu loesen? Vielen Dank im Voraus!
    Hier das Program in der jetzigen funktionierenden Form:

    int relayPin = 0; // Relay Current
    int ledPin = 3; //Led
    int tasterPin = 2;
    boolean ButtonPressed = false;
    boolean Toggle =false;
    int Debounce = 0;


    void setup() {

    pinMode(ledPin, OUTPUT); // LED
    pinMode(relayPin, OUTPUT); // Relay Current
    pinMode(tasterPin, INPUT);


    digitalWrite(ledPin, LOW);
    digitalWrite(relayPin, LOW);
    }


    void loop() {
    if (digitalRead(tasterPin) == LOW)
    {
    Debounce++;
    }
    else
    {
    Debounce = 0;
    ButtonPressed = false;
    Toggle = false;
    }
    if (Debounce >= 5000)
    {
    ButtonPressed = true;
    {

    }
    if (ButtonPressed == true && Toggle == false)
    {
    Toggle = true;
    toggle();
    }
    }


    }
    void toggle()
    {
    digitalWrite(relayPin, !digitalRead(relayPin));
    digitalWrite(ledPin, !digitalRead(ledPin));
    delay (4000);
    }

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    30
    Beiträge
    4.662
    Wilkommen im Forum,
    ich kenne mich mit Arduino nicht aus, ich programmiere in C.

    Du hast aber ein {} zuviel drinnen, was die Variable Toggle macht verstehe ich auch nicht (ist in diesem Programm sinnlos), kommentiere sie aus und schaue was passiert. Wenn du Code postest bitte mit Codetags versehen [ code] dein code [ /code] (Leerzeichen entfernen).

    Dann sieht dein Code so aus
    Code:
    int relayPin = 0; // Relay Currentint ledPin = 3; //Led
    int tasterPin = 2;
    boolean ButtonPressed = false;
    boolean Toggle =false;
    int Debounce = 0;
    
    
    
    
    void setup()
    {
    
    
        pinMode(ledPin, OUTPUT); // LED
        pinMode(relayPin, OUTPUT); // Relay Current
        pinMode(tasterPin, INPUT);
    
    
    
    
        digitalWrite(ledPin, LOW);
        digitalWrite(relayPin, LOW);
    }
    
    
    
    
    void loop()
    {
        if (digitalRead(tasterPin) == LOW)
        {
            Debounce++;
        }
        else
        {
            Debounce = 0;
            ButtonPressed = false;
            Toggle = false;
        }
        
        if (Debounce >= 5000)
        {
            ButtonPressed = true;
        }
        
        if (ButtonPressed == true && Toggle == false)
        {
            Toggle = true;
            toggle();
        }
    }
    
    
    void toggle()
    {
        digitalWrite(relayPin, !digitalRead(relayPin));
        digitalWrite(ledPin, !digitalRead(ledPin));
        delay (4000);
    }
    Warum du ein Delay von 4s hast verstehe ich auch nicht.

    Ich würde in der Loop am Ende ein kurzes Delay einbauen (z.B. 10ms). Dann musst du natürlich das Debounce anpassen. Anschließend zählst du eine Variable hoch (wenn im Standby). Bei erreichen eines bestimmten Wertes änderst du den Zustand der Led. Wenn du die Ausgänge einschaltest setzt du den Ledcounter auf 0. Wenn du das Relays und die Led togglest würde ich nicht die Ausgänge invertieren sondern ein bzw ausschalten. Im Standby kannst du die Led einfach invertieren, da sich einfach der Zustand ändern soll. Der Grund ist das die Led und das Relays gegengleich angesteuert werden kann. Als Beispiel: Im Standby wird die Led eingeschaltet, jetzt drückst du die Taste jetzt wird einfach Relays und Led invertiert, somit ist die Led aus und das Relays ein.

    Am Ende der Loop fügst du also noch ein (Pseudocode, du musst das selbst umsetzen)
    Code:
    if (Standby != true)
    {
        Ledcounter++
        if (Ledcounter >= 99)        => bei Delay von 10ms ist die Led ~1s ein und ~1s aus
        {
            Led invertieren
            Ledcounter = 0
        }
    }
    delay 10ms
    MfG Hannes

  3. #3
    Neuer Benutzer
    Registriert seit
    28.04.2018
    Ort
    Timisoara
    Beiträge
    2
    Blog-Einträge
    1
    Hallo Hannes,
    vielen Dank fuer die Antwort! Mit dem Relay wird ein Trafo geschaltet. Die Last ist daher fuer einige (das Wort "einge" nicht woertlich nehmen) ms sehr hoch. Um ein versehentliches ein, aus, einschalten zu vermeiden, habe ich das delay von 4000 eingebaut um eben den Taster fuer diese Zeit zu sperren. Dies ist fuer die Geraetesicherungen und fuer die dahinter liegende Komponentenkette (Mosfet etc.) gesuender. Vielen Dank auch fuer den Code! Ich werde das mal gleich ausprobieren. Ich muss zugeben, dass ich in dieser Materie (Programmieren) nicht besonders bewandert bin, da ich mich mehr mit der Elektronik (Urform = entsprechend meines Alters ) beschaeftige. Wie gesagt! Ich werde das mal schauen ob ich das hinbekomme und sage dann bescheid!
    Gruesse Gernot

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    30
    Beiträge
    4.662
    Das ist natürlich sinnvoll. Ich würde das aber auch mit einem Zähler (wie bei der Led) machen, so kannst du auch anzeigen ob das Umschalten gesperrt ist oder nicht.

    MfG Hannes

Ähnliche Themen

  1. ATtiny85 Speicher knapp, was tun?
    Von spunky9003 im Forum AVR Hardwarethemen
    Antworten: 23
    Letzter Beitrag: 21.12.2017, 20:46
  2. EEPROM.write bei Attiny85
    Von Gästin im Forum Arduino -Plattform
    Antworten: 4
    Letzter Beitrag: 08.12.2014, 22:33
  3. Suche Attiny85 im DIP-Gehäuse
    Von RAM im Forum Kaufen, Verkaufen, Tauschen, Suchen
    Antworten: 2
    Letzter Beitrag: 16.10.2011, 14:43
  4. IR-Sensor am Attiny85
    Von Majanao im Forum AVR Hardwarethemen
    Antworten: 8
    Letzter Beitrag: 02.02.2011, 21:51
  5. Problem mit Timer1 bei ATTiny85
    Von Henry im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 26.04.2009, 15:51

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •