Stap 3: opmerkingen
Deze schets ziet u hoe u EEPROM slijtage herverdeling, een kleine integer waarde selectie opslaat in EEPROM, en instellen van een variabele die vermag span resets en macht ups.
Druk op de knop gekoppeld aan pin 12 is het maken van een keuze in een menu, gebruikt voor het bepalen van het gewenste gedrag van andere functies of onderdelen in de tekening. De geselecteerde waarde kan worden gebruikt om een geschikte LED licht of weergeven van passende tekst die aangeeft van de selectie gemaakt. Dan kan de rest van de schets doen wat die selectie verlangt.
De selectie wordt opgeslagen in EEPROM met behulp van een algoritme slijtage-herverdeling dus het zal niet een heleboel slijtage op elk één bit zetten. Telkens wanneer die een selectie wordt gewijzigd met knop, wordt alleen een beetje van de EEPROM gewijzigd. 1.6 miljoen knooppersen kunnen worden opgenomen in de 4 bytes van EEPROM geheugen gebruikt voor het opslaan van de selectiestatus vóór de nominale 100.000 schrijft voor elke één cel wordt overschreden.
Aangezien het algoritme voor het opslaan van de huidige selectie waarde houdt clearing stukjes totdat de huidige selectie is goed vertegenwoordigd, clearing meestal alleen een beetje, het maakt niet uit als de EEPROM is geïnitialiseerd aan eventuele waarden in het bijzonder. Het zal automatisch aanpassen en opnieuw initialiseren van de EEPROM bytes als nodig.
Deze sketch gebruikt EEPROMex.h bibliotheek voor lezing/bijstelling van de EEPROM. EEPROM.setMaxAllowedWrites is een functie van EEPROMex.h dat is handig tijdens het ontwikkelen en debuggen, om te voorkomen dat je per ongeluk een reeks run-away schrijft codering en verslijten je Arduino EEPROM-geheugen binnen een paar minuten. Voor productiedoeleinden zal u wilt uitschakelen van de limiet. Zie EEPROMex.h documentatie voor meer informatie. De link te krijgen van de EEPROMex.h bibliotheek is:
http://Playground.Arduino.CC/code/EEPROMex
En in dit artikel wordt beschreven hoe bibliotheken te installeren:
https://www.Arduino.CC/en/Guide/libraries
Ik ben ook tonen in deze demo schets hoe dingen te doen meerdere in de lus zonder blokkering en zonder vertragingen. Er zijn tal van artikelen op het web en in het arduino.cc forum voor meerdere dingen tegelijk te doen en zonder vertragingen in een lus.
ATmega328P of ATmega32U4-gebaseerde Arduino, zoals Uno, Pro Mini, Leonardo, Pro Micro, enz., moet zitten kundig gebruik van de schets en sla aan het ingebouwde EEPROM. Aanpassen voor de Pro Micro, die geen pennen 11, 12 en 13 haalde op de pinnen van de kop, de schets voor het gebruik van andere pinnen. PIN 17 op de Pro Micro is de RXLED en kan worden gebruikt als een ingebouwde LED, vervanging voor pin 13. De RXLED op de Pro Micro brandt als de uitgang-pins gaat laag, terwijl de pin 13 geleid op de UNO brandt als de uitgang-pins gaat hoog. Dus, om te zien van de LED-gloed dim op de Pro Micro u zou moeten spiegelen de pulsbreedte zodat de pin hoog voor langere duur is dan laag is. Om te doen die u kunnen wijzigen in de lezing van 17, pin op 2 plaatsen in de schets,
if (digitalRead(17))
Aan
if (!digitalRead(17))
Verder lezen: