Timer Funktion


hallo,

ich möchte das ein ausgang einmalig für 5 sekunden ein oder aus geschaltet wird, jedoch das ganze ohne delay() und mils() lösen. das ganze soll nicht ins setup weil das später ein einen größeren sketch eingebaut wird, wo dann erst noch ein schalter abgefragt werden soll.

das zu hab ich mir die timer lib: http://playground.arduino.cc/code/timer

angesehen und folgendens gebastelt (für den mega2560):

code: [select]
#include "timer.h"

timer t;
int pin = 13;
int alarmstatus=0;



void setup()
{
 pinmode(pin, output);
 digitalwrite(pin,low);
 serial.begin(9600);
}

void loop()
{  
 t.update();
 alarmfunktion();
}


void alarmfunktion()
{

   if(alarmstatus==0)
   {
   t.pulse(pin, 5 * 1000, high); // 5 second
   }
   alarmstatus=1;
}



die led geht für 5 sek und dann kurz aus und dann dauerhaft an.... bin etwas verzweifeln. gibt es da evtl. eine besser lösung oder seh ich den fehler einfach nicht?

hallo,

code: [select]
    t.pulse(pin, 5 * 1000, high); // 5 second

bedeutet nach dieser erklärung auf der timer projektseite:
quote
int pulse(int pin, long period, int startingvalue)
toggle state of digital output 'pin' once after 'period' milliseconds. pin's starting value specified in 'startingvalue', should high or low.

offensichtlich wird aber nach weiteren 5s nochmals getoggled und dein pin geht dauerhaft auf high (startingvalue).
quote
gibt es da evtl. eine besser lösung

ja, millis() - aber das hast du ja ausgeschlossen.
code: [select]
int pin = 13;
int alarmstatus=0;
unsigned long lastalarm;

void setup()
{
  pinmode(pin, output);
  digitalwrite(pin,low);
  serial.begin(9600);
  serial.println("prog started");
}

void loop()

  if (alarmstatus!=2) alarmfunktion();  // bevor ein neuer alarm ausgelöst werden soll, muss alarmstatus auf "0" gesezt werden
}

void alarmfunktion() {
  if (alarmstatus==0) {
    digitalwrite(pin, high);
    lastalarm=millis();
    alarmstatus=1;  // während alarm
  }
  if (millis()-lastalarm >= 5000) {
    digitalwrite(pin,low);
    alarmstatus=2;  // nach alarm
  } 
}



Arduino Forum > International > Deutsch (Moderator: uwefed) > Timer Funktion


arduino

Comments

Popular posts from this blog

Convierte tu Raspberry en un NAS. Firmware fvdw-sl 15.3 - Raspberry Pi Forums

How to format a Get Request

avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x62