User Tools

Site Tools


arduino:displays_for_classic_arduinos:nokia_5110_displays_and_classic_arduinos_speed_test

This is an old revision of the document!


Nokia 5110 displays and Arduino Uno: speed test

I used U8g2 to see how quickly a Nokia 5110 display could be updated with an Arduino Uno (actually a 3.3V 8 MHz Pro Mini). The good news is that it is fast enough. The bad news is that it's still a bit of a memory glutton, consing 42% of program storage and 24% of dynamic memory. It's probably all the data for the lovely fonts.

Speed will probably roughly double with a 16 MHz board, but there are no 16 MHz 3.3V boards, so that means you'll have to complicate things a bit with level shifters.

display_nokia_5110_u8g2_counter.ino
#include <U8g2lib.h>
 
/*
 *  display_nokia_5110_u8g2_counter.ino
 *  
 * Test screen update speed with large solid fonts on 
 * a Nokia 5110 screen that uses the PCD8544 controller.
 * 
 * Notes:
 * Consumes 42% of program storage space and
 * 24% of dynamic memory on a Pro Mini.
 */
 
/*
 * Pin assignments:
 * RST: 8
 * CE/CS/SCE: 10
 * DC/"D/C": 9
 * DIN/DN/MOSI/DATA: 11
 * CLK/SCLK/SCK: 13
 * VCC: 3.3V
 * LIGHT/LED: ground through 330 ohm resistor
 * GND: ground
 */
 
const unsigned int CLOCK_PIN = 13,
                   DATA_PIN = 11,
                   CS_PIN = 10,
                   DC_PIN = 9,
                   RESET_PIN = 8;
 
//U8G2_PCD8544_84X48_1_4W_SW_SPI u8g2 = U8G2_PCD8544_84X48_1_4W_SW_SPI(U8G2_R0, CLOCK_PIN, DATA_PIN, CS_PIN, DC_PIN, RESET_PIN);  // SW SPI
U8G2_PCD8544_84X48_1_4W_HW_SPI disp = U8G2_PCD8544_84X48_1_4W_HW_SPI(U8G2_R0, CS_PIN, DC_PIN, RESET_PIN);                       // HW SPI
 
unsigned int counter = 80;
char dispStr[4];    // null terminated char array used to pass to renderer.
 
void setup(void) {
  disp.begin();
  disp.setContrast(145);
  disp.setColorIndex(1);
}
 
void loop(void) {
  counter = (counter + 1) % 1000;
 
  // picture loop
  disp.firstPage();
  do {  
    disp.setFont(u8g2_font_5x8_tr);   
    disp.drawStr(0, 6, "PCD8544 u8g2");
 
    disp.setFont(u8g2_font_logisoso38_tr);
    String(counter).toCharArray(dispStr, 4);
    disp.drawStr( 0, 47, dispStr);
  } while ( disp.nextPage() );
 
  /* inherent frame rate is about 10 fps with 8MHz processor 
     (without additional delay). */
  delay(500);
}
arduino/displays_for_classic_arduinos/nokia_5110_displays_and_classic_arduinos_speed_test.1517091612.txt.gz · Last modified: 2018/01/27 22:20 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki