How do I measure current with a microcontroller
resistor tolerances make this method of measuring currents impractical (R1-4). You need a different method of level shifting and amplifying the current sense signal. Start with something like this - https://www.maximintegrated.com/en/app-notes/index.mvp/id/4438 

Diodes are horrible voltage references -- the voltage on each diode changes by about -2 mV/C. Best use a real voltage reference. 

Your circuits will discharge the Li-Ion cells unequally (the resistors in divider feeding the opamp) -- you'll damage the cells if left alone to discharge.