Ayuda en la programacion en la tarjeta arduino proyecto

Buen dia
La verdad desconosco mucho sobre los componentes de arduino, pero necesito ayuda para enternderle mas, bueno les explico como es mi proyecto.

Estoy haciendo un programa en c# para monitoriar la energia captada de un panel solar, me falta la parte donde se comunica el programa con la tarjeta arduino, solo he logrado abrir el puerto pero no se ejecutan las instrucciones, ahora creo que estoy muy mal en la programacion de la tarjeta (dejo codigo adjunto)

extern volatile unsigned long timer0_overflow_count;
#define  numero_muestras 100
float fanalog2;
int analog2;
int sum =0;
unsigned long tiempo;
byte serialByte;
int pinPot=2;
int val=0;
unsigned char contador =0;
void setup() {
   Serial.begin(9600);
}
void loop() 
{
    while (contador < numero_muestras) {
        sum += analogRead(A2);
        contador++;
        delay(10);      
      while(1){
        analog2=analogRead(2);
        // Convierto a milivoltios
        fanalog2=((analog2)*(5000.0/1023)/208.3333);
                tiempo=(timer0_overflow_count << 8) + TCNT0;
        tiempo=tiempo*4;
        Serial.print(tiempo*.000001);
        Serial.write(';');
        while (contador <numero_muestras){
            sum += analogRead(A2);
            contador++;
            delay(50);
        }
        Serial.println(fanalog2,DEC);
        delay(300000);
        if (Serial.available()>0){
        }
      }
    }
  }

Si se pudiera que alguien me ayuda a modificar este codigo, lo que tiene que hacer es recibir un voltaje menor o igual a 4.8 volts y calcularlos con 16.9 volts con una regla de 3 que despliegue o mande el resultado a un bloc de notas o se capturen a un listbox
Espero que me ayuden

Para una respuesta acertada falta mucha información. Esto esta planteado desde una persona que tiene pleno conocimiento de lo que esta haciendo pero no le funciona el programa y otro que nada sabe y se encuentra con un código sin comentarios, sin esquemas, sin enlaces del panel, etc. etc. Muy pobre la presentación del problema

Vamos al detalle:

Nada dices de como estan hechos los divisores resistivos. No esta documentado en tu código tampoco de modo que

4.8 volts y calcularlos con 16.9 volts con una regla de 3 que despliegue o mande el resultado a un bloc de notas o se capturen a un listbox

Dime si tu te entiendes, solo entendí que quieres que el resultado se vea en el bloq de notas o se capturen en un listbox? Yo creeo que ves demasiada ciencia ficción.

No hay nada gratis y menos lo que pides.

Tu código: 1ro) extern volatile NO. Solo volatile porque es una varible que compartes con la interrupción. Pero no velo la interrupción asi que no se que sentido tiene. Tampoco veo que uses timer0_overflow_count de modo que crees que interactúa con el TIMER pero no lo hace del modo que piensas.

2do) supongamos que leyeras 100 veces 1023 máximo de tu AD, resulta que 100x1023 = 102300 que es mayor que 2^16 / 2 = 32768 de modo que sum esta mál definido o usas long no sirve.

3ro) no se que hace un delay(300000); con un timer. Una cosa no es compatible con la otra.

4to) que es esto

fanalog2=((analog2)*(5000.0/1023)/208.3333);

Buen dia Gracias por contestar y disculpa por mi mala forma de exponer el problema, creeme las palabras tecnicas no se me dan mucho, por eso trato de entender mas todo esto involucrarme con los que saben mas. Ahora tratare de ser mas simple ya que estoy tratando de programarlo yo desde cero, bien lo hare por puntos

  • yo defino de donde vienen mis datos por ejemplo del puerto A0
  • Después de hacer los cálculos pertinentes como hago o que comando o instrucción uso para que muestre el resultado de ciertos cálculos
  • y ¿como leer esos resultados en C# almacenando los resultados un listbox o textbox?

Vaya no has entendido nada de las observaciones que te hice y menos responder puntos 3 y 4).
Me quedo a la espera de las respuestas.
punto 2) señala un error en el uso de sum. Debe usarse como long
punto 3) delay(300000), no entiendo que hace un delay si usas timer.
punto 4) factor 208.3333 de donde viene?