Yes, that module offers hard wiring, providing option for one alternate I2C address. You may have difficulty un-solder and re-solder the option, as those resistors are very small.
Since your using a display library, both SPI and I2C are easy to implement. I2C has fewer hookup wires, but SPI is a much faster display. I2C termination can be problematic when using multiple I2C devices; you may after experimentation, need to provide additional pull up resistor.
eBay prices can be very low, but be careful buying displays or other Arduino modules, as most Asian sellers are selling items without any knowledge of the product, and photos or descriptions can be inaccurate. Since eBay buyer protection can get you a refund without actually returning the item (seller pays return shipping for damaged or "not as described" items), long shipping times and wrong item shipped can be frustrating or not worth the trouble.
Thanks Borland, as you suggested, seems like SPI is a better option out of the two. I understand the technical ambiguity that surrounds devices sold on ebay. Unfortunately, Amazon lacks diversity that ebay offers. As for the choice of protocol itslef, please also confirm that if I apply SPI modules, I won't have to change the address on the module itself since as I read (2nd post), an SPI display could be addressed individually through the CS pin. If I have hypothesized this correctly, then the following code from this thread should work.
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9, 8); // pin 10 has nothing attached since the module is always selected
U8GLIB_SSD1306_128X64 u8g2(5, 4, 7, 3, 2); // pin 7 has nothing attached since the module is always selected
void setup() {
// put your setup code here, to run once:
if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
}
void draw(void) {
// graphic commands to redraw the complete screen should be placed here
u8g.setFont(u8g_font_unifont);
//u8g.setFont(u8g_font_osb21);
u8g.drawStr( 0, 22, "Hello");
}
void draw2(void) {
u8g2.setFont(u8g_font_unifont);
u8g2.drawStr( 0, 22, "World");
}
void loop(void) {
// put your main code here, to run repeatedly:
u8g.firstPage();
do {
draw();
}
while ( u8g.nextPage() );
u8g2.firstPage();
do {
draw2();
}
while ( u8g2.nextPage() );
delay(100);
}
}
Under these assumptions, should I go ahead and make a purchase for this OLED module?
I think most of the questions are answered. I just want to point out one more solution: If speed is not an issue, you can use U8g2 software emulated I2C to control two displays with the same address. Just connect your two displays with two different pairs of pin. For example connect one display to pins 2 (SCL) and 3 (SDA) and the other display to 4 (SCL) and 5 (SDA).
Thank you Olikraus for the valuable input. I shall keep this in mind should the need arise for two I2C displays to be run without hardware modification. I intend to stay with one approach for integrating multiple displays with Arduino, it saves me the time to deal with different hardware setups which otherwise would eventually affect the objective. I tend to repurpose existing ones, so its more convenient and economical if less hardware requires modification. In this case, I may require better refresh rate, so would have to eventually replace the modules to begin with. I hope that an SPI display would eliminate the need of hardware modification and is addressable uniquely through the code.
Thanks.