Here's my full code, running everything as part of the state machine.
switch (state)
{
case S_sensorRead:
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, LOW); //sends out ping
duration = pulseIn(echoPin, HIGH); //reads the echo
cm = microsecondsToCentimeters(duration); //time to distance
Serial.print(cm);
Serial.print("cm");
Serial.println();
ts = millis();
state = S_sensorTrigger;
break;
case S_sensorTrigger:
if ((cm <= 40) && (cm >= 2)) {
Serial.print("starting state machine");
state = S_seriesAOn;
}
else {
state = S_sensorRead;
}
break;