как добавить кнопку

Тед
Offline
Зарегистрирован: 06.11.2017
Эта программа для двух вольтметров, как добавить кнопку " hold" которая бы сохранила и держала LCD  показание  одного из вольтметров ?
// EmonLibrary examples openenergymonitor.org, Licence GNU GPL V3

#include "EmonLib.h"             // Include Emon Library
#include <LiquidCrystal.h>
LiquidCrystal lcd(PA0, PA1, PA2, PA3, PA4, PA5);
EnergyMonitor emon1, emon2;
float volt, avolt[50],  sumv, volt2, avolt2[50],  sumv2, powerFactor, apowerFactor[50], sumPF, catchPF, cur, acur[50], sumc;
char symbPF = 223;

void setup()
{
  pinMode(PB4, INPUT_PULLUP);// кнопка
  pinMode(PA6, INPUT);    // U1
  pinMode(PA7, INPUT);    // I2
  lcd.begin(16, 2); 

  Serial.begin(9600);

  emon1.voltage(PA6, 2500, 1.7);  
  emon1.current(PA7, 2500);      
}

void loop()
{
  emon1.calcVI(20, 2000);     
  emon1.serialprint();           

  float supplyVoltage   = emon1.Vrms;             
  float Irms            = emon1.Irms;             


  lcd.setCursor(0, 1);
  lcd.print("U=");  //B, PA6
  lcd.print(supplyVoltage); //B

  // изменеия
 /////////////////////////////////////////////////// 
  lcd.setCursor(0, 0);
  lcd.print("I="); //A, PA7
  lcd.print(Irms );  
 
  //lcd.setCursor(0, 0);                        
  //lcd.print("S="); //A, PA7
  //lcd.print(Irms );  
  
  //////////////////////////////////////////////////

}

 

 

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

По нажатию кнопки выставляйте флаг, например, isHold и в лупе проверяйте его, если установлен то экран не обновляете, ну или нужную часть экрана

Тед
Offline
Зарегистрирован: 06.11.2017

Спасибо, звучит хорошо, а как это сделать, Вы можете помочь?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Тед, невозможно помочь тому, кто сам ничего не делает. Даже если ничего не делать вместе с ним, это вряд ли ему поможет.

Тед
Offline
Зарегистрирован: 06.11.2017
от тебя помощи нр ожидаю
 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

И правильно делаешь.

kalapanga
Offline
Зарегистрирован: 23.10.2016

Тед пишет:

Эта программа для двух вольтметров
 

Вас обманули

 

 

Тед
Offline
Зарегистрирован: 06.11.2017

обманули или нет, но работает

kalapanga
Offline
Зарегистрирован: 23.10.2016

Тед пишет:

обманули или нет, но работает

Вольтметр-то один!

А про кнопку посмотрите примеры "Button", "Debounce" из стандартной поставки Arduino IDE. 

Тед
Offline
Зарегистрирован: 06.11.2017

сейчас один, про кнопку я знаю , ищу команду типа - sample and hold

// EmonLibrary examples openenergymonitor.org, Licence GNU GPL V3

#include "EmonLib.h"             // Include Emon Library
#include <LiquidCrystal.h>
LiquidCrystal lcd(PA0, PA1, PA2, PA3, PA4, PA5);
EnergyMonitor emon1;
float  cur, acur[50], sumc;

void setup()
{
  pinMode(PB4, INPUT_PULLUP);// button pin
  pinMode(PA7, INPUT);    // I2
  lcd.begin(16, 2);

  Serial.begin(9600);

  emon1.current(PA7, 2500);
}

void loop()
{
  emon1.calcVI(20, 2000);
  emon1.serialprint();

  float Irms = emon1.Irms;


  lcd.setCursor(0, 1);
  lcd.print("U=");  
  lcd.print(Irms); 

  lcd.setCursor(0, 0);
  lcd.print("H="); //Value to be hold
  lcd.print(Irms );

}

 

nik182
Offline
Зарегистрирован: 04.05.2015

Нет такой команды. Самому писать надо. С помощью команды if http://arduino.ru/Reference/If . Заводим переменную. Присваиваем ей 1. Проверяем командой If. Если равно 1 то выводим на дисплей значение. Проверяем кнопку. Если нажата - ждем пока отпустится и меняем значение переменной по кругу 1 -> 0 -> 1 . После присвоения переменной 0 записи на дисплей не будет и на нём будет последнее записанное значение. 

b707
Offline
Зарегистрирован: 26.05.2017

Тед пишет:

Спасибо, звучит хорошо, а как это сделать, Вы можете помочь?

Научиться программировать? :)))

Тед
Offline
Зарегистрирован: 06.11.2017

b707 пишет:

Тед пишет:

Спасибо, звучит хорошо, а как это сделать, Вы можете помочь?

Научиться программировать? :)))

ну и что умного сказал ?

Тед
Offline
Зарегистрирован: 06.11.2017

nik182 пишет:

Нет такой команды. Самому писать надо. С помощью команды if http://arduino.ru/Reference/If . Заводим переменную. Присваиваем ей 1. Проверяем командой If. Если равно 1 то выводим на дисплей значение. Проверяем кнопку. Если нажата - ждем пока отпустится и меняем значение переменной по кругу 1 -> 0 -> 1 . После присвоения переменной 0 записи на дисплей не будет и на нём будет последнее записанное значение. 

Спасибо