#include #include RWM rwm = RWM(); byte num_channels = 1; // Number of channels to sample (can be 1, 2, or 4) unsigned long samp_interval = 10; // Sampling interval in milliseconds (can range from 10 to 16,777,215) int buffer[1]; // Data buffer to store samples temporarily (size should match num_channels) unsigned long address, next_samp_time, num_lines; void setup() { byte value; pinMode(2, OUTPUT); digitalWrite(2, LOW); pinMode(3, OUTPUT); digitalWrite(3, LOW); pinMode(4, OUTPUT); digitalWrite(4, LOW); Serial.begin(9600); value = rwm.EEPROMreadByte(0x1FFFC); if ((value!=255) && (value!=0)) { digitalWrite(2, HIGH); // set pin 2 high --- indicates error Serial.println("EEPROM is not blank. You should download the data and clear the EEPROM before trying to log more data."); while (1) {} } if ((num_channels!=1) && (num_channels!=2) && (num_channels!=4)) { digitalWrite(2, HIGH); // set pin 2 high --- indicates error Serial.println("The number of channels to log must be 1, 2, or 4."); while (1) {} } if ((samp_interval<10) || (samp_interval>16777215)) { digitalWrite(2, HIGH); // set pin 2 high --- indicates error Serial.println("The sampling interval must be between 10ms and 16,777,215ms."); while (1) {} } if (value==255) { digitalWrite(3, HIGH); // set pin 3 high --- indicates ready to go rwm.EEPROMwriteByte(0x1FFFC, 0); Serial.println("The datalogger will start logging data the next time it is powered up."); while (1) {} } rwm.EEPROMwriteByte(0x1FFFC, num_channels); rwm.EEPROMwriteByte(0x1FFFD, lowByte(word(samp_interval&0xFFFF))); rwm.EEPROMwriteByte(0x1FFFE, highByte(word(samp_interval&0xFFFF))); rwm.EEPROMwriteByte(0x1FFFF, byte(samp_interval>>16)); address = 0; next_samp_time = millis() + samp_interval; num_lines = 65534/num_channels; } void loop() { byte i; unsigned long time; time = millis(); if (time>next_samp_time) { for (i = 0; i num_lines){ digitalWrite(4, LOW); // turn off pin 4 when EPROM is full } else { digitalWrite(4, HIGH); // set Pin 4 on -indicates actively logging } }