Go Down

Topic: Delays vervangen in millis() (Read 1 time) previous topic - next topic

Pexy

Hallo allemaal.

Ik zou graag hulp willen vragen voor mijn sketch.
Er zijn twee drukknoppen en twee ledjes,
het is de bedoeling dat als knop 1 word ingedrukt, led 1 voor drie seconden een stuk of tien keer gaat knipperen.
Hetzelfde geld voor knop 2 en led 2.
Wanneer de knoppen niet aangeraakt worden faden de twee ledjes afwisselend van elkaar.

Het is nu zo dat de sketch wel werkt,
probleem is echter dat wanneer knop 1 ingedrukt word en led 1 knippert,
knop 2 en led 2 in de tussentijd niet reageren ivm de delays.

Ik zou graag alle delays wil vervangen in millis() dan zou dat probleem verholpen moeten zijn.

Hieronder de code, alvast heel erg bedankt!

Code: [Select]
int value1, value2 ;

int S1 = 2;  // switch P1
int S2 = 3;  // switch P2
int L1 = 10; // led P1
int L2 = 11; // led P2

long time=0;

int periode = 8000;
int displace = 4000;

void setup() {               
  // initialize the digital pins.
  // assume switches will wire from ground to input pins
  pinMode(S1, INPUT_PULLUP);
  pinMode(S2, INPUT_PULLUP);
  pinMode(L1, OUTPUT);
  pinMode(L2, OUTPUT);
}

void loop() {

  if (!digitalRead(S1))
  {
    digitalWrite(L1,LOW);
    digitalWrite(L2,LOW);

    //-------------------------------

    digitalWrite(L1,HIGH);
    delay(100);
    digitalWrite(L1,LOW);   
    delay(100);
    digitalWrite(L1,HIGH);   
    delay(100);
    digitalWrite(L1,LOW);   
    delay(100);
    digitalWrite(L1,HIGH);
    delay(100);
    digitalWrite(L1,LOW);
    delay(100);
    digitalWrite(L1,HIGH);
    delay(100);
    digitalWrite(L1,LOW);
    delay(100);
    digitalWrite(L1,HIGH);
    delay(100);
    digitalWrite(L1,LOW);
    delay(100);
    digitalWrite(L1,HIGH);
    delay(100);
    digitalWrite(L1,LOW);
    delay(100);
    digitalWrite(L1,HIGH);
    delay(100);
    digitalWrite(L1,LOW);
    delay(100);
    digitalWrite(L1,HIGH);
    delay(100);
    digitalWrite(L1,LOW);
    delay(100);
    digitalWrite(L1,HIGH);
    delay(1500);
    digitalWrite(L1,LOW);
    delay(200);
  }

  //-------------------------------------------------------

  if (!digitalRead(S2))
  {
    digitalWrite(L1,LOW);
    digitalWrite(L2,LOW);

    //-------------------------------

    digitalWrite(L2,HIGH);
    delay(100);
    digitalWrite(L2,LOW);
    delay(100);
    digitalWrite(L2,HIGH);
    delay(100);
    digitalWrite(L2,LOW);
    delay(100);
    digitalWrite(L2,HIGH);
    delay(100);
    digitalWrite(L2,LOW);
    delay(100);
    digitalWrite(L2,HIGH);
    delay(100);
    digitalWrite(L2,LOW);
    delay(100);
    digitalWrite(L2,HIGH);
    delay(100);
    digitalWrite(L2,LOW);
    delay(100);
    digitalWrite(L2,HIGH);
    delay(100);
    digitalWrite(L2,LOW);
    delay(100);
    digitalWrite(L2,HIGH);
    delay(100);
    digitalWrite(L2,LOW);
    delay(100);
    digitalWrite(L2,HIGH);
    delay(100);
    digitalWrite(L2,LOW);
    delay(100);
    digitalWrite(L2,HIGH);
    delay(1500);
    digitalWrite(L2,LOW);
    delay(200);
  }

  //-------------------------------------------------------

  else   {

    time = millis();
    value1 = 128+127*cos(2*PI/periode*time);
    value2 = 128+127*cos(2*PI/periode*(displace+time));

    analogWrite(L1, value2);           // sets the value (range from 0 to 255)

    analogWrite(L2, value1);           // sets the value (range from 0 to 255)

  }
}

nicoverduin

Zie blink without delay. Daar staat jouw oplossing
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

MAS3

Hoi.

Wat wil je.
Hulp hier, of in het Engels ?

Het is niet netjes naar mensen die je willen helpen, als je je vraag in meerdere onderwerpen stelt.
Ook al is dat in een andere taal.
Iemand steekt kostbare tijd in het beantwoorden van jouw vraag, terwijl er ergens anders iemand anders ook diens tijd aan hetzelfde zit te spenderen zonder dat men dat weet.
Dat is niet netjes als ik het heel erg beschaafd uitdruk.

Ik heb al heel vaak verteld dat de blink without delay sketch dit onderwerp perfect illustreert.
Het gaat daar namelijk niet alleen om het weglaten dan delay(), maar vooral ook om bijhouden wat je wel en niet gedaan hebt en wat je nog moet doen.
Alle antwoorden op je vraag zitten in die voorbeeld sketch, dus wat je nu moet doen is met die sketch aan de slag gaan.

En aan de slag gaan betekent niet even doorlezen, maar lezen en die sketch aanpassen om werkelijk te begrijpen hoe dit allemaal in elkaar zit en op elkaar doorwerkt.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Pexy

Hoi.

Wat wil je.
Hulp hier, of in het Engels ?
Alle hulp is welkom toch?

Blink without delay verteld niks over drukknoppen, vandaar de vraag over hoe ik dat kan implementeren in de sketch.

nicoverduin

Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

Pexy


sterretje

Dat is toch mooi.

Het zou nog mooier zijn als je de oplossing deelde zodat anderen die tegen hetzelfde soort probleem aanlopen een idee kunnen krijgen.
If you understand an example, use it.
If you don't understand an example, don't use it.

Electronics engineer by trade, software engineer by profession. Trying to get back into electronics after 15 years absence.

nicoverduin

#7
Mar 17, 2018, 08:48 am Last Edit: Mar 17, 2018, 08:52 am by nicoverduin
Hij is er nog lang niet hoor :) zie Arduinoforum.nl

Ik heb ze ook lopen. 4 weken krijgen ze de tijd om kennis en ervaring op te bouwen. Dan doen ze alles behalve... En als het dan zover is dat ze een project moeten doen dan hebben ze geen idee.
Je merkt het gelijk al aan het soort vragen.
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

MAS3

Jammer dat er dan toch die zeer ervaren mensen zijn die gewoon code geven in plaats van de vraagsteller helpen de code zelf te maken.
Dat is geen hulp, al denkt de vraagsteller van wel.
Volgende week heeft ie voor de volgende opdracht een nog veel groter probleem.
Vraagsteller wil helemaal niet leren, en denkt dat Google hem zijn carrière zal schenken.
Daarom trek ik mijn vingers daar van af en wens vraagsteller veel succes in een mooie carrière.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

nicoverduin

Zoals Yves het jaren geleden al zo mooi formuleerde : we leren de mensen graag vissen en niet om vis te eten. Bij dat laatste blijven ze terugkomen:)

Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

Pexy

Nou nou, wat een zure reacties zeg.

Ben gewoon eerlijk dat ik heel graag c++ wil leren, maar wel moeilijk vind. En nee, zit niet op school en hoef er geen geld mee te verdienen.
Het is gewoon hobby.

shooter

blink without delay vraagt een heel andere kijk op programmeren.
het blink verhaal is maar een simpel voorbeeld.
het berust op een meelopende teller (millis()) waarbij je dus kunt aangeven dat als de teller een waarde heeft bereikt je iets moet doen. zo bestaat er trouwens ook micros().
die timer komt dan in de loop te staan en telkens als een teller (je kunt er dus meerdere hebben) ga je even snel naar een functie om iets te doen, en om de starttijd aan te passen)

paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

Koepel

#12
Mar 22, 2018, 09:38 am Last Edit: Mar 22, 2018, 09:39 am by Koepel
...dat er dan toch die zeer ervaren mensen zijn...
Bedankt voor het compliment ! :smiley-mr-green:

Meestal als ik een stuk code geef, of om een goede beschrijving vraag, dan reageert de vraagsteller niet meer. Maar Pexy gaf niet zomaar op, dus durfde ik meer risico te nemen en dingen voor te kauwen.

Pexy

dus durfde ik meer risico te nemen en dingen voor te kauwen.
En daar ben ik je echt ontzettend dankbaar voor.  ;)

elektriesjeng

Hier vind je misschien wat je zoekt:

https://www.baldengineer.com/arduino-millis-examples.html

Go Up