Таймер ardiuno
- Войдите на сайт для отправки комментариев
Вс, 25/05/2014 - 15:56
unsigned long currentTime;
unsigned long loopTime;
void setup()
{
currentTime = millis();
loopTime = currentTime;
}
void loop()
{
currentTime = millis();
loopTime = currentTime;
}
Суть вопроса состоит в том что мне нужно при необходимости обнулить на этом таймере значение, loopTime=0; не помогло currentTime=0; тоже, может кто знает?
unsigned long currentTime; unsigned long loopTime; void setup() { currentTime = millis(); loopTime = currentTime; } void loop() { currentTime = millis(); if (необходимости нет) {loopTime = currentTime; } if (необходтимость есть) {loopTime = 0;} }я пробывал использовать loopTime = 0 но при повторном включение значение не обнуляется
я пробывал использовать loopTime = 0 но при повторном включение значение не обнуляется
что есть "повторное включение"?
допустим когда на ком порт приходит единица мне нужно обнулить значение в переменной (удалить время) и начать считать по новой
ну сделай так:
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(); и уже с ней работать.
может у кого-то есть скетч нормального таймера?
может у кого-то есть скетч нормального таймера?
чем тебе мой скетч не подходит?
вруби в условие кнопку и рули моим-своим таймером.
мне нужно обнулять значение а с твоего такое не получается
по команде начатьи по команде закончить
мне нужно обнулять значение а с твоего такое не получается
я зачем тут фигнёй занимаюсь, что бы тебе обнулять нельзя было?
void loop() { unsigned long t = millis(); currentTime = t - loopTime; if (digitalRead(16) == 0) {loopTime = t;} }каким будет значение currentTime при нажатии кнопки 16?
#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 см я хочу остановить счет времени и обнулить значение в переменной, вообще не пойму как обнулить