All your timed functions are trying to start at the exact same time… why?
First… you could easily run all 8 functions, sequentially, on one timer if you really want to.
Second… when tying to run seperate functions simultaneously, you are causing the processor to get confused and drop the connection.
Stagger the timers so that each one starts a little later then the prior one… but also giving its function time to complete.
Also try not to have timers match on alternating cycles… like a timer every 1 second another every 5 seconds and a third every 60 seconds… as some and/or all will eventually try to run at the same time every few cycles.
For example, running all timers within 200 ms from start to finish, and repeating the process every second, try this… assuming 20 ms is enough time for each function to complete its task before the next one runs…
timer.setInterval(1000L, PiezoVoltageRead);
timer.setInterval(1020L, WindVoltageRead);
timer.setInterval(1040L, SolarVoltageRead);
timer.setInterval(1080L, PiezoCurrentRead);
timer.setInterval(1100L, WindCurrentRead);
timer.setInterval(1120L, SolarCurrentRead);
timer.setInterval(1140L, sumvoltage);
timer.setInterval(1160L, SumCurrent);
You can test if 20ms is enough by having print statements… in your case Serial1.println()
statements, at the beginning and end of each function… then if one function starts before the other ends, you will see the print statements out of order. Be aware that the print statements themselves will take a small amount of time to process.