Hot answers tagged

64

Other answers cover your question pretty well at an abstract level (hardware), but having actual experience with the GBA in particular I figured a more detailed explanation may be worth while. The GBA had many drawing modes and settings which could be used to control how the graphics processor interpreted the video RAM, but one thing was inescapable: the ...


35

LCD: liquid crystal display. Works by adjusting the amount of light blocked. Usually has a backlight but might not (clocks, calculators, Nintendo Gameboy). The green-black ones can be very cheap and are a mature technology. Response time can be slow. TFT: is a type of LCD with a thin film transistor attached to each pixel. All computer LCD screens are TFT ...


21

The key feature of all the games consoles that distinguished them from early PCs and virtually all home computers(1) was hardware sprites. The linked GBA programming guide shows how they work from the main processor point of view. Bitmaps representing player, background, enemies etc are loaded into one area of memory. Another area of memory specifies the ...


19

"My question is - how did a device like the GBA achieve a frame rate of nearly 60fps?" To answer just the question, they did it with a graphics processer. I'm pretty sure the Game Boy used sprite graphics. At a top level, that means that the graphics processor gets loaded things like an image of a background, and an image of Mario, and an image of ...


18

Actually, many displays do use LEDs - but as far as I know, exclusively for extremely large displays. Just do a search for 'LED signage' and you'll see a whole sub industry around displays made from LEDs. And I mean real, full motion video displays. You've probably seen one on a billboard at some point. They also make, or at least made, small displays ...


14

The GBA had a pretty slow processor. The ARM7 is very nice; they just ran it slow and gave it next to no resources. There is a reason why a lot of Nintendo games at that point and before were side-scrollers. HARDWARE. It is all done in hardware. You had multiple layers of tiles plus one or more sprites and the hardware did all the work to extract pixels ...


8

No charging: A bio reactor hooked into the wearer's blood stream. High Tech: A thorium salt nuclear reactor. Green: A wind turbine on the wearer's hat. Well marketable: Microscopic solar panels woven into a jacket. Meaningful: A battery. You see what this is about. Be specific.


7

how did a device like the GBA achieve a frame rate of nearly 60fps? Hardware. It's got graphics memory, which may or may not share the same bus as program/data memory... but the important bit is that it has a graphics processor which reads the memory 60 times per second and sends the data to the LCD using an optimized interface which is designed to do this ...


6

Based on previous answer. Move the resistor from position R3 to R1. Connect R8. Result: Example of usage: Code (sketch): #include <Arduino.h> #include <U8x8lib.h> //Using u8g2 library U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8( /* clock=*/ 12, /* data=*/ 11, /* reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display void ...


5

Your resistors are limiting the current of all your loads. The OLED module is the most sensitive to such limitations. As stated in the comments, you need a voltage regulator.


5

OLED displays are much cheaper to make than LED matrices, essentially OLEDs are jet-printed (only using vapour instead of droplets used in ink-jet printers). LED matrices have to be either assembled from individual die pieces (see LED displays) or grown on a single die (see MicroLED). Both variants have been available for several years as products for ...


4

You will need to use a boost convertor. For best efficiency, you'll want to use a dedicated boost IC, rather than spin your own. It's not the best in performance, but I like the LM3578 for use by inexperienced people. It's adjustable, and the output voltage is set through a pair of resistors. As long as you put a reasonable LC network (see the datasheet) on ...


4

I was about to file a query to Samsung Support. To ask better questions, I re-study the webpage again, and I came across this post having the table below: In the row of "Sub-Pixels Per Inch", we can see that only green pixels are having 432 ppi. Both red and blue pixels are at only 305 ppi. Doing a few maths: $$ Closest\ (inclined)\ distance\ between\ red\...


4

It's been a while, but here is my answer: As you already figured out, this display is configured for 4-wire SPI. But if you need to save some pins you can resolder it to I2C! To do so you need to resolder the Resistor from position R3 to R1. Then you need to short R8 with some solder tin (0 Ohm resistor). R6 and R7 (pullups) are already soldered, nothing to ...


4

Making an "OLED" and then putting it in a package, like you'd do with a Chip LED is commercially nonsensical from most points of view: It loses its microscopic-application-advantage It adds no flexibility advantage It costs several orders of magnitude more The optical efficiency is lower (due to less ideal materials for semiconduction) Decided to edit in ...


4

SSD1306 support display flipping (mirroring) - need only change in initialization: COMSCANDEC to COMSCANINC or vice verasa. COMSCANINC = 0xc0 COMSCANDEC = 0xc8 More info in datasheet and section: 10.1.14 Set COM Output Scan Direction (C0h/C8h)


4

You seem to be using an SSD1306 oled. (worth mentioning!) To get such a display to life, you must initialize it. The sequence I use is static constexpr const uint8_t init_sequence[] = { CMD_MODE, DISPLAYOFF, CMD_MODE, SETDISPLAYCLOCKDIV, 0x80, CMD_MODE, SETMULTIPLEX, 0x3F, CMD_MODE, ...


4

Consider this transparent display: an F18 Head Up Display. This display has a much simpler job than a laptop display - it must display monochrome symbology at a low framerate. It faces many of the same challenges however, as it must deal with unwanted light and object from behind the display obscuring the symbology, reflections from the front of the display ...


3

Individual LEDs can be used as light sensors: they behave like photodiodes. OLEDs are potentially capable of behaving like this as well (they're also semiconductors), but I can't find reports of anyone having tried it. It's probably extremely inefficient. LCDs cannot: they operate by applying a field to twist the crystals, and there's no photosensitivity ...


3

That's because you are using the wrong formula. Have a look here. First let's calculate the screen diagonal resolution (in pixel): $$ d_p = \sqrt{w_p^2 + h_p^2}=\sqrt{1080^2+1920^2}=2202.91 $$ Then PPI can be calculated: $$ PPI = \frac{d_p}{d_i}=\frac{2202.91}{5.1}=431.9\approx432 $$ Where: \$d_p\$ is the diagonal resolution in pixels \$w_p\$ is the ...


3

You can calculate the efficiency by using \$n = 1 - \dfrac{p_{in}}{p_{out}}\$ and get the power \$p_{in}\$ by measuring the current from the batteries times the batteries voltage and the power \$p_{out}\$ by multiplying the current to the LED times the voltage across the LED(s) (at the output of the converter). This assumes the converter has a filter ...


3

Taking a guess in lieu of more information (see my comments above). It does look suspiciously like what is drawn is 1/8th of the screen. The controller says that it operates at 8 bits per pixel (256 monochrome levels). Are you drawing into the screen as if it was a 1 bit per pixel screen instead of 8? As I noted in the comment above, you will not be able to ...


3

They are all comparable, with the tradeoffs being Pins vs Speed. It really boils down to your preference. How many free pins do you have (Can you spare 8 data + 4/5 control pins for parallel data?), are you already using SPI or I2C? The I2C version will limit you to only 2 lcds without using multiple I2C buses or buffers/switches, but only requires 3 data ...


3

As a rule of thumb, the closer your input and output voltages of smps's the more efficient it will be. With a Dickson, that rule is the same as you've got diode (or mosfet) voltage drops to overcome. And you'll need more stages to get to higher voltage with a 1.5V input. With 3V you have less stages and therefore less voltage drops wasting your energy.


3

EDIT 2018: There is a new definitive article about the confirmed visual benefits of 1000 Hz: Blur Busters Law And The Amazing Journey To Future 1000Hz Displays. Older Post Follows: Actually, 1000fps@1000Hz would have some human eye benefit under certain conditions: Michael Abrash of Valve Software: Down the VR rabbit hole: Fixing judder http://blogs....


3

A suggested approach to updating a 1200 x 800 pixel display at 1000 fps, would be to break up the display into a matrix of lower resolution OLED panels, ideally OLEDs with so-called "edge-to-edge active display". For instance, a 2 x 2 matrix of 640 x 480 OLED panels would provide a bit more than the specified resolution. However, these sub- panels selected ...


3

Definitely have the datasheets for both your MCU and LED Display open as you do this. I'm answering this question based on the datasheets for the MCU and LED here. Make sure both the MCU and LED Display are properly configured in hardware / software. Look at section 8.1 in the LED datasheet, specific pins must be driven appropriately to configure the chip ...


3

What reasons might have made this mapping of memory to display a good idea? This layout makes it extremely easy to display 8 lines of text on the display -- an 8-pixel-high character font can be stored as a sequence of 8-bit values to be written to the display. This display mode has the advantage of making it easy to draw text at any horizontal position, ...


3

From my brief read of the datasheet, it looks like this is a graphical (pixel only) display. There is no character set built into it. You can draw your own characters in any direction you like.


3

I2C is properly an open collector (well, today, open drain) bus, which is to say that the active devices only ever drive low, and the pullup resistors are relied on to raise the bus to the supply rail otherwise. So for a starting point, you'd want to be sure that your only I2C pullup resistors connect to a 3.3v rail, and that you have none on the Arduino ...


Only top voted, non community-wiki answers of a minimum length are eligible