I think you should learn to use variable arrays to hold and access related data by numbers under the same name. One function could serve multiple sets of data using a 2D array.
Linked from the ARDUINO REFERENCE PAGE -- arrays!
Functions in void loop() run over and over... 10's of times per millisecond mostly checking timers, inputs and status variables for a trigger condition, a change to act on.
If the function kept track of what it is doing, like waiting for input it could have code for that 'process state' (kept in a variable) and it could have a section for every step the process does then each time a step is done the state is changed to the next so next time the function runs it runs the code for the process state.
Consider a washing machine: start. fill, agitate, etc are states.
The powerful switch-case statement that organizes state driven code very well!
Learn the lessons on simple examples to know what you can do then take a better than fresh view of the job. Simplify it, model it, make 2 copies and throw the first away (Nick Wirth, Aug 85 Byte, quoting then old computing wisdom... he authored Pascal then Modula).
Sometimes it helps to draw an array of names on paper to map data in ram to keep track. A struct lets you make your own named groups of other variables amd it's a variable too that can be arrayed! So couple the read int with the pin number byte and an unsigned time holder (16 bit millis can time 65 second intervals and checks faster than 32 bit) per sensor and one function runs any struct in the array.
Every step you learn, you might crunch that sketch down.