Barnens spel till Arduino Enigma maskin (7 / 10 steg)
Steg 7: Den kod: översikten
Kött av koden är ganska enkel. Jag har en rad för varje rotor, sedan jag behövde bara hålla reda på vilka rotorn var i vilken slot, och vilken hållning rotorn var närvarande i. Förmodligen är det enklaste sättet att räkna ut vad koden måste göra att gå igenom exempel på denna gåta pappersmaskin. http://mckoss.com/Crypto/Paper%20Enigma.pdf . I grund och botten måste vi ta in index, titta på vad brevet är på den platsen och sedan räkna ut vad kortplats som bör mappas till (det är i princip där brevet som hamnar i en char utbud av alfabetet och förskjutningen av rotorn).Koden måste också hantera rotorerna flyttar. Till höger de flesta rotorn flyttar en plats varje gång en knapp trycks. Mellersta rotorn flyttar när rätt de flesta rotor träffar ett visst värde (så det blir 1/26 av de gånger rätta vänder). Vänstra rotorn blir 1/26 gånger center rotorn vänder. För att göra detta jag har en int som håller reda på den aktuella positionen av rotoren och jag lägga till en till den när de behöver för att vända. När de får till 26 in jag dem till 0 (det gick hela vägen runt rotorn så vi börjar igen).
Byta ut rotorer jag helt enkelt strncpy rotor konstanterna att rotorn i för position.
Du ska märker jag använde en hel del exempelkod i min kod för att göra saker som att spela toner, få knappsatsen värden och ta itu med I2C LCD. Jag är ett stort fan av bibliotek och exempelkod.