Таймер ardiuno

Jameson
Offline
Зарегистрирован: 21.03.2014
unsigned long currentTime;
unsigned long loopTime;
void setup()
{
currentTime = millis(); 
loopTime = currentTime; 
} 
void loop()
{
currentTime = millis(); 
loopTime = currentTime; 
}

Суть вопроса состоит в том что мне нужно при необходимости обнулить на этом таймере значение, loopTime=0; не помогло currentTime=0; тоже, может кто знает?

Клапауций
Offline
Зарегистрирован: 10.02.2013
unsigned long currentTime;
unsigned long loopTime;
void setup()
{
currentTime = millis(); 
loopTime = currentTime; 
} 
void loop()
{
currentTime = millis(); 
if (необходимости нет) {loopTime = currentTime; }
if (необходтимость есть) {loopTime = 0;}
}

 

Jameson
Offline
Зарегистрирован: 21.03.2014

я пробывал использовать loopTime = 0 но при повторном включение значение не обнуляется

Клапауций
Offline
Зарегистрирован: 10.02.2013

Jameson пишет:

я пробывал использовать loopTime = 0 но при повторном включение значение не обнуляется

что есть "повторное включение"?

Jameson
Offline
Зарегистрирован: 21.03.2014

допустим когда на ком порт приходит единица мне нужно обнулить значение в переменной (удалить время) и начать считать по новой

Клапауций
Offline
Зарегистрирован: 10.02.2013

ну сделай так:


unsigned long currentTime;
unsigned long loopTime;
void setup()
{
currentTime = 0; 
loopTime = 0; 
} 
void loop()
{
currentTime = millis() - loopTime; 
if (необходтимость есть) {loopTime = millis();}
}

т.е. currentTime будет считаться, от нуля с момента запуска контроллера или после прекращения срабатывания условия "необходтимость есть".

*upd два раза millis() вызывается, может лучше для корректности считывания ввести переменную t = millis(); и уже с ней работать.

Jameson
Offline
Зарегистрирован: 21.03.2014

может у кого-то есть скетч нормального таймера?

Клапауций
Offline
Зарегистрирован: 10.02.2013

Jameson пишет:

может у кого-то есть скетч нормального таймера?

чем тебе мой скетч не подходит?

вруби в условие кнопку и рули моим-своим таймером.

Jameson
Offline
Зарегистрирован: 21.03.2014

мне нужно обнулять значение а с твоего такое не получается 

Jameson
Offline
Зарегистрирован: 21.03.2014

по команде начатьи  по команде закончить 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Jameson пишет:

мне нужно обнулять значение а с твоего такое не получается 

я зачем тут фигнёй занимаюсь, что бы тебе обнулять нельзя было?

void loop() {
unsigned long t = millis();
currentTime = t - loopTime;
if (digitalRead(16) == 0) {loopTime = t;}
}

каким будет значение currentTime при нажатии кнопки 16?

Jameson
Offline
Зарегистрирован: 21.03.2014
#define Trig 2
#define Echo 3
unsigned long loopTime;
unsigned long currentTime;

void setup() 
{ 
  Serial.begin(9600);
  pinMode(Trig, OUTPUT); 
  pinMode(Echo, INPUT);
  currentTime = 0;
loopTime = 0;

}
unsigned int impulseTime=0; 
unsigned int distance_sm=0;


void loop() 
{   
  digitalWrite(Trig, HIGH); 
  delayMicroseconds(5000);
  digitalWrite(Trig, LOW); 
  impulseTime=pulseIn(Echo, HIGH);  
  distance_sm=impulseTime/58; 
  Serial.println(distance_sm);
  
  unsigned long t = millis();
  currentTime = t - loopTime;
  
  if (distance_sm > 20)
  {
   currentTime = millis() ;
    Serial.println(currentTime);
  }
  else
  {
   loopTime = t;
   
  }
}

Вот смотри при расстоянии до объекта больше 20 идет счет времени, при  растоянии меньше 20 см я хочу остановить счет времени и обнулить значение в переменной, вообще не пойму как обнулить