voltimetro amperometro per solare

ho necessita di visualizzare su 2 display
3 tensioni e correnti di panello solare
1 tensione e corrente batteria
e
1 tensione batteria BM

il tutto sara montato nel mio camper

a forza di fare varie prove e incollaggi vari ero riuscito a visualizzare abbastanza bene.

ma adesso non legge piu gli ingressi dove sbaglio ?

  #include <Wire.h>                      
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);

LiquidCrystal_I2C lcd2(0x23, 10, 2);

int analogInput6 = A6; 
int analogInput7 = A7; 
int analogInput8 = A8; 
int analogInput9 = A9; 
int analogInput10 = A10; 


float vout6 = 0.0;
float vin6 = 0.0;
float R3 = 100000.0; // inserire valore esatto resistenza R1 (100K) 
float R4 = 10000.0; // inserire valore esatto resistenza R2 (10K) 
int value6 = A6;  //volt


float vout7 = 0.0;
float vin7 = 0.0;
float R5 = 100000.0; // inserire valore esatto resistenza R1 (100K) 
float R6 = 10000.0; // inserire valore esatto resistenza R2 (10K) 
int value7 = A7;  //volt


float vout8 = 0.0;
float vin8 = 0.0;
float R7 = 100000.0; // inserire valore esatto resistenza R1 (100K) 
float R8 = 10000.0; // inserire valore esatto resistenza R2 (10K) 
int value8 = A8;  //volt


float vout9 = 0.0;
float vin9 = 0.0;
float R9 = 100000.0; // inserire valore esatto resistenza R1 (100K) 
float R10 = 10000.0; // inserire valore esatto resistenza R2 (10K) 
int value9 = A9;  //volt

float vout10 = 0.0;
float vin10 = 0.0;
float R11 = 100000.0; // inserire valore esatto resistenza R1 (100K) 
float R12 = 10000.0; // inserire valore esatto resistenza R2 (10K) 
int value10 = A10;  //volt



void setup() {
 
  Serial.begin(9600);
}
 
void loop() 
{


value6 = analogRead(A6);  //  analogInput
   
   vout6 = (value6 * 5.0) / 1024.0; 
   // inserire al posto di 5.0V l`uscita in volt tra i Pin 5V e GND del vostro Arduino
   
   vin6 = vout6 / (R4/(R3+R4)); 
   if (vin6<0.09) 
   vin6=0.0;



value7 = analogRead(A7);  //  analogInput
   
   vout7 = (value7 * 5.0) / 1024.0; 
   // inserire al posto di 5.0V l`uscita in volt tra i Pin 5V e GND del vostro Arduino
   
   vin7 = vout7 / (R6/(R5+R6)); 
   if (vin7<0.09) 
   vin7=0.0;

value8 = analogRead(A8);  //  analogInput
   
   vout8 = (value8 * 5.0) / 1024.0; 
   // inserire al posto di 5.0V l`uscita in volt tra i Pin 5V e GND del vostro Arduino
   
   vin8 = vout8 / (R8/(R7+R8)); 
   if (vin8<0.09) 
   vin8=0.0;


   value9 = analogRead(A9);  //  analogInput
   
   vout9 = (value9 * 5.0) / 1024.0; 
   // inserire al posto di 5.0V l`uscita in volt tra i Pin 5V e GND del vostro Arduino
   
   vin9 = vout9 / (R10/(R9+R10)); 
   if (vin9<0.09) 
   vin9=0.0;



   value10 = analogRead(A10);  //  analogInput
   
   vout10 = (value10 * 5.0) / 1024.0; 
   // inserire al posto di 5.0V l`uscita in volt tra i Pin 5V e GND del vostro Arduino
   
   vin10 = vout10 / (R12/(R11+R12)); 
   if (vin10<0.09) 
   vin10=0.0;


  
 
  float average = 0;
  for(int i = 0; i < 4000; i++) {
    average = average + (.0264 * analogRead(A1) -13.57) / 1000;  //average = average + (.0264 * analogRead(A0) -13.51) / 1000;
    delay(1); }

 float average2 = 0;
  for(int i = 0; i < 4000; i++) {
    average2 = average2 + (.0264 * analogRead(A2) -13.57) / 1000;  //average = average + (.0264 * analogRead(A0) -13.51) / 1000;
    delay(1);     }

float average3 = 0;
  for(int i = 0; i < 4000; i++) {
    average3 = average3 + (.0264 * analogRead(A3) -13.57) / 1000;  //average = average + (.0264 * analogRead(A0) -13.51) / 1000;
    delay(1);    }

float average4 = 0;
  for(int i = 0; i < 4000; i++) {
    average4 = average4 + (.0264 * analogRead(A4) -13.57) / 1000;  //average = average + (.0264 * analogRead(A0) -13.51) / 1000;
    delay(1);     }



float average5 = 0;
  for(int i = 0; i < 4000; i++) {
    average5 = average5 + (.0264 * analogRead(A5) -13.57) / 1000;  //average = average + (.0264 * analogRead(A0) -13.51) / 1000;
    delay(1);    }
  
 
lcd.begin(); 
lcd2.begin(); 


lcd.setCursor(0, 0);// prima riga
  lcd.print("A");
  lcd.print(average,1);
  lcd.print("  SOL1");  //
  lcd.print(" v  ");  //
  lcd.print(  vin6,1); 

lcd.setCursor(0, 1);//   seconda riga 
lcd.print("A");  //
lcd.print(average2,1);
lcd.print("  SOL2");  //
lcd.print(" v  ");  //
lcd.print(vin7,1); 



lcd.setCursor(0, 2);//   TERZA riga 
lcd.print("A");  //
lcd.print(average3,1);
lcd.print("  SOL3");  //
lcd.print(" v  ");  //
lcd.print(vin8,1); 

lcd.setCursor(0, 3);//   4 riga 
lcd.print("A");  //
lcd.print(average4,1);  //A4
lcd.print(" SOL  TOT  ");  //


lcd2.setCursor(0, 0);
lcd2.print("A ");  // 2 DISPLAY
lcd2.print(average5,1);
lcd2.print("BS V ");
lcd2.print(vin9,2);

lcd2.setCursor(0, 1);
lcd2.print(" BM ");  // 2 DISPLAY
lcd2.print(vin10,1);

 delay(100); 
 }

ma che arduino stai usando?

Ops , Arduino mega

mah
ad una prima occhiata il programma è un po' confuso
ma dovrebbe andare
hai provato gli ingressi con un programma semplice?

Si provati gli ingressi ,ho provato un schetch con un potenziometro e funzionano ,

A volte funziona ma e molto lento nella lettura .

Grazie

Tipo una lettura ogni 20 secondi?
Una cosa così?

20,1 s e qualche altro spicciolo per il codice eh stand? ho fatto i conti giusti?
Per non contare anche i 2

lcd.begin();
lcd2.begin();

calasci, potrei chiederti di spiegarmi a parole qual'è la logica che vorresti ottenere? In particolare perchè fai la media di 4000 letture per ogni misura?
Che poi non è una media, mi ha ingannato il nome, ma la somma di qualcosa che al momento non capisco bene?

Devo visualizzare sul display 1

Volt batteria motrice
Volt batteria servizi
Amper batteria servizi

2 display
Quelli sopra
+

3 tensioni pannelli solari
3 correnti pannelli solari

La media lo trovata su internet per la lettura dei sensori corrente bidirezionali

Poi vorrei visualizzarli su Internet

Avevo la batteria scarica...
E maubarzi mi ha validamente sostituito
Quel programma li...
"Ripartilo" da capo, pensando a quello che fai
Evita di copiare senza capire, fidati
È meno fatica imparare che copiare
Adesso lavoro, poi se ne parla se ne hai bisogno

Hai capito perchè è molto lento?
perchè fai 5 for per 4000 giri con un delay di 1 millisecondo ad ogni giro, quindi sono 4S (1mS * 4000) per fare ogni for, quindi 4*5=20 secondi per tutti e 5 i for.

ti torna?

calasci:
Devo visualizzare sul display 1
.
.

Poi vorrei visualizzarli su Internet

sì, questo è chiaro
Ma maubarzi ti ha chiesto la logica del programma, non cosa vuoi fare, che lo sapevamo già.
Non ti credi che ripetercelo sia come minimo strano, cosa è, credevi che non lo avessimo capito?

Standardoil:
sì, questo è chiaro
Ma maubarzi ti ha chiesto la logica del programma, non cosa vuoi fare, che lo sapevamo già.
Non ti credi che ripetercelo sia come minimo strano, cosa è, credevi che non lo avessimo capito?

considera che e da poco che uso arduino ........

come fareste per non fare ballare le letture dei sensori corrente ?

Ridurre la risoluzione mostrata
Filtrare il segnale lato ingresso
Usare una media di poche letture
Usare una media mobile

Cercherò su Google quello che mi avete detto

cercalo anche qui.......