-         

Ergebnis 1 bis 3 von 3

Thema: Arduino Variable Blinkfrequenz

  1. #1

    Arduino Variable Blinkfrequenz

    Anzeige

    Hi liebe Community,

    Ich hab mal versucht ein Sketch zu basteln, der die Auszeiten beim Blinken einer LED regelt. Folgender Sketch lässt die LED zwar Blinken aber das Regeln der Auszeit klappt noch nicht. Wer cool, wenn Ihr mir ein paar Verbesserungsmöglichkeiten und Ratschläge geben könntet.

    Hier mein Code:

    Code:
    int LED_PIN = 13;
    int LED_ON = 1000;      
    int LED_OFF = 3000;
    unsigned long ms;        
    unsigned long msLast;   
    boolean ledState;
    int writebyte=0;
    int blink_on=0;
    int serialinput;
    
    void setup(void)
    {
      pinMode(LED_PIN, OUTPUT);
      Serial.begin(19200);
    }
    
    void loop(void)
    {
      serialinput = Serial.read();
    
      if(blink_on == 1)
      {
        ms = millis();
        blinkloop();
      }
    
      if(serialinput == 'x')
      {
        writebyte=1;
      }
    
      if(serialinput == 'y')
      {
        writebyte=0;
      }
    
      if(writebyte == 1)
      {
        serialinput = LED_OFF;
      }
    
      if(writebyte == 0){
        if(serialinput == 'a')
        {
          blink_on=1;
        }
        if(serialinput == 'b')
        {
          blink_on=0;
          digitalWrite(LED_PIN,LOW);
        }
      }
    }
    
    
    void blinkloop(void)
    {
      if(blink_on == 1)
      {
    
        if (ms - msLast > (ledState ? LED_ON : LED_OFF))
        {
          digitalWrite(LED_PIN, ledState = !ledState);
          msLast = ms;
        }
      }
    }

    ______________________
    Danke schon mal, Green
    Geändert von Greensiver (30.06.2013 um 10:05 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.269
    Hallo,
    sind die * Überreste der Formatierung oder dereferenzierungs Operatoren (Was eig kaum sein kann ,aber ich frage mal lieber nach).
    Weiterhin wäre es für Außenstehenden schön wenn du deinen Code etwas kommentieren könntest und zudem das Prinzip deiner bisherigen Überlegung schilden könntest.
    (Nicht dass man das nicht aus dem Code lesen könnte, aber es würde die Hilfsbereitschaft wesentlich erhöhen)

    Nun zu deinem Code:


    1. Wenn du beim Aufrufen von blinkloop schon abfragst ob blink_on == 1 entspricht brauchst du das nicht noch mal in der Methode zu machen.
    2. Was willst du damit bezwecken ?

    serialinput*=*LED_OFF;

    3. Zum Blinken: versuch mal msLast einen wert bei der initialisierung zu geben, da in C nicht definiert ist mit was ein int initialisiert wird.
    Zudem sehe ich keine stelle an der ledState gesetzt wird. Also wird ledState wohl immer false sein.

  3. #3
    Danke für die Antwort,
    diese " * " hat das Forum alleine rein gemacht (Hab in der ArduinoIDE einfach auf "Für Forum kopieren" geklickt). Den Fehler zu beheben wäre nicht schlecht. Naja, da sieht der Code jetzt eben nicht mehr so schön farbig aus.

    @shedepe
    1.
    War nur eine Sicherheit, dass die Methode nur läuft wenn blink_on wirklich nur 1 ist. (kann man das auch weglassen?)
    2. Ich wollte wenn der µC ein "x" bekommen hat, die neue Auszeit in die Variable LED_OFF schreiben, und das ganze mit "y" bestätigen. Sozusagen das eigentliche Problem. Wie macht man das?
    3. ledState gibt bei mir die Werte 1 und 0 aus. Je-nachdem ob die LED an Pin 13 An oder Aus ist. Also kann ledState nicht immer false sein (zumindest wenn es blinkt). Das Blinken funktioniert tadellos.
    Das ledState wird hier:
    Code:
    digitalWrite(LED_PIN, ledState = !ledState);
    geschrieben und gleichzeitig negiert für den nächsten "Blinkanlauf", das ! ist das Zauberzeichen .

    Funktionsprinzip:
    schreibe a:xxxxxxxxxxxxxxxxxxxxxxxxBlinker AN
    schreibe b:xxxxxxxxxxxxxxxxxxxxxxxxBlinker AUS
    schreibe x:xxxxxxxxxxxxxxxxxxxxxxxxSchreibmodus AKTIV (Wobei der Blinker wenn er an ist weiter läuft)
    schreibe nach x Irgendeine Zahl:yDie geschriebene Zahl soll die Auszeit beim Blinken verändern.
    schreibe y:xxxxxxxxxxxxxxxxxxxxxxxxSchreibmodus INAKTIV

    Achso, ja ich werde den Code demnächst mal Kommentieren
    Geändert von Greensiver (30.06.2013 um 10:52 Uhr)

Ähnliche Themen

  1. Arduino + WLAN = Arduino Yún
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 04.06.2013, 14:50
  2. Blinkfrequenz mit PIC 16F629
    Von Gremlin im Forum PIC Controller
    Antworten: 12
    Letzter Beitrag: 29.09.2011, 18:39
  3. [ERLEDIGT] [ARDUINO] 2 Motoren + Servo mit dem Arduino Uno steuern
    Von Torrentula im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 31.08.2011, 17:31
  4. ARDUINO ARDUINO l293D + MegaservoLib
    Von m1ch15inner im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 2
    Letzter Beitrag: 11.07.2011, 12:50
  5. Variable aus for-schleife ausserhalb weiterbenutzen. Arduino
    Von Zimt Creme im Forum Software, Algorithmen und KI
    Antworten: 1
    Letzter Beitrag: 22.04.2011, 12:44

Berechtigungen

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