Обнуление переменной по нажатию кнопки
- Войдите на сайт для отправки комментариев
Вс, 04/01/2015 - 17:50
Здравствуйте, возникла проблема требуется обнулить переменную по нажатию кнопки как это можно сделать вот в этой программе:
#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.
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;} Бороться с дребезгом контактов в Вашем случае, насколько я понимаю, не нужно.
Успехов.