Je to jednoduché zabudnúť, avšak Arduino využíva C ++. Typicky, časť C ++ je v knižniciach, ako aj rámec, ako aj mnoho ľudí len tendenciu kódujú svoje hlavné programy s využitím C-Style len využívajúce objekty knižnice, ako napríklad rozšírenia jazyka C-Language. [Fredlllll] nedávno vyrobil knižnicu šablóny dizajnu na urýchlenie Arduino I / O, ako aj on ju zdieľal na github.
Ak ste niekedy urobili niečo hlavné s Arduino, s najväčšou pravdepodobnosťou chápete, že zatiaľ čo Digitalwrite je šikovný, to robí skvelé pracovné práce za scén, aby sa uistil, že PIN je konfigurácia, ako aj to pridáva réžiu na každú výzvu. [Fredlllll] dizajnové šablóny verzie môžu prepnúť kód pin v dvoch cykloch. Môžete si to znížiť, ak vám nevadí obťažovať špecifikáciu iných kolíkov na presne rovnakom porte.
Môžete použiť konštantu, aby ste zapli pin, takto:
Switchon <1> ();
Ak nechcete využiť magické čísla (a to je inteligentné) môžete definovať konštantu:
CONST UINT8_T LEDPIN = 1;
Switchton ();
Pretože s najväčšou pravdepodobnosťou chcú urobiť nejaké elegantné načasovanie, je tu tiež nop dizajn šablóny, ktorá vám umožní oneskoriť nastavený počet cyklov. Tu je nejaký testovací kód z reddit, ktorý produkuje 1,3 MHz štvorcové vlny, napríklad:
const uint8_t mypin = 5;
VOID LOOP () {
CLI (); // vypnúť prerušenia, pretože by zaskrutkovali načasovanie
robiť {
Switchonexclusive (); // 1 cyklus
nop <5> (); // 5 cyklov
prepínačportfpin (); // 1 cyklus
nop <3> (); // 3 cykly
} zatiaľ čo (1) // skok späť do práce je 2 cykly
}
Je zrejmé, že to nie je maximum, a to aj preto, že v slučke je osem oneskorených cyklov.
Nemáte požiadavku, aby ste pochopili veľa informácií o šablónach, aby ste využili túto knižnicu, avšak, ak chcete pochopiť viac, pokryli sme ich v minulosti. Zistili sme, že predtým, že DIGLIGNITEWRIKTUJE Asi päťdesiatkrát pomalšie ako priamy prístupový prístup, ako aj ostatné I / O operácie nie sú oveľa lepšie. Bolo by fascinujúce sa pozrieť na to, ak by sa šablóny mohli urobiť iné operácie oveľa efektívnejšie.