Arduino og all-andre mikrokontrollerbaserte enheter bruker minne for å lagre data. Minne er en viktig del av ethvert datasystem, spesielt når det gjelder innebygde systemer og design. Tildeling av Arduino -minne på en dynamisk måte forbedrer effektiviteten til Arduino -tavler. Minne kan lagre inngang og utganger som kommer fra sensorer og andre enheter festet til Arduino. Her vil vi diskutere hvor mye kode Arduino Uno kan lagre i minnet.
Arduino Uno Memory Allocation
Mikrokontrollere som brukes i Arduino -tavler er spesifikke for innebygde systemapplikasjoner. I motsetning til en konvensjonell datamaskin som vanligvis brukes i våre hjem og kontorer, har mikrokontrollere veldefinerte oppgaver for det de designet for. Mikrokontrollere mangler flerlags hurtigbufret minne og diskbasert virtuelt minne som brukt i hjemmet CPU. Normalt mens programmering av Arduino UNO, anses ikke minnet mesteparten av tiden før ens kode er fast på grunn av lave hukommelsesproblemer. For å få en løsning må vi forstå problemet først.
Arduino -brett består hovedsakelig av tre typer minne.
SRAM er et flyktig minne hvis data vil gå tapt når Arduino er slått av mens Flash og Eeprom er ikke-flyktig; Informasjonen deres vedvarer selv om vi fjerner Arduino -kraft.
Her er en kort sammenligning av forskjellige Arduino -tavler mikrokontrollere Minnetildeling:
Arduino | Prosessor | Blits | Sram | Eeprom |
Uno, UNO Ethernet, Pro Mini, Nano 3.0 | ATMEGA328 | 32kb | 2kb | 1KB |
Leonardo, mikro | ATMEGA32U4 | 32kb | 2.5kb | 1KB |
Mega | ATMEGA256 | 256KB | 8kb | 4KB |
Hvor mye kode arduino uno kan holde
Hvor mye kode arduino uno kan lagre? Svar på dette spørsmålet er, alt avhenger av hvordan vi programmerer Arduino Uno. Arduino UNO har tre typer minne som diskutert tidligere, hvis vi overskrider en av disse, vil ikke vår kode sammenstille. Arduino Uno har 32kb av Flashminne som er tilstrekkelig til å skrive tusenvis av kodelinjer.
Normalt mens du skriver Arduino -kode Sram er det mest verdifulle minnet på Arduino -brett. Arduino Uno har bare 2 kb sram som tilsvarer 2048 byte. Det er ikke for mye å programmere Arduino UNO for omfattende brukergrensesnitt og grafiske applikasjoner. Arduino er kraftig nok til å kontrollere motorer, sensorer og drivere, men ikke nok til å håndtere en hel løpende menneskelig robot.
For å sjekke hvor mye plass er Arduino -skisse som bruker, kjør et program og se etter minnebruk i produksjon vindu.
For eksempel etter å ha sammenstilt en enkel LED blink program, vi fikk utdataene som vist nedenfor. Her 2% av Blits Minne lik 924 byte av 32256 byte (32kb) brukes av Blink -programmet skrevet i Arduino IDE. Mens 9 byte SRAM ut av totalt 2048 byte (2KB) brukes til å lage variabler brukt i blink -LED -skisse.
Når vi kompilerer Arduino -programmet, vil IDE fortelle hvor stort problemet er. Ved hjelp av noen optimaliseringsteknikker kan vi øke Arduino -programmets kapasitet. Under bildet viser et eksempel på SRAM og flashminne som overstiger mikrokontrollerens dategrenser.
Hvordan optimalisere Arduino -minnet
Merk at det ikke er mye Arduino Uno -minne tilgjengelig der, for eksempel SRAM er bare 2kb. Det kan enkelt brukes opp ved å bruke noen ubrukelige strenger i en skisse. For eksempel:
Char Message [] = "Linuxhint.com ";
Erklæring som disse kan spise opp masse SRAM. Her “Linuxhint.com ” Setter 14 byte i SRAM hver av disse røye tar 1 byte, pluss 1 for Terminator '\ 0'.
Hvordan optimalisere Arduino -kode for bedre bruk av minne
Optimalisering av Arduino -kode er viktig for komplekse prosjekter, så her er få måter å optimalisere Arduino -skisse.
Fjern død kode
Hvis Arduino -kode ringer til flere biblioteker, kan det være en sjanse for at en del av koden ikke er i bruk. Fjern alle ubrukte biblioteker, funksjoner og variabler. Hvis man ikke er sikker på dem, kan du kommentere det. Hvis programmet fremdeles sammenstiller og fungerer bra, brukes ikke den delen av koden av Arduino.
Biblioteker bruker mye SRAM, som å bruke et SD-kortbibliotek kan ta opptil 1KB SRAM. Unngå unødvendig bibliotekbruk mens du skriver skisser.
Lagre konstant streng i flashminne
Statiske strenger kan være en av hovedårsakene til Arduino Memory Wastes. For eksempel:
Serie.Println ("Linuxhint.com ");
Statiske strenger som disse kopieres automatisk i SRAM fra flashminne. For å unngå dette, bruk F () makro funksjon. Dette vil forhindre SRAM i å ringe det direkte og sparer minne. F () Funksjon kan brukes som følger:
Serie.Println (F ("Linuxhint.com "));
Ved hjelp av f () makroen i strengen ovenfor har vi lagret 14 byte av SRAM.
Riktig datatype
Mens du bruker store matriser og oppslagstabeller, bruk datatypen etter behov. Bruk den minste datatypen som enkelt kan passe data. For eksempel, int vil ta to byte mens byte vil bare ta en. Unngå på samme måte å bruke float når du har et helt antall, prøv å bruke int. Dette vil spare ekstra byte i Arduino -skisse som vil gi total ekstra plass til å skrive skisser. Ulike typer datatyper og minne de okkuperer i Arduino er vist i følgende tabell:
Data-type | Størrelse (byte) | Verdier |
Tomrom | 0 | null |
bool/boolsk | 1 | True/False |
Røye | 1 | -128 til +127 |
usignert røye | 1 | 0 til 255 |
Byte | 1 | 0 til 255 |
Int | 2 | -32.768 til 32.767 |
usignert int | 2 | 0 til 65.535 |
Ord | 2 | 0 til 65.535 |
Lang | 4 | -2.147.483.648 til 2.147.483.647 |
usignert lenge | 4 | 0 til 4.294.967.295 |
Flyte | 4 | -3.4028235e+38 til 3.4028235e+38 |
Dobbelt | 4 | 3.4028235e+38 til 3.4028235e+38 |
Streng | - | Karakterer |
Konklusjon
I denne guiden har vi dekket hvor mye kode Arduino Uno kan holde, videre diskuterte vi forskjellige parametere som fører til lave minneproblemer. Dynamisk minnetildeling ved bruk av Arduino -funksjoner kan være veldig nyttig i prosjektbygging. Bruke teknikker som er nevnt, kan optimalisere bruk av Arduino Memory.