Desculpa, vida dificil só consegui agora.
neste código o pushbotton altera a variavel " ohm " de 8 para 4 quando o mantenho pressionado ( daí
o led).
a ideia é manter o valor de 2 ou 4 ou 8 regressando ao 2 se voltar a ser pressionado.
por defeito a variavel " ohm " deverá ter o valor 8
podes alterar o achares mais correto.
o led que avisa o estado do pushbotton pode ser eliminado na medida que terei o valor fixo no lcd.
Obrigado pela ajuda,
abraços;
Tózé
#include "LiquidCrystal.h"
// lcd connection
// 1 gnd
// 2 5v
// 3 lcd contrast
// 4 pin 8
// 5 gnd
// 6 pin 9
// 11 D0 pin 4
// 12 D1 pin 5
// 13 D2 pin 6
// 14 D3 pin 7
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
float input_voltage = 0.0;
float temp=0.0;
int ohm = 4;
float value= 0;
float volt = 0;
int buttonInput = 2;
int lightOutput = 13;
int buttonState = 0;
void setup()
{
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
lcd.begin(16, 2); //// set up the LCD's number of columns and rows:
lcd.print("3T AMP ");
// button
pinMode(lightOutput, OUTPUT);
pinMode(buttonInput,INPUT);
digitalWrite(buttonInput,HIGH);
// end button
}
void loop()
{
// button
{
buttonState = digitalRead(buttonInput);
if(buttonState == HIGH)
{
digitalWrite(lightOutput,LOW);
ohm = 8;
}
else
{
digitalWrite(lightOutput,HIGH);
ohm = 4;
}
// end button
}
//Conversion formula for voltage
int analog_value = analogRead(A0);
input_voltage = (analog_value * 500.0) / 1024.0;
if (input_voltage < 0.1)
{
input_voltage=0.0;
}
Serial.print("v= ");
Serial.println(input_voltage);
lcd.setCursor(0, 1);
lcd.print("W=");
value = (((input_voltage)*(input_voltage))/ohm);
if ( value > 2000 )
{ lcd.print("## OVER ##");
}
volt = input_voltage;
lcd.print(value);
delay(100);
lcd.setCursor(11,1);
lcd.print("ohm ");
lcd.print(ohm);
lcd.print(" ");
lcd.setCursor(6,0);
lcd.print("rms");
lcd.setCursor(10,0);
lcd.print("ac");
lcd.setCursor(12,0);
lcd.print(volt);
delay(500);
lcd.setCursor(0,1);
lcd.print(" ");
}