Pärast edasist kaevamist näib see olevat pärit Mikal Harti Flash-teegist.
Selle teegi väljatöötamise põhjus on järgmine:
Salvestamine staatilised programmiandmed flash / PROGMEM-is on keeruline osa Arrduino programmeerimisest. Väärtusliku RAM-i salvestamiseks peab algaja kasutaja, kellel on juba harjumatu C ++ süntaks, seedima selliseid hirmutavaid mõisteid nagu asprog_char, PSTR (), PROGMEM, pgm_read_word () jne. Isegi kogenud kasutajad on komistanud kehtiva PROGMEM-i andmete otsimiseks . Lisage sellele rakenduses paar ilmset viga ja on selge, et PROGMEM on keeruline segadus.
Olen kirjutanud uue teegi Flash, mis tõmbab suurema osa sellest keerukusest ära. See pakub uusi stringi-, massiivi-, tabeli- ja stringimassiivitüüpe, mis muudavad ROM-põhised andmekogumid sama hõlpsasti kasutatavaks kui „tavalised” tüübid. Igaüks alistab operaatori C ++ [], nii et üksikute elementide väljavõtmiseks kasutatakse tuttavat massiivi juurdepääsu süntaksit:
Täpsemalt, need on makrod ja lihtne abiklass, et hõlbustada massiivide ja tabelite loomist väärtused programmi mälus.
Kaks makrot deklareeritakse nii:
// Näide: FLASH_ARRAY (ujuk, temperatuurid, 98.1, 98.5, 99.1, 102.1); # define FLASH_ARRAY (tüüp, nimi, väärtused ...) \ staatiline const tüübi nimi ## _ flash [] PROGMEM = {väärtused}; \ _FLASH_ARRAY<type> nimi (nimi ## _ flash, sizeof (name ## _ flash) / sizeof (type)); // Näide: FLASH_TABLE (uint8_t, fondid, 7, {ON, OFF, ON, ON, OFF, ON, OFF} , {OFF, ON, OFF, ON, OFF, ON, OFF}); # defineeri FLASH_TABLE (tüüp, nimi, veerud, väärtused ...) \ staatiline const tüüpi nimi ## _ flash [] [cols] PROGMEM = {väärtused }; \ _FLASH_TABLE<type> name ((const PROGMEM type *) name ## _ flash, sizeof (name ## _ flash) / sizeof (name ## _ flash [0]), cols);
abistaja funktsioonid hõlmavad suurust ja alistavad operaatori [], nii et neile oleks hõlpsasti juurdepääs.
FLASH_ARRAY [0]
Ma ei nõustu zmo-ga - see on midagi enamat kui boilerplate. Programmi PROGMEM ala tekitab Arduino kasutajatelt palju küsimusi ja massiivide loomisel programmis PROGMEM on väga lihtne valesti teha.