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::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::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::selectCycles() { dispUserPrefCycles(); uint8_t buttons; while ( true ) { buttons = lcd.readButtons(); if (buttons & BUTTON_LEFT) { if ( maxCycles > 0 ) { maxCycles--; dispUserPrefCycles(); delay(100); } } if (buttons & BUTTON_RIGHT) { if ( maxCycles < 100 ) { maxCycles ++; dispUserPrefCycles(); delay(100); } } if (buttons & BUTTON_SELECT) break; } }
void LCDScreen::selectHighLowPush() { dispUserPrefHighLow(); int highlow = 0; uint8_t buttons; //int buttons; while ( true ) { //buttons = bpin.readButtons(); //if (buttons & BPIN_UP) highlow = 0; //if (buttons & BPIN_DOWN) highlow = 1; buttons = lcd.readButtons(); if (buttons & BUTTON_UP) highlow = 0; if (buttons & BUTTON_DOWN) highlow = 1; //if( buttons & BPIN_LEFT ) if (buttons & BUTTON_LEFT) { if ( highlow == 0 ) { if ( tempCeil > ( tempFloor + 1 ) ) tempCeil--; } else { if ( tempFloor > 49 ) tempFloor--; } dispUserPrefHighLow(); delay( 100 ); } //if( buttons & BPIN_RIGHT ) if (buttons & BUTTON_RIGHT) { if ( highlow == 0 ) { if ( tempCeil < 110 ) tempCeil++; } else { if ( tempFloor < ( tempCeil - 1 ) ) tempFloor++; } dispUserPrefHighLow(); delay( 100 ); } //if( buttons & BPIN_SELECT ) if (buttons & BUTTON_SELECT) break; } }
void LCDScreen::setUserInputs() { lcd.clear(); // Check for Denaturization denaturization(); delay(500); lcd.clear(); // Adjust High/Low Values int highlow = 0; selectHighLowPush(); delay(500); // Adjust No. of Cycles selectCycles(); delay(500); // All done with configuration }
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::initialize(){ lcd.begin(display_columns, display_rows); // if you are getting an error on this line and do not have // any of the LCD display features enabled, remove // k3ngdisplay.h and k3ngdisplay.cpp from your ino directory #ifdef FEATURE_YOURDUINO_I2C_LCD lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE); lcd.setBacklight(I2C_LCD_COLOR); #endif // FEATURE_YOURDUINO_I2C_LCD #ifdef FEATURE_ADAFRUIT_I2C_LCD lcd.setBacklight(I2C_LCD_COLOR); #endif // FEATURE_ADAFRUIT_I2C_LCD clear(); }
void LCDScreen::waitForSelect() { while ( true ) { uint8_t buttons = lcd.readButtons(); if ( buttons ) { if (buttons & BUTTON_SELECT) 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::dispUserPrefHighLow() { lcd.clear(); lcd.home(); lcd.print( "High: " ); lcd.print( tempCeil ); lcd.setCursor( 0, 1 ); lcd.print( "Low: " ); lcd.print( tempFloor ); }
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 K3NGdisplay::clear(){ // do an immediate clearing of the screen for (int x = 0;x < MAX_SCREEN_BUFFER_COLUMNS*MAX_SCREEN_BUFFER_ROWS;x++){ screen_buffer_live[x] = ' '; screen_buffer_pending[x] = ' '; screen_buffer_revert[x] = ' '; screen_buffer_attributes_live[x] = 0; screen_buffer_attributes_pending[x] = 0; screen_buffer_attributes_revert[x] = 0; } lcd.clear(); current_print_row = 0; current_print_column = 0; revert_screen_flag = 0; }
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::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); }
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; } } }
int main(int argc, char *argv[]) { Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield(); lcd.begin(16, 2); lcd.setBacklight(RED); lcd.clear(); lcd.home(); lcd.setCursor(0,0); lcd.myPrint("Hello World"); int count = 0; for(int i = 0; i < 20; i++){ usleep(300000); if(count < 5){ lcd.scrollDisplayRight(); } count++; if(count > 5){ lcd.scrollDisplayLeft(); } if(count > 9) count = 0; } uint8_t buttons = lcd.readButtons(); while(!(buttons & BUTTON_SELECT)){ if (buttons) { if (buttons & BUTTON_LEFT) { lcd.scrollDisplayLeft(); lcd.setBacklight(GREEN); } if (buttons & BUTTON_RIGHT) { lcd.scrollDisplayRight(); lcd.setBacklight(TEAL); } } buttons = lcd.readButtons(); usleep(90000); } return 0; }
void lcd_setup() { // set up the LCD's number of rows and columns: lcd.begin(LCD_COLUMNS, LCD_ROWS); lcd.setBacklight(BLUE); }
void lcd_set_color(int color) { lcd.setBacklight(color); }