Geek Factor: Arduino Code

Here's the code we promised you in the current issue of Macworld. To download a Zip archive containing this code as well as the compiled script, click here.

long MINUTES = 15;  // take a break every 15 minutes
long SNOOZE  = 1;   // pester you every minute after that
int SENSOR_PIN = 0; // the pin the sensor's connected to

long next_alert = 0; // time of next alert (0 = no pending alert)
void setup() {
  Serial.begin(9600); // configure the serial port for 9600 bps 
  delay(10);
}

// Arduino's main loop
void loop() {

  if (analogRead(SENSOR_PIN) < 20) { // No one on the sensor 
  
    delay(2000); // Wait two seconds
    if (analogRead(SENSOR_PIN) < 20) { // Still no one there?
      if (next_alert != 0) {  // If there's a timer set, unset it
        next_alert = 0;
        Serial.print("U"); // Tell the Mac you stood Up
      }
    }
  } else {  // Some pressure on the sensor
  
    if (next_alert == 0) {  // Set a new alert if there was none
      next_alert = millis() + MINUTES * 60 * 1000;   
      Serial.print("D"); // Tell the Mac you sat Down
    }    
    if (millis() > next_alert) { // You've been sitting too long
      next_alert = millis() + SNOOZE * 60 * 1000; 
      Serial.print("B"); // Tell the Mac it's Break time
    }
  }
  delay(250);
  
}

Subscribe to the Create Newsletter

Comments