Обнуление переменной по нажатию кнопки

vlasov-serg-27
Offline
Зарегистрирован: 21.06.2014

Здравствуйте, возникла проблема требуется обнулить переменную по нажатию кнопки как это можно сделать вот в этой программе:

#include <QuadDisplay.h>    // Библиотека 7-ми сегментного индикатора
#define DISP_PIN 2          // Порт к которому подключен индикатор (Цифровой порт №2)
#define SENS A0             // Порт к которому подключен датчик тока (Аналоговый порт №0)
float z_sens=0;             // Переменная в которой хранится показание датчика тока
float pokaz=0;              // Переменная в которой хранится показание датчика тока в Амперах
float tst=0;                // Переменная в которой хранится момент времени появления тока
float tsp=0;                // Переменная в которой хранится момент времени отсутствие тока 
float tig=0;                // Переменная в которой хранится момент времени работы датчика тока
boolean pl=false;           // Флаг вывода индикатора

void setup() 
{
Serial.begin(9600);  // Установка связи с COM портов  
}

void loop() 
{
  // Чтение данных с датчика тока
  z_sens=analogRead(SENS);
  // Перевод из условных единиц в Амперы
  pokaz=(z_sens-510)*5/1024/0.04-0.04;
  //Отображаем количество секунд, прошедшее со старта скетча
  float currentTime = (float)millis() / 1000;
  //displayFloat(DISPLAY_PIN, currentTime, 1);
  // Условия для вывода на экран последнего показания датчика тока
  // и отметки момента времени (старт, стоп)
  if (pokaz>0.08)
  {
    pl=true;
    tst=currentTime;
  }
  if (pokaz<0.08)
  { 
    pl=false;
    tsp=currentTime;
  }
  // Получение временного интервала с момента появления тока
  // в цепи до момента его отсутствия
  tig=tst-tsp;
  // Вывод на индикатор
  if (pokaz>0.09 && pl==true)
  {
    
    //Вывод на индикатор показания датчика тока
    //displayFloat(DISP_PIN, pokaz,3);
    // Выод на индикатор интервала с момента появления
    // тока в цепи до момента его отсутствия
    displayFloat(DISP_PIN, tig,1);
  }
  Serial.println("pokaz");
  Serial.print(pokaz);  //Вывод в COM порт
  Serial.println("Time itog");
  Serial.print(tig);  //Вывод в COM порт
  Serial.println("Time start");
  Serial.print(tst);  //Вывод в COM порт
  Serial.println("Time stop");
  Serial.print(tsp);  //Вывод в COM порт
  delay(5);
  
}

Обнулять нужно переменную tst. Кнопка подключена к 3 цифровому пину и к GND.

Araris
Offline
Зарегистрирован: 09.11.2012

1. Про правильное подключение кнопки читаете тут: http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku

2. В начале скетча объявляете пин #define BUTTON_PIN 3

3. В setup() задаете режим его работы pinMode(BUTTON_PIN,INPUT); (Впрочем, это не обязательно, по умолчанию все порты INPUT.)

4. В loop() читаете состояние порта и по условию обнуляете переменную tst. if(digitalRead(BUTTON_PIN)) {tst=0;} Бороться с дребезгом контактов в Вашем случае, насколько я понимаю, не нужно.

Успехов.