Estoy experimentando algunos problemas al obtener una pantalla de entradas analógicas (corriente y voltaje) alimentadas a A0 y A1 de ATmega168 respectivamente. Creo que el cableado y el programa son correctos ya que el mismo circuito funciona perfectamente bien en la simulación de Proteus. Incluso he intentado mostrar "Hello World" contenido en los ejemplos del IDE, pero no había ninguna pantalla. Estoy usando Arduino Diecimila o Duemilanove con el kit de programación ATmega168 con microcontrolador conectado externamente a una placa de pruebas.
Aquí está mi código:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int relayPin =7;
int buzzerPin=6;
intled2Pin=8;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(relayPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
}
void loop() {
float sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0)*28.35;
lcd.setCursor(0, 0);
lcd.print(voltage);
lcd.print("V,");
float sensorValue1 = analogRead(A1);
float current = sensorValue1 * (5.0 / 1023.0);
lcd.setCursor(9, 0);
lcd.print(current);
lcd.print("A,");
float Power = (voltage * current)/1000;
lcd.setCursor(0, 1);
lcd.print(Power);
lcd.print("kW");
if ((current >=3.0 && current <=4.0) && (voltage >=90 && voltage <=120)){
digitalWrite (led1Pin,HIGH); // blink green led
} else {
digitalWrite (led2Pin,HIGH);//blink red led
delay(300);
digitalWrite (led2Pin,LOW);
delay(300);
}
if(current >4.0 && current<4.3) {
digitalWrite (led2Pin,HIGH); // blink red led
delay(300);
digitalWrite (led2Pin,LOW);
delay(300);
}
if(voltage >120 && voltage<130) {
digitalWrite (led2Pin,HIGH);//blink red led
delay(300);
digitalWrite (led2Pin,LOW);
delay(300);
}
if(current >=4.3) {
delay(1000);
digitalWrite (relayPin,HIGH); // activate relay for trip
digitalWrite(buzzerPin,HIGH); // sound buzzer or alarm
}
if(voltage >= 130) {
delay(1000);
digitalWrite (relayPin,HIGH);//activate relay for trip
digitalWrite(buzzerPin,HIGH);//sound buzzer or alarm
}
}