- LiFePO4 Speicher Test         
Ergebnis 1 bis 6 von 6

Thema: Ein-Aus Schalter mit Attiny85 und LED

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

    Idee Ein-Aus Schalter mit Attiny85 und LED

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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 Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.052
    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
    3
    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 Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.052
    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

  5. #5
    Neuer Benutzer
    Registriert seit
    28.04.2018
    Ort
    Timisoara
    Beiträge
    3
    Blog-Einträge
    1
    Hallo Hannes,
    mit meiner Antwort hat es etwas gedauert. Ich habe nun die gesamte Schaltung neu ueberarbeitet und nun funktioniert alles so wie es soll. In der Schaltung sind nun zwei Attiny's verbaut (bei einem Preis von knapp ueber einem Euro leistbar). Meine Ueberlegung war diese, dass ich bei jeden Ein bzw. Ausschaltprozess nicht jedes mal warten muss bis das Program einen Befehl abgearbeitet hat. Es soll ja, wenn der Taster einen Impuls gibt sofort reagieren. Jetzt laueft das ganze wie folgt ab:
    1.) Einschalten --> Relay zieht an und LED lauechtet permanent
    2.) Ausschalten --> Relay loest und LED pulsiert (ein-aus dimmen)
    Aufgeteilt ist das so. Der erste Attiny lauert permanent auf ein Signal und toggled bei bedarf . Der zweite Attiny wird zugeschaltet wenn die Schaltung in "Standby" geht und arbeitet nun die "Dimmer" Schleife ab. Dies bedeutet, dass im "Standby" Modus alle beide Attinys ihre Schleifen ab arbeiten, bis eben wieder ein Impuls kommt und der erste Attiny den zweiten abschaltet und wie oben beschrieben alles von neuen beginnt. Das Projekt ist also abgeschlossen. Vielen Dank nochmals! Gruesse Gernot
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken IMG_8764.jpg  

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.052
    2 Mikrocontroller sind völlig überzogen. Mit soetwas langweilt sich ein uC sogar noch mit den gedrosselten 1MHz (Werkseinstellung). Bei 1MHz hast du 1Million Takte pro Sekunde, die meisten Befehle benötigen 1Takt. Wenn du 2 uC benötigst, da es mit einem nicht funktioniert würde ich im Programm suchen.

    MfG Hannes

Ähnliche Themen

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

Stichworte

Berechtigungen

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

LiTime Speicher und Akkus