infiniteupdate — Arduino Uno simulation

An interactive Arduino Uno circuit simulation you can run free in your browser on Velxio, by whalemedianz.

Components

Sketch code

// ============================================================
// INFINITE WINDOWS UPDATE / UEFI SIMULATOR
// Velxio ILI9341 SPI Framework
// ============================================================

#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <SPI.h>

// ============================================================
// TFT
// ============================================================

#define TFT_CS  10
#define TFT_DC   9
#define TFT_RST  8
#define TFT_LED  7

// ============================================================
// PC ACTIVITY LEDs
// ============================================================
//
// D0 = Power LED
// D1 = HDD / disk activity LED
//
// NOTE:
// D0/D1 are the UNO hardware UART pins.
// This is fine for the online simulator, but these should
// eventually be moved to other pins for physical hardware.
// ============================================================

#define LED_PWR 0
#define LED_HDD 1

Adafruit_ILI9341 tft(TFT_CS, TFT_DC, TFT_RST);

// ============================================================
// DISPLAY
// ============================================================

#define SCREEN_W 320
#define SCREEN_H 240

#define BLACK      0x0000
#define WHITE      0xFFFF
#define GREY       0x7BEF
#define DARK_GREY  0x4208
#define BIOS_RED   0xF800
#define UEFI_CYAN  0x07FF
#define WIN_BLUE   0x03B4
#define BSOD_BLUE  0x05BF

// ============================================================
// MONITOR OSD
// ============================================================

#define OSD_X 6
#define OSD_Y 6
#define OSD_W 108
#define OSD_H 48

#define MONITOR_INPUT "HDMI 1"
#define MONITOR_RES   "1920 x 1080"
#define MONITOR_RATE  "60 Hz"

// ============================================================
// FIRMWARE
// ============================================================

#define FIRMWARE_UPDATE_CHANCE 25

#define FIRMWARE_CURRENT "3.7.21"
#define FIRMWARE_TARGET  "3.7.22"

// ============================================================
// UPDATE STATE
// ============================================================

int completedCycles = 0;
int restartAfterCycles = 5;
int updatesThisCycle = 3;

// ============================================================
// HDD ACTIVITY STATE
// ============================================================

unsigned long hddPulseUntil = 0;
bool hddState = false;

// ============================================================
// PROTOTYPES
// ============================================================

void drawText(int x, int y, const char *text, uint8_t size, uint16_t colour);
bool touchPressed(int &x, int &y);

void drawOSDFrame();
void monitorOSDSignal();
void monitorOSDNoSignal();
void clearMonitorOSD();

void drawBoardLogo(int cx, int cy, uint16_t colour);

void firmwareHalt();
void firmwareUpdate();
void firmwareUpdateFailed();

void uefiBootScreen();
void bootUnderscore();
void windowsLoader();
void completeBootSequence();

void drawSpinner(int cx,

More projects by whalemedianz