#include <U8x8lib.h>
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
//Variable usadas//
int f = 0;
double valor=0;
//Esta es la libreria correcta:
//U8X8_SSD1306_128X64_NONAME_4W_SW_SPI u8x8(/* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//Libreria para simulacion:
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
//Clase para preparar la mascara basica que se mostrara en la pantalla:
void preparacion(void)
{
//Selecciona fuente para el tipo de letra:
u8x8.setFont(u8x8_font_amstrad_cpc_extended_f);
u8x8.clear();
//Escribe voltimetro con color invertido:
u8x8.inverse();
u8x8.print(" Voltimetro ");
//Deshace el color invertido y escribe Voltios
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.noInverse();
u8x8.setCursor(0,1);
u8x8.drawString(3, 1, " Voltios ");
u8x8.setFont(u8x8_font_inb33_3x6_n);
}
void setup(void)
{
u8x8.begin();
preparacion();
pinMode(2, INPUT);
pinMode(3, OUTPUT);
}
void loop(void)
{
double c = 0;
// unsigned int TIEMPO;
if(digitalRead(2)==1){ // El switch esta en la posicion de voltimetro
// Saca 100 valores de una medicion
for(f=0;f<100;f++){
delay(5);
//Conversion de 1023 a 5V:
double b = analogRead(A3)*5;
double a = b/1023;
valor = valor + a;
}
// r se encarga de promediar esos valores dividiendolo entre 100
double r = valor/100;
u8x8.setCursor(0, 2);
u8x8.print(r); // imprime r
delay(15);
}else{ // El switch enta en la posicion de Generador de señal
delay(30);
u8x8.setCursor(0, 2);
u8x8.print(00.000); // Imprime un valor de 0 voltios
delay(20);
//Genera una señal fija de 10 ms activo y 100 ms desactivado:
digitalWrite(3, HIGH);
delay(10);
digitalWrite(3, LOW);
delay(100);
}
}