Hola que tal, necesito de su ayuda o al menos de algunos consejos, en la escuela me dejaron como proyecto hacer un capacimetro con Arduino o atmega independiente el cual pudiera comprobar correctamente los capacitores electrolíticos y lo más importante que los pueda comprobar directamente en cualquier placa, el código que hice si leé los capacitores pero solo si están sin soldar, aún no logro hacerlo funcionar como mencioné, podrían ayudarme? Anexo código:
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int carga = 13;
int descarga = 11;
int analogPin = A0;
unsigned long start_timer=0;
unsigned long stop_timer=0;
unsigned long duracion=0;
float voltage=3;
float answer=0.0;
int medida (void);
void setup()
{
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.print("Coloque Capacitor ");
pinMode(descarga,INPUT);
pinMode(carga,OUTPUT);
digitalWrite(carga,HIGH);
}
void loop()
{
while(medida()>=1010 && medida ()<=1030)
{
lcd.setCursor(0,1);
lcd.print("Coloque Capacitor ");
delay(500);
lcd.setCursor(0,1);
lcd.print(" ");
delay(200);
}
delay(2000);
lcd.setCursor(0,1);
lcd.print(" ");
while(1)
{ pinMode(carga,INPUT);
pinMode(descarga,OUTPUT);
digitalWrite(descarga,LOW);
lcd.setCursor(0,1);
lcd.print("DESCARGANDO ");
while(voltage>2.0)
{
voltage=medida();
delay(100);
lcd.setCursor(12,1);
answer=voltage * (99.0 / 1023.0);
lcd.print((99-answer),0);
lcd.setCursor(15,1);
lcd.print("%");
}
lcd.setCursor(0,1);
lcd.print(" ");
delay(1000);
lcd.setCursor(0,1);
lcd.print("CARGANDO : ");
lcd.setCursor(15,1);
lcd.print("%");
pinMode(descarga,INPUT);
pinMode(carga,OUTPUT);
digitalWrite(carga,HIGH);
start_timer=micros();
while(medida()<648)
{
lcd.setCursor(10,1);
lcd.print(medida ()*(100.0/1023.0),1);
}
stop_timer=micros();
duracion=stop_timer-start_timer;
answer=duracion/10000;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("VALOR= ");
lcd.print(answer);
lcd.print("uF");
delay(3000);
while(1)
{
lcd.setCursor(0,1);
lcd.print("Reset Para Medir");
delay(800);
lcd.setCursor(0,1);
lcd.print(" ");
delay(1000);
}
}
}
int medida (void)
{
int value;
value=analogRead(analogPin);
return value;
}