Arduino - Funciones de arduino no andan.

 
Vista:
sin imagen de perfil

Funciones de arduino no andan.

Publicado por Vladimir (1 intervención) el 16/08/2022 02:32:52
Buenas a todos. Espero alguien me pueda ayudar con este código ya que me vuelve loco.
el problema es el siguiente: quiero crear una función ( llamada voltímetro) y resulta que no me funciona. me parece que el problema viene porque la función que quiero crear cuenta con "Millis" pero no se como resolverlo.
probé con Float voltímetro, int voltímetro y con VOID voltímetro y de ninguna forma funciona.
compila bien, sin ningún error pero no funciona. Cabe aclarar que el código si lo hago en el void loop funciona perfectamente.
les dejo el código y ojala me puedan dar una mano. saludos a todos.

#include <Wire.h>
#include <Adafruit_ADS1X15.h>
#include <Filters.h> //Biblioteca fácil para hacer los cálculos
#include <SPI.h> //Bibliotecas para la pantalla OLED

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // Ancho de pantalla OLED, en píxeles
#define SCREEN_HEIGHT 32 // Altura de la pantalla OLED, en píxeles
#define OLED_RESET -1 //

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); //Declaración del nombre para mostrar (display)
float testFrequency = 50; //frecuencia de la señal de prueba (Hz)
float windowLength = 40.0/testFrequency; // cuánto tiempo promediar la señal, para estadístico
int Sensor = 0; //Entrada analógica del sensor, aquí está A0

float intercept = -0.04; // para ser ajustado en base a las pruebas de calibración
float slope = 0.0405; // para ser ajustado en base a las pruebas de calibración
float current_Volts; // Voltaje

unsigned long printPeriod = 1000; //Frecuencia de actualización
unsigned long previousMillis = 0;



float amperimetro;
float potencia;
float amperaje;
float voltaje;



void setup()


{

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Inicie la pantalla OLED
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(1,1);
display.print("Tecno industrial");
display.setCursor(1,20);
display.setTextSize(1);
display.print("AC vatimetro");
display.display();
delay(2000);

}

void loop() {

float voltaje = voltimetro();
display.clearDisplay();
display.setTextSize(4); //tamaño del texto que seguirá
display.setTextColor(WHITE); //su color
display.setCursor(1,1); //posición desde la que quieres empezar a escribir
display.print(voltaje,1);
display.setCursor(115,00);
display.setTextSize(2);
display.print("V");
display.setCursor(115,15);
display.setTextSize(1);
display.print("AC");
display.display();



}
float voltimetro() {
RunningStatistics inputStats; //Líneas de vida fáciles, el cálculo real del RMS requiere una gran cantidad de codificación
inputStats.setWindowSecs( windowLength );

while( true ) {
Sensor = analogRead(A0); // leer el análogo en valor
inputStats.input(Sensor); // iniciar sesión en la función de estadísticas


if((unsigned long)(millis() - previousMillis) >= printPeriod) {
previousMillis = millis(); // tiempo de actualización cada segundo


Serial.print( "\n" );

current_Volts = intercept + slope * inputStats.sigma(); //Calibraciones para compensación y amplitud
current_Volts= current_Volts*(40.3231); //Otras calibraciones para la amplitud

Serial.print( "\tVoltage: " );
Serial.print( current_Volts ); //El cálculo y la visualización del valor están hechos, el resto es si está utilizando una pantalla OLED

return current_Volts;
}
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Funciones de arduino no andan.

Publicado por 3Dworld (2 intervenciones) el 16/09/2022 21:35:34
Prueba a escribir:
int voltimetro;
Sin tildes, sin mayusculas y con punto y coma
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar