- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Relais-Zeitsteuerung mit Digispark

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.10.2013
    Beiträge
    8

    Relais-Zeitsteuerung mit Digispark

    Anzeige

    Powerstation Test
    Hallo Leute
    da ich bis jetzt noch nicht so viel vom Programmieren verstehe, wende ich mich vertrauensvoll an Euch, mit der Bitte bei einem kleinen Sketch zu helfen.
    Habe hier einen Digispark mit aufgestecktem Relais.
    Der Sketch sieht volgendermaßen aus:
    void setup()
    {
    // Initialize the relay pin as output
    pinMode(5, OUTPUT);
    }

    void loop()
    {
    digitalWrite(5, HIGH); // Turn the relay on
    delay(2000); // Wait for a second
    digitalWrite(5, LOW); // Turn the relay off
    delay(3000); // Wait for a second
    }
    Das Relais schaltet bei angelegter 5V Spannung ein und nach der hinterlegten Zeit ( delay ) wieder aus und wieder ein.
    Nun möchte ich aber, dass das Relais nach angelegter Spannung ein schaltet und nach der hinterlegten zeit wieder ausschaltet und aus bleibt.
    Es liegt sicherlich an der Schleife ( loop ), aber ich finde keinen Befehl, das das Relais aus bleibt.
    Ich hoffe, daß mir jemand da weiter helfen kann.
    Viele Grüße
    Mexico67

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.059
    Die Loop ist vermutlich eine schleife. Diese wird immer durchlaufen, also nach delay(3000) kommt wieder der erste Befehl. Das ist sicher nicht das gesamte Programm. Normalerweise hast du ein main, das ist das Hauptprogramm. Poste einmal das gesamte Programm, aber bitte mit den Code Tags (<code> Programm</code>). Statt den <> Zeichen musst du [] nehmen. Dann sieht es so aus
    Code:
     Programm
    MfG Hannes

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    29.10.2013
    Beiträge
    8
    Hallo Hannes,

    Herzlichen Dank für Deine Antwort.

    Leider habe ich für den Digispark keinen anderen Sketch

    Habe den Sketch für das Relais hier http://digistump.com/wiki/digispark/tutorials/relay herunterkopiert und mit dem Programm Digispark-Arduino 1.0.4 kompeiliert und dann in den Digispark geladen.Danach schaltet das Relais nach Spannungsanlegung wie beschrieben.

    Laut Arduino-Befehlsliste ist Loop eine Schleife, aber wenn ich die Loop entferne, bringt mit das Programm eine Fehlermeldung.
    void setup() {
    // Initialize the relay pin as output
    pinMode(5, OUTPUT);
    }

    {
    digitalWrite(5, HIGH); // Turn the relay on
    delay(1000); // Wait for a second
    digitalWrite(5, LOW); // Turn the relay off
    delay(1000); // Wait for a second
    }

    Fehlermeldung:
    expected unqualified-id before`{`token
    sketch_ian28a:6: error: expected unqualified-id before`{`token

    MFG Mexico67 (Richard)

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.059
    Mit der Software kenne ich mich leider nicht aus. Ich arbeite nur mit AVR-Studio.

    Was du machen kannst (nicht die eleganteste Variante) ist das du eine variable nimmst. Die Ausgänge schaltest du nur wenn die Variable 0 ist. Nach dem ersten Durchlauf änderst du die Variable auf 1, somit werden die Ausgänge nicht mehr geschalten.

    MfG Hannes

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    29.10.2013
    Beiträge
    8
    Hallo Hannes,

    vielen Dank für Deine Antwort und Hilfe.
    Habe jetzt die Schleife (Loop) mal gelassen und Delay Low geändert. Ist zwar nicht das was ich wollte, aber eventuell ist noch jemand da, der mir weiter helfen kann. Hier nochmal der sketch.
    void setup()
    {
    pinMode(5, OUTPUT); // Initialize the relay pin as output
    }

    void loop()
    {
    digitalWrite(5, HIGH); // Relais an Pin 5 einschalten
    delay(5000); // schalte Relais nach 5 Sekunden aus
    digitalWrite(5, LOW); // Relais am Pin 5 ausschalten
    delay(86400000); // schalte Relais nach 24 Stunden wieder ein
    }
    somit schaltet das Relais bei Spannungsanlegung ein und nach 5 Sekunden wieder aus und alle 24 Stunden das gleiche.

    Viele Grüße
    Mexico67 (Richard)

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    Du solltest Dich dringend mit den Grundlagen der Arduino-Programmierung vertraut machen. Grundsätzlich sollte man delay() eigentlich immer versuchen zu vermeiden ... also auch das delay(5000) - zumindest wenn Du vorhast, die Software noch zu erweitern. Wenn sie wirklich nichts anderes machen soll:

    boolean ReRun = false;

    void setup()
    {
    pinMode(5, OUTPUT); // Initialize the relay pin as output
    }

    void loop()
    {
    if (ReRun == false) {
    digitalWrite(5, HIGH); // Relais an Pin 5 einschalten
    delay(5000); // schalte Relais nach 5 Sekunden aus
    digitalWrite(5, LOW); // Relais am Pin 5 ausschalten

    ReRun = true;
    }
    }

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    29.10.2013
    Beiträge
    8
    Hallo redround,

    Du solltest Dich dringend mit den Grundlagen der Arduino-Programmierung vertraut machen.

    Entschuldigung!! Wie ich bereits am Anfang geschrieben habe, bin ich noch Anfänger der Programmierung, deswegen weiß ich über die Befehle noch nicht Bescheid.
    Die Software möchte ich nicht erweitern, da sie jetzt den Zweck erfüllt, übrigens auch ohne den Sketch groß umzustellen, sondern nur mit dem Befehl (while(1) )
    Das Reset erfolgt ja mit der Spannungsunterbrechung.

    Das Relais soll mir nur bei Spannungsanlegung kurzzeitig einen Taster an einem Gerät ( TV-Box) ersetzten.
    Des weiteren ist auf dem AT-Tiny 85 nur ca. 6KB Platz also für kein größeres Programm.
    Auch der Code ist von der Hersteller-Fa. des Digispark für das Relais angegeben worden und ich denke daß es dann mit dem delay auch passen muß.
    Trotzdem vielen Dank für Ihre Hilfe.
    Ihr angegebener Code funktioniert auch.

    MFG
    Mexico67

    PS: Wenn Sie mich schon kritisieren, wo bleibt dann der alternative Sketch ohne delay von ihrer seite??
    Geändert von mexico67 (29.01.2016 um 18:13 Uhr)

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.059
    Delay sollte man wenn möglich vermeiden. Für einfache Dinge reicht es aber. Besser wäre es mit Interrupts zu arbeiten.

    MfG Hannes

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    29.10.2013
    Beiträge
    8
    Hallo Hannes,

    vielen Dank nochmal für Deine Nachricht.

    Delay sollte man wenn möglich vermeiden.

    Warum wird dann sehr oft Delay verwendet???

    Also ich habe jetzt einige Sketche im Netz angeschaut und fast in jeden wird der Befehl Delay verwendet, wenn es um Zeitvariablen geht. Da sind auch sehr lange Programme bei. Z.B. wenn es um Windgeschwindigkeiten geht.

    Selbst im Arduino-Buch "Grundlagen zur Programmierung" von U.S findest du fast keinen Sketch ohne Delay. z.B. Taster entprellen; Ein-und Ausschaltverzögerung usw.


    Viele Grüße
    Mexico 67

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    Das mit den Grundlagen war keineswegs als Angriff sondern vollkommen ernst gemeint. Wer sich in der Zukunft nur halbwegs intentsiv mit Digisparks / Arduinos beschäftigen will, kommt da einfach nicht drum rum. Und das Anlegen von Variablen oder die Verwendung von If/Then Entscheidungen gehört zur absoluten Grundlage jeder Programmiersprache.

    Delay sollte man deshalb nicht verwenden, weil es die Ausführung des gesamten Programm-Codes blockiert. So kann man zum Beispiel nicht mehr auf Tasten-Eingaben oder andere Signale reagieren. In den Beispielen wird es deshalb immer verwendet, weil es einfach ist und man in der Regel ja gerade etwas anderes demonstrieren will. In einem Beispiel einen sog. endlichen Zustandautomaten zu zeigen nur um zu veranschaulichen, wie man einen Pin umschaltet ist nicht besonders lehrreich!

    Ein Sketch, wie man eine LED ohne Verwendung von Delay zum Blinken bringt, ist übrigens sogar in den Beispielen der IDE enthalten (BlinkyWithoutDelay) ... deshalb muss hier keiner zeigen, wie es geht! Wie gesagt: wenn die Software nie was anderes machen soll als beschrieben und klar ist, dass sie nie erweitert wird, dann kann man das auch so machen. Meist "wächst" Software aber mit der Zeit ... und dann macht es Sinn, es gleich von Anfang an "richtig" zu machen.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Digispark PRO jetzt auch in Deutschland verfügbar
    Von redround im Forum Arduino -Plattform
    Antworten: 3
    Letzter Beitrag: 19.12.2014, 12:20
  2. Zeitsteuerung+Temperaturmessung
    Von Projekt 2252 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 22
    Letzter Beitrag: 10.04.2012, 20:22
  3. Zeitsteuerung
    Von Maxibot im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 20.08.2010, 00:33
  4. Zeitsteuerung für asuro
    Von Hans2 im Forum Asuro
    Antworten: 16
    Letzter Beitrag: 13.12.2008, 17:55
  5. Hilfe bei Zeitsteuerung
    Von Blamaster im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 40
    Letzter Beitrag: 13.03.2007, 20:46

Berechtigungen

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

Labornetzteil AliExpress