Esempio n. 1
0
 void
 onResourceInitialization(void)
 {
   for (unsigned i = 0; i < c_servo_count; ++i)
   {
     enableServo(i);
     actuateServo(i, 0);
   }
 }
void setServoPosition(void) {
  uint32_t elapsedMinutes;
/* using 32 bits b/c elapsedMinutes * PULSE_RANGE will overflow 16 bits */



  elapsedMinutes = (hours - START_TIME) * 60 + minutes;
  OCR1A = PULSE_MIN + elapsedMinutes * PULSE_RANGE / (HOURS_RANGE * 60);
  enableServo();
}
void everyMinute(void) {
	minutes++;
	if (minutes > 59) {
		minutes = 0;
		everyHour();
	}
	// If during business hours, set servo to new minute
	// Otherwise, don't need to move moter when laser is off
	if ((hours >= START_TIME) && (hours < STOP_TIME)) {
		setServoPosition();
		enableServo();
		LASER_PORT |= (1 << LASER);		/* make sure laser is on */
	}
	else {
		LASER_PORT &= ~(1 << LASER);	/* make sure laser is off */
	}
}