Buenas noches, como estan ? Miren necesito que alguien me ayude en la conversion del codigo C++ a C porque estoy haciendo una interfaz labView Arduino y quiero a aplicar lo que es el case node que utiliza programacion C. Si pudieran me gustaria que si me ayudan en esto igual no quiero todo el codigo solo de get_corriente en adelante. Saludos.
Citar
void setup() {
Serial.begin(9600);
analogReference(INTERNAL);
//analogReference(INTERNAL1V1); //solo Arduino Mega
}
void loop() {
float Irms=get_corriente(); //Corriente eficaz (A)
float P=Irms*220.0; // P=IV (Watts)
Serial.print("Irms: ");
Serial.print(Irms,3);
Serial.print("A, Potencia: ");
Serial.print(P,3);
Serial.println("W");
//delay(100);
}
float get_corriente()
{
float voltajeSensor;
float corriente=0;
float Sumatoria=0;
long tiempo=millis();
int N=0;
while(millis()-tiempo<500)//Duración 0.5 segundos(Aprox. 30 ciclos de 60Hz)
{
voltajeSensor = analogRead(A0) * (1.1 / 1023.0);////voltaje del sensor
corriente=voltajeSensor*(100/1.1); //corriente=VoltajeSensor*(30A/1V)
Sumatoria=Sumatoria+sq(corriente);//Sumatoria de Cuadrados
N=N+1;
delay(1);
}
Sumatoria=Sumatoria*2;//Para compensar los cuadrados de los semiciclos negativos.
corriente=sqrt((Sumatoria)/N); //ecuación del RMS
return(corriente);
}
eso no es C++, eso es arduino que es más parecido a java que otra cosa...
teoricamente y si tienes las funciones predefinidas, de get_corriente en adelante es 100% compatible con C
Incluye las librerías "windows.h", "math.h" y "time.h".
Cambia "delay" por "Sleep" y millis por "clock".
"sq(corriente)" cambialo por "corriente*corriente".
AnalogRead, pues deende de dónde quieras leer.
El resto, es lo mismo. Arduino es C++, pero esa fuinción no utiliza nada especial de C++.
Si quieres hacer el trabajo que hace el arduino con labview, entiendo que lo vas a emular, te digo que hagas una secuencia y trabajes con los bloques de labview.
Cita de: engel lex en 13 Enero 2017, 00:59 AM
eso no es C++, eso es arduino que es más parecido a java que otra cosa...
teoricamente y si tienes las funciones predefinidas, de get_corriente en adelante es 100% compatible con C
En realidad, si que es C++. Usa un compilador en C++. He aquí el código que se incluye (el cual incluye la función main).
#include <Arduino.h>
int atexit(void (* /*func*/ )()) { return 0; }
void initVariant() __attribute__((weak));
void initVariant() { }
void setupUSB() __attribute__((weak));
void setupUSB() { }
int main(void)
{
init();
initVariant();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}