Exemplo n.º 1
0
void ActionMenuItem::Render(LCD& lcd, byte cols, byte rows) const {
	lcd.setCursor(0, 0);
	Pad(lcd, cols, lcd.print(m_label));

	lcd.setCursor(0, 1);
	Pad(lcd, cols, lcd.print(m_prompt));
}
Exemplo n.º 2
0
void ConfigMenuItem::Render(LCD& lcd, byte cols, byte rows) const {
	size_t size = 0;
	long value = m_value->Get();

	// render label
	lcd.setCursor(0, 0);
	size = lcd.print(m_label);
	Pad(lcd, cols, size);

	// render value
	lcd.setCursor(2, 1);
	size = m_value->PrintValue(lcd);
	Pad(lcd, cols - 4, size);

	// render navigation
	lcd.setCursor(0, 1);
	if (value > m_value->GetMin()) {
		lcd.print(ARROW_LEFT);
	} else {
		lcd.print(F(" "));
	}
	lcd.print(F(" "));

	lcd.setCursor(cols - 2, 1);
	lcd.print(F(" "));
	if (value < m_value->GetMax()) {
		lcd.print(ARROW_RIGHT);
	} else {
		lcd.print(F(" "));
	}
}
Exemplo n.º 3
0
void InfoIdleScreen::Render(LCD& lcd, byte cols, byte rows) const {
	lcd.setCursor(0, 0);
	if (m_sequence->IsRunning()) {
		int _chars = 0;
		_chars += lcd.print(F("Shot "));
		_chars += lcd.print(m_sequence->GetShotsFired());
		_chars += lcd.print(F("/"));
		_chars += lcd.print(m_sequence->GetShotsTotal());
		Pad(lcd, cols, _chars);

		_chars = 0;
		lcd.setCursor(0, 1);
		_chars += lcd.print(F("Rem. "));
		long _secondsRemaining = m_sequence->GetSecondsRemaining();
		_chars += PrintTime(_secondsRemaining, lcd);
		Pad(lcd, cols, _chars);
	} else {
		Pad(lcd, cols, lcd.print(F("Idle")));
		lcd.setCursor(0, 1);
		Pad(lcd, cols, 0);
	}
}
Exemplo n.º 4
0
int main(void)
{

	POWEROFF();
	delayU(100);
	POWERUP();

	lcd.setLineOne("Welcome to");
	lcd.setLineTwo("TowerBuilder");
	sei();        //Enable global interrupt

	while(1)
	{
		//Send 1 character to LCD if LCD is ready
		if(lcd.ready())
		lcd.print();

		//Task scheduler
		if(taskDone == FALSE) {

			switch(taskNumber++) {

				case 0:
				button.readButtons();
				menu();
				break;

				case 1:
				adc.convertPOT();
				break;

				case 2:
				sensor.readSensors();
				break;

				case 3:
				first();
				break;

				case 4:

				break;

				case 5:

				break;

				case 6:

				break;

				default:
				taskNumber = 0;
				break;
			}

			taskDone = TRUE;

			//Update servo's channel after each task finished
			while(updateChannel == FALSE);
			servo.servoPWM();
			updateChannel = FALSE;

		}
	}
}
Exemplo n.º 5
0
void MenuItem::Pad(LCD& lcd, byte cols, size_t written) const {
	while (written < cols) {
		written += lcd.print(F(" "));
	}
}