​Development Day 56

A project log for Arduino Enigma Machine Simulator

An Enigma Machine Simulator was created with an Arduino UNO and a Touchscreen LCD. Simulates Enigma I, M3, M4, the Plugboard and Uhr Switch.

Arduino EnigmaArduino Enigma 08/11/2015 at 22:160 Comments

Development Day 56

-updated enigma logo to have two blank lines between letters

-texture is completely erased when opening machine

-created logo background bitmap which erases texture inside logo

-changing reflector shows only wheels applicable to that machine

-when reflector is changed, wheels not applicable to that machine are removed from mechanism (BD,G,8,7,6)-(A,blank)

-no serial printing

-no comments of BUG: type

to do:

-encode characters thru serial

-menu or no menu thru serial??? only settable physically

-display i,m3,m4 on corner?

very close to code complete...


-fixed bug when wheel 8 in leftmost position with B reflector does not get erased when changing to A reflector

-added machine name and year under enigma logo

-added storage of all 13 stecker pairs, uhr is only effective when 10 are used

-changed main gui display order, first wheels, then logo

-changed default printing groups to 5

-when EnigmaData is initialized for the first time, uses loop to store 0 in Pairs instead of strcpy, fixes garbage on stecker display

-changed some ints to bytes on main file

-added elliptical bezels to wheels

-changed DrawOpenContacts to clear wider bezels


-eliminate flicker on stecker printout

-serial encoding


-added serial port options to menu, 0 (no serial operation), V (verbose, educational mode, default), E (encode thru serial)

-modified detection areas and status printout for menus

-added serial variable to enigma data persistent variable

-added knob to close machine on top left corner of mechanism box, can also close through menu

-more realistic rotor bezels, added screws, darker background on letter.

-implemented GUI_UPDATE on DrawWheels

to do:

-implement serial functions

-fix flicker on stecker tape


-rotor rings move when being set or machine working in both open and closed views


-verbose mode implemented, wiring path, stecker and rotors are shown

-when in coding mode, letters sent through serial port are encoded, lower case is converted to upper, all others ignored

-changed baud rate to 9600


-fix flicker on stecker tape

-add code version


-flicker on stecker tape eliminated


-fixed bug where DrawWheels would paint a gray square over letter, added check for GUI_UPDATE

-flat rotor has now 26 contacts

-added 1 more pin to open rotor contacts


-credits/about screen


-fixed bug where machine would encode thru serial outside of the main screen, resulting in screen corruption when open

-wheels can be set thru serial port with ! command, opening the machine mid sequence cancels it



-implemented about box, shows on boot for 4 times, then is only shown from open machine menu.

-added F() function to drawString