Indholdsfortegnelse:
Video: Din Arduinos indbyggede EEPROM: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
I denne artikel vil vi undersøge den interne EEPROM i vores Arduino -tavler. Hvad er en EEPROM, som nogle af jer måske siger? En EEPROM er en elektrisk sletbar programmerbar skrivebeskyttet hukommelse.
Det er en form for ikke-flygtig hukommelse, der kan huske ting med strømmen slukket eller efter nulstilling af Arduino. Skønheden ved denne form for hukommelse er, at vi kan gemme data genereret inden for en skitse på et mere permanent grundlag.
Hvorfor ville du bruge den interne EEPROM? I situationer, hvor data, der er unikke for en situation, har brug for et mere permanent hjem. For eksempel lagring af det unikke serienummer og fremstillingsdato for et kommercielt Arduino-baseret projekt-en funktion af skitsen kan vise serienummeret på en LCD, eller dataene kan læses ved at uploade en 'serviceskitse'. Eller du skal muligvis tælle bestemte hændelser og ikke tillade brugeren at nulstille dem-f.eks. Et kilometertæller eller en cyklustæller.
Trin 1: Hvilken slags data kan gemmes?
Alt, hvad der kan repræsenteres som bytes af data. En byte data består af otte bits data. En bit kan enten være tændt (værdi 1) eller fra (værdi 0) og er perfekte til at repræsentere tal i binær form. Med andre ord kan et binært tal kun bruge nuller og et til at repræsentere en værdi. Således er binær også kendt som base-2 ″, da det kun kan bruge to cifre.
Hvordan kan et binært tal med kun brug af to cifre repræsentere et større tal? Det bruger mange af dem og nuller. Lad os undersøge et binært tal, f.eks. 10101010. Da dette er et basis-2-tal, repræsenterer hvert ciffer 2 til x ved hjælp af x, fra x = 0 og fremefter.
Trin 2:
Se, hvordan hvert ciffer i det binære tal kan repræsentere et base-10-tal. Så det binære tal ovenfor repræsenterer 85 i base-10-værdien 85 er summen af basis-10-værdierne. Et andet eksempel - 11111111 i binær er lig med 255 i base 10.
Trin 3:
Nu bruger hvert ciffer i det binære tal en 'bit' hukommelse, og otte bits laver en byte. På grund af interne begrænsninger af mikrokontrollerne i vores Arduino-kort kan vi kun gemme 8-bit tal (en byte) i EEPROM.
Dette begrænser decimalværdien af tallet til at falde mellem nul og 255. Det er derefter op til dig at beslutte, hvordan dine data kan repræsenteres med dette talinterval. Lad det ikke afskrække dig - tal arrangeret på den rigtige måde kan repræsentere næsten alt! Der er en begrænsning at tage hensyn til - antallet af gange, vi kan læse eller skrive til EEPROM. Ifølge producenten Atmel er EEPROM god til 100.000 læse/skrive cyklusser (se databladet).
Trin 4:
Nu kender vi vores bits og og bytes, hvor mange bytes kan gemmes i vores Arduinos mikrokontroller? Svaret varierer afhængigt af modellen af mikrokontroller. For eksempel:
- Tavler med en Atmel ATmega328, såsom Arduino Uno, Uno SMD, Nano, Lilypad osv. - 1024 bytes (1 kilobyte)
- Tavler med en Atmel ATmega1280 eller 2560, f.eks. Arduino Mega -serien - 4096 bytes (4 kilobytes)
- Tavler med en Atmel ATmega168, såsom den originale Arduino Lilypad, gamle Nano, Diecimila osv. - 512 bytes.
Hvis du er i tvivl, kan du kigge på Arduino hardware -indekset eller spørge din bordleverandør. Hvis du har brug for mere EEPROM -lagerplads, end hvad der er tilgængeligt med din mikrokontroller, kan du overveje at bruge en ekstern I2C EEPROM.
På dette tidspunkt forstår vi nu, hvilken slags data og hvor meget der kan gemmes i vores Arduinos EEPROM. Nu er det tid til at sætte dette i værk. Som diskuteret tidligere er der en begrænset mængde plads til vores data. I de følgende eksempler vil vi bruge et typisk Arduino -kort med ATmega328 med 1024 bytes EEPROM -lager.
Trin 5:
For at bruge EEPROM kræves et bibliotek, så brug følgende bibliotek i dine skitser:
#include "EEPROM.h"
Resten er meget enkel. For at gemme et stykke data bruger vi følgende funktion:
EEPROM.write (a, b);
Parameteren a er positionen i EEPROM til lagring af heltalet (0 ~ 255) for data b. I dette eksempel har vi 1024 bytes hukommelseslagring, så værdien af a er mellem 0 og 1023. For at hente et stykke data er lige så enkelt, brug:
z = EEPROM.read (a);
Hvor z er et heltal for at gemme dataene fra EEPROM -positionen a. Nu for at se et eksempel.
Trin 6:
Denne skitse vil oprette tilfældige tal mellem 0 og 255, gemme dem i EEPROM og derefter hente og vise dem på den serielle skærm. Variablen EEsize er den øvre grænse for din EEPROM -størrelse, så (f.eks.) Ville dette være 1024 for en Arduino Uno eller 4096 for en Mega.
// Arduino intern EEPROM -demonstration
#omfatte
int zz; int EEsize = 1024; // størrelse i bytes af dit tavles EEPROM
ugyldig opsætning ()
{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Skrivning af tilfældige tal …"); for (int i = 0; i <EEsize; i ++) {zz = random (255); EEPROM.write (i, zz); } Serial.println (); for (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("EEPROM -position:"); Serial.print (a); Serial.print ("indeholder"); Serial.println (zz); forsinkelse (25); }}
Outputtet fra den serielle skærm vises, som vist på billedet.
Så her har du det, en anden nyttig måde at gemme data med vores Arduino -systemer. Selvom det ikke er den mest spændende vejledning, er det bestemt en nyttig.
Dette indlæg blev bragt til dig af pmdway.com - alt for producenter og elektronikentusiaster, med gratis levering over hele verden.
Anbefalede:
Industriel HMI og Arduinos i MODBUS RTU: 4 trin
Industrial HMI og Arduinos i MODBUS RTU: I denne instruktive vil jeg beskrive et eksempel på kommunikation mellem en industriel HMI (COOLMAY MT6070H, 150EUROS), en Arduino CLONE DIY (10EUROS) og en Arduino UNO (10EUROS). Netværket vil køre under et særligt og robust og industrielt proto
Steam Punk din UPS for at få timers oppetid til din Wi-Fi-router: 4 trin (med billeder)
Steam Punk din UPS for at få timers oppetid til din Wi-Fi-router: Der er noget fundamentalt ubehageligt ved at få din UPS til at konvertere sin 12V DC-batteristrøm til 220V vekselstrøm, så transformerne, der kører din router og fiber ONT, kan konvertere den tilbage til 12V DC! Du er også oppe imod [typisk
Lasertransmission med Arduinos: 4 trin
Lasertransmission med Arduinos: Dette projekt var for BT Young-videnskabsmanden i 2019. Jeg havde ansvaret for "Demonstrationsmodellen". Demonstrationen var to arduino-kontrollerede lasere, der blinker for at sende et signal til en anden arduino et stykke væk. Det blev testet for at fungere
Sådan får du din musik tilbage fra din iPod .. GRATIS !: 7 trin
Sådan får du din musik tilbage fra din iPod .. GRATIS !: Grundlæggende lader Ipods dig ikke genimportere musikken fra den, de lader dig kun slette den. For eksempel, hvis du vil placere dine yndlingssange på din Ipod, men så ved et uheld slette dem alle fra din computer. Så du sad der i en dårlig moo
4 -vejs trafiklys system ved hjælp af 5 Arduinos og 5 NRF24L01 trådløse moduler: 7 trin (med billeder)
4 -vejs trafiklyssystem ved hjælp af 5 Arduinos og 5 NRF24L01 trådløse moduler: For lidt siden lavede jeg en instruerbar detalje med et par lyskryds på et brødbræt. Jeg lavede også en anden instruerbar, der viser de grundlæggende rammer for brug af et trådløst NRF24L01 modul. Dette fik mig til at tænke! Der er ret mange