 }
 
 uint16_t readSoil(uint16_t vcc) {
-  analogReference(DEFAULT);
-  uint16_t val;
-  // After changing the analog reference, 
-  // the first few readings from analogRead() may not be accurate.
-  for (uint8_t i = 0; i < 2; i++) { 
-    val = analogRead(PIN_SENSOR_SOIL);
-  }
+  uint16_t val;
+
+  // This first reading after a mux change is unreliable.
+  val = analogRead(PIN_SENSOR_SOIL);
+
   // Average the next 2 readings.
   val = 0;
   for (uint8_t i = 0; i < 2; i++) { 


uint16_t readSolarCurrent() {
  // 1 ohm inline resistor
  analogReference(INTERNAL);
  uint16_t val;
  // After changing the analog reference, 
  // the first few readings from analogRead() may not be accurate.
  for (uint8_t i = 0; i < 3; i++) { 
    val = analogRead(PIN_SENSOR_SOLAR_CURRENT);
  }
  // Average the next readings.
  val = 0;
  for (uint8_t i = 0; i < 2; i++) { 

    // Should be a reply message for us now   
    if (rf95.recv(buf, &len)) {
      RH_RF95::printBuffer("Received: ", buf, len);
      Serial.print("RSSI: ");
      rssi = rf95.lastRssi();
      Serial.println(rssi, DEC);    

      uint8_t decrypted_ack_buf[16];
      cipher.decryptBlock(decrypted_ack_buf, buf);
      ack_payload.unserialize(decrypted_ack_buf);

    } else {
      Serial.println("Receive failed");
    }
