Buggfix Plus
Aktuellt datum och tid: 13.54 2019-11-20

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 10 inlägg ] 
Författare Meddelande
InläggPostat: 19.50 2018-06-28 

Blev medlem: 16.18 2005-11-07
Inlägg: 287
Ort: Helsingborg
Just nu är jag som alla politiker.
Jag har lite otur när jag tänker.
Har provat både länge och väl, men ack nej.
Skulle vilja ha hjälp med lite kodexempel på en funktion som blinkar en lampa.
Dock har jag en del krav:
Ingen delay() får användas.
Det ska gå att bestämma hur länge den ska vara tänd samt hur länge den ska vara släckt. Tiderna ska inte var samma.
Det ska även gå att tala om att den ska Blinka ex. 3 ggr med dessa intervall.
Efter dessa gånger ska den förbli släckt tills nästa triggning, som sker via en knapp.

Hade varit tacksam så att jag kan bli mig själv igen och gå vidare i projektet som snart ska provköras på riktigt.
Detta är en av de sista restpunkterna. Det andra håller nu på att testas.

Håller dock på med lite omarbetning av kod då vissa minnen börjar ta slut.


Senast redigerad av RadioDJ 19.42 2018-07-01, redigerad totalt 1 gång.

Upp
 Profil  
 
InläggPostat: 22.51 2018-06-28 

Blev medlem: 13.00 2009-01-16
Inlägg: 612
Ort: Eslöv
Finns ett exempel som visar principen för detta
File/Examples/02.Digital/BlinkWithoutDelay

/J


Upp
 Profil  
 
InläggPostat: 23.13 2018-06-28 
EF Sponsor
Användarvisningsbild

Blev medlem: 15.29 2005-05-10
Inlägg: 37973
Ort: Söderköping
https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
https://codebender.cc/example/02.Digital/BlinkWithoutDelay


Upp
 Profil  
 
InläggPostat: 05.04 2018-06-29 

Blev medlem: 16.18 2005-11-07
Inlägg: 287
Ort: Helsingborg
Detta exempel har jag full koll på men det visar bara hur man använder millis().
Det är bara en del av lösningen, men resten.....


Upp
 Profil  
 
InläggPostat: 06.42 2018-06-29 
Användarvisningsbild

Blev medlem: 14.52 2005-01-10
Inlägg: 24166
Ort: Aabenraa, Danmark
Jag hade ju gjort en lösning där en timer-interrupt hade styrd själva blinkningen som en sekvens med parameter som tid-på, tid-av och antal cyklar som ska utföras.

Men aldrig att jag hade gjort det med Arduino!


Upp
 Profil  
 
InläggPostat: 10.32 2018-06-29 

Blev medlem: 13.00 2009-01-16
Inlägg: 612
Ort: Eslöv
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
int LED = 13;
int Button = 12;
int BlinkOn_ms = 100;
int BlinkOff_ms = 500;
int Blinks = 5;
int BlinkCounter = 0;
bool BlinkState = false;
long Now, Next;

void BlinkHandler(){
  if (BlinkCounter) {
    Now=millis();
    if (Now>Next) {
      if (BlinkState) {
        digitalWrite(LED, LOW); //LED off
        Next = Now + BlinkOff_ms;
        BlinkCounter -= 1;
      } else {
        digitalWrite(LED, HIGH);  //LED on
        Next = Now + BlinkOn_ms;
      }
      BlinkState = !BlinkState;
    }
  } else {
    if (!digitalRead(Button)) {
      BlinkCounter = Blinks;
    }   
  }
}


void setup() {
  // put your setup code here, to run once:
  pinMode(LED, OUTPUT);
  pinMode(Button, INPUT_PULLUP);
}

void loop() {
  // put your main code here, to run repeatedly:
  BlinkHandler();
 
}


Upp
 Profil  
 
InläggPostat: 13.47 2018-06-29 

Blev medlem: 16.18 2005-11-07
Inlägg: 287
Ort: Helsingborg
Tack jah.
Var något sådant jag tänkt mig.
Ska kolla när jag kommer hem.


Upp
 Profil  
 
InläggPostat: 11.08 2018-07-01 

Blev medlem: 21.15 2008-06-13
Inlägg: 312
Ort: Höör och Helsingborg, Skåne
Denna lösning har bara ett litet problem. Vad händer om BlinkHandler kör när millis + BlinkTime "wrappar"?

Det är därför som tidsjämförelser görs på ett lite annorlunda sätt i exemplen ovan. T.ex.
if (currentMillis - previousMillis >= interval)

Vet inte hur stor millis är i Arduino, kanske int är något problem, kanske är det. Samtidigt beror på applikationen men det är alltid bra att göra "rätt".


Upp
 Profil  
 
InläggPostat: 11.41 2018-07-01 
EF Sponsor
Användarvisningsbild

Blev medlem: 21.31 2005-12-15
Inlägg: 6430
Ort: Malmö
millis rullar runt på ca 50 dagar, så det lär vara lungt


Upp
 Profil  
 
InläggPostat: 19.41 2018-07-01 

Blev medlem: 16.18 2005-11-07
Inlägg: 287
Ort: Helsingborg
Det är inga problem då projektet startar om varje dag. Som max går den 8 dagar utan omstart.
Koden fungerar, så nu ska jag bara koppla ihop den med resten.
Har lite andra problem också som måste lösas, som jag inte har någon koll på just nu.
Vissa saker uppför sig mycket lustigt.
Blir att tänka en runda till.
Tack för exemplet.


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 10 inlägg ] 

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 4 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
   
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010