Multiplexed readings to one analog input - Inconsistent and wrong readings

This might also be a question for other discussion groups, but I think because of the volume of multiplexers I am using this was most appropriate.

Summary of Problem

The full project takes data from 30 thermistors into an Arduino Due, with the end result being to record all of them in a table and give the max temp from all of them to the user. For trouble shooting, I've scaled it back to only 8 inputs (1 multiplexer - CD4051BE). I've even bypassed the multiplexer and put 1 thermistor on one analog input and still see the same error. I'm finding that when I use analogRead(), it gives me wrong and inconsistent results. For instance, I use a voltage divider and read the node voltage. In one case, the node voltage was consistently 2.70 volts. I'm attaching the table below for the voltage reading from the Arduino

This is the code I am using to parse through 8 (final project will have 30) inputs, put them into an array, then later go through the array, convert those values to their respective voltages, and send them to a .csv file.

#include <Adafruit_GFX.h>                                 // Core graphics library
#include <SPI.h>                                          // this is needed for display
#include <Adafruit_ILI9341.h>                             // Color Library
#include <Wire.h>
#include <Adafruit_FT6206.h>                              // this is needed for FT6206
#include <SD.h>                                           // SD Card Library
#include "Adafruit_ILI9341.h"
#include <math.h>                                         // Math Library
#include <Average.h>                                      // Averaging Library

// The FT6206 uses hardware I2C (SCL/SDA)
Adafruit_FT6206 ctp = Adafruit_FT6206();                  // Touchscreen Object Definition

#define TFT_CS 10                                         // The display also uses hardware SPI, plus #9 & #10
#define TFT_DC 9
#define SD_CS 4                                           // SD Card pin
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

//#define BOXSIZE 40                                      // Size of the color selection boxes and the paintbrush size. probably not needed (Excluding it)
//#define PENRADIUS 3

double Vrail = 5;                                         // Rail voltage in temp equation
double R = 10000;                                         // Constant resistor in temp equation
double Rv;                                                // Variable Resistance
double vNode;                                             // Vnode Voltage
double SH_A = 1.1293e-3;                                  // Steinhart-Hart A Constant
double SH_B = 2.3411e-4;                                  // Steinhart-Hart B Constant
double SH_C = 8.7733e-8;                                  // Steinhart-Hart C Constant
double max = 0;                                           // max VNode
File dataFile;                                            // Initializing DataFile
int cuttingTimer = 0;
int participantNumber = 1;
int analogPinMux1 = 8;
int analogPinMux2 = 9;
int analogPinMux3 = 10;
int analogPinMux4 = 11;
double maxTempVoltage = 5;

void setup(void) {
  while (!Serial);     // used for leonardo debugging

  Serial.begin(115200);

  tft.begin();
  tft.setCursor (0, 0);
  tft.fillScreen(ILI9341_BLACK);

  tft.println("Initializing SD card...");
  if (!SD.begin(SD_CS)) {
    tft.println("SD card not found!");
    while (1);
  }

  if (! ctp.begin(40)) {  // pass in 'sensitivity' coefficient
    Serial.println("Couldn't start FT6206 touchscreen controller");
    while (1);
  }

  Serial.println("Capacitive touchscreen started");

  dataFile = SD.open("data.csv", FILE_WRITE);
  if (! dataFile) {
    tft.println("error opening data.csv");
    while (1);
  }


  pinMode(53, OUTPUT);
  pinMode(51, OUTPUT);
  pinMode(49, OUTPUT);
  pinMode(47, OUTPUT);
  pinMode(45, OUTPUT);
  pinMode(43, OUTPUT);
  pinMode(41, OUTPUT);
  pinMode(39, OUTPUT);
  pinMode(37, OUTPUT);
  pinMode(35, OUTPUT);
  pinMode(33, OUTPUT);
  pinMode(31, OUTPUT);

}

void loop() {
  
   tft.fillScreen(ILI9341_WHITE);

  dataFile.print("Participant Number ");
  dataFile.println(participantNumber);

  tft.setCursor(0, 0);

  while (! ctp.touched()) {

    double realVNode [8];                                        //Array for real time Vode. Resets every time

    for (int state = 0; state < 8; state++) {

      int j = state;
      //int k = state - 8;
      //int l = state - 16;
      //int m = state - 24;

      if (state < 8) {

        /*String address = String(j, BIN);        //converts 8 to binary

        int intAddress = address.toInt();          //converts binary address into int


        int z = bitRead(intAddress, 2);            //third bit, first mux
        int y = bitRead(intAddress, 1);            //second bit, first mux
        int x = bitRead(intAddress, 0);            //first bit, first mux



        if (x == 1) {
          digitalWrite(53, HIGH);                  //sets pin 53 to high if first bit is high
        }
        if (x == 0) {
          digitalWrite(53, LOW);                   //sets pin 53 to low if first bit is low
        }
        if (y == 1) {
          digitalWrite(51, HIGH);                  //sets pin 51 to high if second bit is high
        }
        if (y == 0) {
          digitalWrite(51, LOW);                   //sets pin 51 to low if second bit is low
        }
        if (z == 1) {
          digitalWrite(49, HIGH);                  //sets pin 49 to high if third bit is high
        }
        if (z == 0) {
          digitalWrite(49, LOW);                   //sets pin 49 to low if third bit is low
        }*/

        analogRead(8);            //adds thermistor value to int table
        delay(50);
        realVNode[state] = analogRead(8);            //adds thermistor value to int table
        delay(50);

      }
    }

    String dataString = "";

    max = realVNode[0] / 204.8;                    //Converts max digital value into voltage

    for (int s = 0; s < 8; s++) {
      double sensor = realVNode[s]/ 204.8;         //Turns "sensor" into the node voltage. 204.8 is 1024bits/5V
      dataString += String(sensor);

      if (s < 8) {
        dataString += ",";
      }
 /*     if (sensor < max) {
        max = sensor;
      }
    }

    if (max > 1.4789) {
      tft.fillScreen(ILI9341_GREEN);
    }

    else if (max <= 1.4789 && max > 0.9958) {
      tft.fillScreen(ILI9341_YELLOW);
    }

    else if (max <= 0.9958) {
      tft.fillScreen(ILI9341_RED);
    }
    */

    tft.print(max);

    dataFile.println(dataString);
    dataFile.flush();

    if (max < maxTempVoltage) {
      maxTempVoltage = max;
    }

    cuttingTimer++;
    delay(44);                                                  //Need to double check this time

  }
}
}

I've seen this problem posted in a couple place before (Problem reading two sensors with analogRead() - adafruit industries) and tried adding delays between readings and even reading the same input twice to made sure the ADC is saving the correct value. This doesn't seem to resolve my issue.

Any ideas of reasons why I would still be getting inaccurate results, or ways around it? Theoretically, I could make my delay even longer, but I'm trying to keep my sampling rate around 3Hz (if possible).

Thanks in advance

Screen Shot 2016-06-07 at 10.57.39 AM.png

Strip out everything except your thermistor code. Get that working.
Then add the other parts one at a time.

Beginners always throw everything and the kitchen sink and then wonder why their code doesn't work.

Please post a schematic of your hardware.