Skip to content

An experimental Archive of Our Own fanfiction renderer for the Arduino UNO microcontroller.

License

Notifications You must be signed in to change notification settings

phthallo/arduinooo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

arduinooo - An Arduino of Our Own


Very experimental, very jank transformative fanwork viewer (sourced from the Archive of Our Own) using the Arduino UNO and a 0.96" 128x64 graphical SPI SSD1306 OLED Display. More of a proof-of-concept than anything usable :)

What it does

Takes a single work ID, then fetches the work from AO3 and displays its metadata, the author's summary/notes and the work itself on the OLED screen.

The content of the fanfiction has been truncated into sections due to some technical constraints 1 - meaning it'll only scroll one section at a time. Pressing the switch at any point will load the next section.

Basically, it's "Can it run Doom?" but for terminally online teenagers.

arduinooo-preview-v3.mp4

The answer is yes, it can!

Setup

For this project, I used an Arduino UNO microcontroller set which was graciously provided for free by the University of South Australia. It makes use of the following components:

Component Quantity
Arduino UNO 1
SPI OLED Screen 1
Switch 1
Male-male connecting wires 8
Breadboard 1

image

Using Processing in conjunction with the standard Arduino libraries allows internet access without the need for a Wi-Fi shield. Since Processing has Java support, AO3 content can be obtained using Jsoup (a Java library for webscraping) in Processing (getFic.pde). This is then sent to the Arduino and its components, using the Serial library. Likewise, information from the Arduino (in this case, registering the switch being pressed) can be read in Processing and used to trigger another event (loading the next section of content).

This requires the Arduino program (output.ino) to be uploaded to the Arduino first, then the Processing program to be run when the Arduino IDE is closed (to avoid conflicts with the port).

Roadmap

  • Back button/switch to navigate backwards
  • Option to disable scrolling

Known Issues

  • Jsoup only retrieves the first chapter of content
  • getFic doesn't limit button presses to the amount of sections returned; will raise IndexOutofBoundsException if button presses > sections.

Notes

I've never used Processing (or Java, which it is based on) before this. I've used C++ maybe once before (for another Arduino project), so everything is likely to be very unoptimised.

Limitations

There is no support for custom text formatting (bold, italics, centre-align etc), or for images/other non-text content embedded in the fic.

Footnotes

  1. The Adafruit SSD1306 library doesn't officially have support for vertical scrolling, but it does have support for horizontal and diagonal ones. My workaround is liable to errors, since it draws text in a negative region to imitate the scrolling effect.

About

An experimental Archive of Our Own fanfiction renderer for the Arduino UNO microcontroller.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published