   displayState = newState;
 }
 
+/* Tell the probes to sample the temperature and store it in their EEPROM */
+void requestTemps() {
+  oneWire.reset();
+  oneWire.skip();
+  oneWire.write(STARTCONVO, 0);
+}
+
+
+/* Read the EEPROM of one of the probes, identified by the address */
 float readTemp(byte *addr) {
   byte scratchPad[9];
   byte crc;
   byte i;
-  
-  oneWire.reset();
-  oneWire.skip();
-  oneWire.write(STARTCONVO, 0);
-  delay(ONEWIRE_POWERED_POLLTIME_MS);
   
   oneWire.reset();
   oneWire.select(addr);

  addBarGraphDataPoint(sensorVoltOneI);
}

void showMem() {
  Serial.print(F("Free RAM ="));
  Serial.println(freeMemory());
}

void showFatal(const char* buf){
  onscreenNoticeMessage[0] = '\0';
  strncpy(onscreenNoticeMessage, buf, sizeof(onscreenNoticeMessage));

#include <MemoryFree.h>
#include "Globals.h"
#include "U8glib.h"


/* Analog */
#define VOLT_ONE A3
#define AREF_VOLTAGE 5.0

/* Digital */
#define BUTTON 2
#define ONEWIRE 3


/* Hardware SPI */
#define SD_CLK SCK
#define SD_MISO MISO
#define SD_MOSI MOSI
#define SD_CS SS
     
/* Software SPI */
#define OLED_CLK SCK
#define OLED_MOSI MOSI
#define OLED_DC 9
#define OLED_CS 8
#define OLED_RESET 7

OneWire  oneWire(ONEWIRE);

/* Addresses for the 1-wire temperature probes */
byte controllerThermometer[] = { 0x28, 0xF1, 0x14, 0xB3, 0x04, 0x00, 0x00, 0xBF };
byte motorThermometer[] = { 0x28, 0x0D, 0xDE, 0xB2, 0x04, 0x00, 0x00, 0xA0 };

/* Used to space out periodic tasks */
long lastLogUpdate = 0;
long lastTempUpdate = 0;

/*
from pins_arduino.h:
