MassDuino

Another peculiarity is the analog inputs. At least the one I have got, has an analog input pullup of 160 -180 Kohm. And I have not been able to make it behave floating like the at328.

Connecting a 100K NTC as in Ramps 1.4, an arduino uno shows the room temperature, around 21 degree C.
The md-328 shows 0 or minus degrees using the same circuit.

A small test program shows the difference between the two mcu's.

Something to consider when using analog input.

#define TIMEINTERVAL 1000     //Draw something every second
#define INPUT_PIN  A0
#define THERMISTOR_PIN  A0

#define LEDPIN  13

//Comment out to show voltage
//#define READ_TEMPERATURE

long drawingTime;

/***
* steinhart and thermistors
* https://arduinodiy.wordpress.com/2015/11/10/measuring-temperature-with-ntc-the-steinhart-hart-formula/
*                       _
*      vcc --v^v^---+---v\v^-- gnd
*            4.7K   |   100K NTC (NOMINAL_RESISTANCE)
*  (SERIESRESISTOR) |   
*                   +---||---- gnd
*                   |   10 microFarad
*                   v
*                  vo (A0/THERMISTOR_PIN)
*/


#ifdef READ_TEMPERATURE

float read_temp() {
 
 #define SAMPLES 4
 int rawvalue = 0;
 for(char i = 0; i < SAMPLES;i++) {
   rawvalue += analogRead(THERMISTOR_PIN);
   delay(1);
 }
 rawvalue /=SAMPLES;
 
 Serial.print("Analog read: ");
 Serial.println(rawvalue);   
 
 #define SERIESRESISTOR 4700.0
 #define NOMINAL_RESISTANCE 100000.0
 #define NOMINAL_TEMPERATURE 25.0
 #define BCOEFFICIENT 3950.0
 
 //Something wrong, short or no connection
 if(rawvalue == 0 || rawvalue == 1023)
   return 0.0;
 
 float steinhart = SERIESRESISTOR / ((1023.0 / (float)rawvalue) - 1.0) / NOMINAL_RESISTANCE; // (R/Ro)
 steinhart = log(steinhart); // ln(R/Ro)
 steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)
 steinhart += 1.0 / (NOMINAL_TEMPERATURE + 273.15); // + (1/To)
 steinhart = 1.0 / steinhart; // Invert
 steinhart -= 273.15; // convert to C

 return steinhart;
 
}

#else

float readVoltage() {
 int rawvalue = analogRead(INPUT_PIN);
 Serial.print("Analog read: ");
 Serial.println(rawvalue);   
 return ((5.0* (float) rawvalue)/1023.0);
}
#endif

void setup() {

 Serial.begin(115200);
 while(!Serial);
 
 pinMode(LEDPIN, OUTPUT);

 drawingTime = millis() + TIMEINTERVAL;

}

void loop() {

 if(millis() > drawingTime ) {
   drawingTime += TIMEINTERVAL;
#ifdef READ_TEMPERATURE
   int temp = (int)read_temp();
   Serial.print("Degrees C: ");
   Serial.println(temp);
#else    
  
   Serial.print("V: ");
   Serial.println(readVoltage());   
#endif
   digitalWrite(LEDPIN, !digitalRead(LEDPIN)); 
 }

}