- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 188

Thema: Chassis zusammenbauen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von Rabenauge Beitrag anzeigen
    Ich mach alles in Zeitscheiben: es läuft ein simpler Timer (nach dem Beispielprogramm BlinkWithoutDelay), der mir, beispielsweise, jede Sekunde einen Tick gibt. Diese Ticks werden gezählt, so lange, wie ich halt Aufgaben zu vergeben habe, und bei jeder Tick-Zahl wird eine Aufgabe erledigt.
    Danach wird der Tick-Zähler zurückgesetzt, und der ganze Zyklus geht von vorne los.
    Auf diese Weise schafft so ein kleiner Arduino erstaunlich viel.....es ist z.B. vollkommen unnötig, den Akku alle paar Millisekunden abzufragen, im XPlorer mache ich das nur alle 20 Sekunden, das genügt völlig, und ich hab 19 Sekunden, auf die ich andere Aufgaben verteilen kann.
    Diesen Timer kann man beliebig langsam (oder schnell, der könnte auch Zehntelsekunden oder hundertstel) ticken lassen, so kann man z.B. auch sicherstellen, dass US-Sensoren sich nie gegenseitig in die Quere kommen (Echos abklingen lassen) usw.
    Unglaublich einfach und unglaublich flexibel.
    Da steht natürlich in Wirklichkeit noch bisschen Kleinkram drin (man sollte sicherstellen, dass der Arduino beim "Lies Akkustand-Tick" nicht 152x den Akku ausliest, usw. aber das Prinzip ist ganz einfach.
    Hi Sly,
    ich lerne neue sachen (auch simple timer ) gerne aus der kombination von beschreibung und beispiel und der "blink without delay" code ist nun ein zu simples beispiel. Würde Dir das was ausmachen hier Deinen code öffentlich zu machen? Eine PM geht natürlich auch, aber vielleicht gibt's noch andere die lernen wollen?

    wäre super, dann könnte ich endlich meine loop für den outdoor fertigschreiben ohne ständig verzweifeln zu müssen...
    gruß inka

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.211
    Aber gern doch.
    Hier mal ein paar Auszüge aus dem Code des XPlorer1, da wird das auch so gehandhabt.

    Zuerst bauen wir und nen Timner zusammen, der anhand von den millis() bei Bedarf "Ticks" erzeugt:

    Code:
    void timer()               //***************** mehrere Sekundenticks erzeugen **********************************
    {
    
    unsigned long aktuelleMillis = millis();
    
      if (aktuelleMillis - vergangeneMillis >= interval)  // Sekunde um
      {
        vergangeneMillis = aktuelleMillis;
         halbeTick ++;                                // 500ms sind um
       if(halbeTick>2)                                // hier ist eine volle Sekunde vorbei
       {
        halbeTick=1;                                  // wechselt alle halbe Sekunde
        sekundenTick++;                               // wechselt jede volle Sekunde
        gemachtFlag=0;                                //  Aufgabe-erledigt-Flag zurücksetzen
       }
       if(sekundenTick==5)                            // mehr brauchen wir nicht
       {
        sekundenTick=0;
       }
    
      }
    }
    Der hier erzeugt jede halbe Sekunde nen Tick, und zusätzlich zählt er die Sekunden jedesmal bis fünf hoch.
    Im Grunde ein umgeschriebenes "blink_without_delay"...
    Im Hauptprogramm muss dieser Timer natürlich auch "hin und wieder" aufgerufen werden (immer, wenn Zeit ist), das Stück Code ist tatsächlich das _komplette_ Hauptprogramm:

    Code:
    void loop() 
    {
     timer();
     manageLichter();
     sekundenAufgaben();                          // je nachdem, was der Timer grade hat...
     delay(2);                                           // Zeit lassen für Anfragen vom NodeMCU
    }
    Im Unterprogramm "sekundenAufgaben" wird nun aufgedröselt, je nachdem, welchen Wert der Timer gerade hat:

    Code:
    void sekundenAufgaben()
    {
      if((sekundenTick==0)&&(gemachtFlag==0))     //wenns nicht schon erledigt wurde...
      {
        messeAkku();
      }
    
      if((sekundenTick==1)&&(gemachtFlag==0))
        {
          berechneLichtstaerke();
          gemachtFlag=1;
        }
    }
    Die gewünschten Intervalle (in denen der Timer halt "tickt") stellt man dann einfach mit passenden Konstanten ein:

    Code:
    unsigned long vergangeneMillis = 0;  // hier der letzte Tick
    const long interval = 500;           // Intervall, 500 Millisekunden
    Die Variable "gemachtFlag" verhindert, dass die jeweilige Aufgabe innerhalb des einen Intervalls ...zigmal erledigt wird- nur wenn die auch 0 ist, wird die Aufgabe abgearbeitet, und nachdem sie erledigt wurde, wird das Flag auf 1 gesetzt.

    Im Code zum XP2 hab ich inzwischen fünf oder sechs solche Flags-der hat einiges mehr zu tun, hehe.
    Der zählt aber auch die Sekunden bis 20 hoch....das Beispiel ist in alle möglichen Richtungen anpassbar, man kann den Timer schneller oder langsamer ticken lassen, man kann ihn weiter oder weniger weit hochzählen lassen, ganz wie man es gerade braucht.
    Das ist natürlich keine Atomuhr- da der nur abgefragt wird, wenn keine anderen Aufgaben zu erledigen sind (hier z.B. kommt noch das manageLichter() dazwischen), geht er nicht supergenau, aber wen jucken Abweichungen von nen paar Millisekunden denn- meistens ist das Wurst.

    Falls du noch Fragen dazu hast- frag einfach.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Hallo nochmal an dieser Stelle!

    Vor einiger Zeit hatte ich hier begonnen, ein Chassis zusammenzubauen. Irgendwann entschloss ich mich, das in meinen Blog auszulagern. Da es doch etwas umfangreicher werden würde. Mit etlichen Zwischenstationen bin ich nun an einem zunächst zufriedenstellenden Punkt angelangt, an dem ich mir vielleicht auch erst einmal etwas Ruhe gönne. Viel Fehlersuche, viel Arbeit ... über Tage. Gerade jetzt, zuletzt im Endstadium, wo ich dann auch mal das Ganze endgültig zusammenbekommen wollte. Es ist noch nicht ganz perfekt, da gibt es auch an den Platinen hier und da noch etwas zu tun, vor allem die Verkabelung des Ladeanschlusses an den Platinen, aber vom Grund her funktionsfähig. Ich denke, es hat sich gelohnt!

    Freundlichen Gruß
    Moppi


    Hier nochmal eine Übersicht an dieser Stelle, über das Gesamte:

    Prototype Car
    Prototype Car II
    Prototype Car II, Frame
    Prototype Car II, Einlage für den Rahmen
    Prototype Car II, Motorsteuerung I
    Prototype Car II, Motorsteuerung II
    Prototype Car II, Systemplatine
    Prototype Car II, Platinenmontage
    Prototype Car II, Software - Micro Code
    Prototype Car II, Verifizierung
    Prototype Car II, SD-Kartenmodul
    Prototype Car II, Browseranwendung
    Prototype Car II, Inbetriebnahme

Ähnliche Themen

  1. Laborstecker zusammenbauen
    Von Cysign im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 10
    Letzter Beitrag: 15.02.2017, 12:03
  2. Waschmaschine Bosch WFO 2881/16 --- Motor zusammenbauen
    Von Unregistriert im Forum Motoren
    Antworten: 2
    Letzter Beitrag: 26.02.2016, 13:30
  3. hilfe beim zusammenbauen was ist was?
    Von bugmenot im Forum Asuro
    Antworten: 23
    Letzter Beitrag: 05.08.2007, 16:37
  4. Asuro zusammenbauen! kleines C1 C8 Problemchen...
    Von Illuminat23 im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 21.09.2006, 20:26
  5. Servo wieder zusammenbauen!
    Von Gast123431 im Forum Motoren
    Antworten: 8
    Letzter Beitrag: 19.11.2004, 06:06

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress