void LCDScreen::denaturization() { lcd.clear(); lcd.setCursor( 0, 0 ); lcd.print("Denaturization? "); lcd.setCursor( 0, 1 ); lcd.print("Yes No"); lcd.setCursor( 0, 1 ); lcd.blink(); uint8_t buttons; while(true){ buttons = lcd.readButtons(); if (buttons & BUTTON_LEFT){ lcd.setCursor( 0, 1 ); denat = 1; } if (buttons & BUTTON_RIGHT){ lcd.setCursor( 8, 1 ); denat = 0; } if (buttons & BUTTON_SELECT){ lcd.noBlink(); break; } } }
void LCDScreen::updateArrow( double temp ) { lcd.home(); lcd.print( tempFloor ); if ( temp < tempFloor ) temp = tempFloor; int n; //number of spaces to create if ( tempFloor > 99 && tempCeil > 99 ) n = 9; else if ( tempFloor > 99 && tempCeil <= 99 ) n = 10; else if ( tempFloor <= 99 && tempCeil > 99 ) n = 10; else n = 11; int newTemp = map( temp, tempFloor, tempCeil, 0, n ); for ( int o = 0; o < newTemp; o++ ) { lcd.print( "-" ); } lcd.print( ">" ); for ( int o = 0; o < ( n - newTemp); o++ ) { lcd.print( " " ); } lcd.print( tempCeil ); }
void LCDScreen::dispUserPrefCycles() { lcd.clear(); lcd.setCursor( 0, 0 ); lcd.print( "# of cycles: " ); lcd.setCursor( 0, 15 ); lcd.print( maxCycles ); }
void LCDScreen::finalMess() { lcd.clear(); lcd.home(); lcd.print( "PCR complete." ); lcd.setCursor( 0, 1 ); lcd.print( "RESET to cont." ); }
void LCDScreen::dispUserPrefHighLow() { lcd.clear(); lcd.home(); lcd.print( "High: " ); lcd.print( tempCeil ); lcd.setCursor( 0, 1 ); lcd.print( "Low: " ); lcd.print( tempFloor ); }
void LCDScreen::setup() { lcd.begin( 16, 2 ); lcd.home(); lcd.print( "PCR V.2 - O.V.L."); lcd.setCursor( 0, 1 ); lcd.print( "SELECT to cont." ); waitForSelect(); delay( 500 ); setUserInputs(); delay( 500 ); }
void LCDScreen::displayInitialStatus( double temp, int current_cycle ) { lcd.clear(); lcd.home(); updateArrow( temp ); lcd.setCursor( 0, 1 ); lcd.print( "Cycle no. " ); lcd.print( current_cycle ); lcd.print( "/" ); lcd.print( maxCycles ); }
void LCDScreen::printError( int mess ) { lcd.clear(); lcd.home(); String message; if ( mess == 1 ) { message = "ERR: Overheating"; } else if ( mess < 1 ) { message = "ERR: Not ramping"; } else { message = "ERR: wrap failed"; } lcd.print( message ); lcd.setCursor( 0, 1 ); lcd.print( "Check hardware" ); }
void LCDScreen::dispDenatStatus(long int currentTime, long int stopTime) { int minLeft; lcd.clear(); lcd.setCursor( 0, 1 ); if(currentTime == 0 && stopTime == 0){ lcd.print("Ramping Up"); } else{ minLeft = (stopTime - currentTime) / 60000; lcd.print(minLeft); lcd.setCursor(2,1); lcd.print("min left"); } }
void K3NGdisplay::redraw(){ // redraw the screen with the current screen_buffer_live for (int x = 0;x < (display_columns*display_rows);x++){ lcd.setCursor(Xposition(x),Yposition(x)); if (screen_buffer_attributes_live[x] & ATTRIBUTE_BLINK){ // does this character have the blink attribute if (current_blink_state){ lcd.print(screen_buffer_live[x]); } else { lcd.print(' '); } } else { lcd.print(screen_buffer_live[x]); } } }
void K3NGdisplay::update(){ // update the screen with changes that are pending in screen_buffer_pending for (int x = 0;x < (display_columns*display_rows);x++){ if (screen_buffer_live[x] != screen_buffer_pending[x]){ // do we have a new character to put on the screen ? lcd.setCursor(Xposition(x),Yposition(x)); if (screen_buffer_attributes_pending[x] & ATTRIBUTE_BLINK){ // does this character have the blink attribute if (current_blink_state){ lcd.print(screen_buffer_pending[x]); } else { lcd.print(' '); } } else { lcd.print(screen_buffer_pending[x]); } screen_buffer_live[x] = screen_buffer_pending[x]; screen_buffer_attributes_live[x] = screen_buffer_attributes_pending[x]; } else { // not a new character, do we have live character on the screen to blink? if (last_blink_state != current_blink_state){ if (screen_buffer_attributes_live[x] & ATTRIBUTE_BLINK){ lcd.setCursor(Xposition(x),Yposition(x)); if (current_blink_state){ lcd.print(screen_buffer_live[x]); } else { lcd.print(' '); } } } } } last_blink_state = current_blink_state; }
void log(String message) { lcd.setCursor(0, 0); lcd.print(message + String(" ")); delay(1000); }