delay werkt in functie maar millis() niet op Attiny

Arduino specifieke Software
Berichten: 127
Geregistreerd: 21 Feb 2013, 16:04

delay werkt in functie maar millis() niet op Attiny

Berichtdoor René » 18 Sep 2018, 16:50

Ik wil een flitser maken voor op mijn paramotor met meerder leds op basis van een digispark Attiny85. De flitser moet verschillende modes (enkel, multi , SOS code etc)

Ik wil bij het definiëren van de flitsduur en pauzes daartussen geen gebruik maken van delay maar van millis().
Met delay werkt "het"
Code: Alles selecteren
bool doe = true;
int dot = 100; // 10 ms is default lengte van een kort morse teken en een flits

void setup() {
  pinMode(led, OUTPUT);
  pinMode(flits1, OUTPUT);
  pinMode(flits2, OUTPUT);
}

void loop() {
flits(1);
if ((millis()-tijd_1)>= (60000/frekwentie-dot)){
  tijd_1= millis();
  doe = true;
 }
}//loop


void flits (int duur)  //test
 {
 if (doe)
  {
 for (int i = 1; i<=2; i++)
    {
      digitalWrite(flits2, HIGH);
      delay(dot*duur);
      digitalWrite(flits2, LOW);
      delay(dot);
    }
  }
  doe = false;
 }



Maar ik wil die delay vervangen door millis() en heb de flits functie vervangen door de onderstaande code die dus niet werkt. Wat doe ik fout?
Code: Alles selecteren
void flits (int duur)  //test
 {
  if (doe)
  {
    for (int i = 1; i<=1; i++)
    {
      if (aan)
      {
      digitalWrite(flits2, HIGH);
        if ((millis() - tijd_1) > 200)
        {
        tijd_1 = millis();
        aan = false;
        }
       }
    else
    {
    digitalWrite(flits2, LOW);
      if ((millis() - tijd_2) > 10)
      {
      tijd_2 = millis();
      aan = true;
      }
     }
    }
  doe = false;
  }
}

Advertisement

Berichten: 2441
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: delay werkt in functie maar millis() niet op Attiny

Berichtdoor shooter » 18 Sep 2018, 21:12

millis() is een teller die gewoon begint, dus als je de tijd begint moet je millis() wel opslaan en dus tijd_1,2 eerst initialiseren.
bij delay doet de functie dat zelf.
maar millis heeft het grote voordeel dat de processen gewoon doorgaan en delay stopt gewoon alles.
zie blink without delay (standaard zin van bekenden hier.
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Bing [Bot] en 2 gasten