Arduino segítő funkciók - 💡 Fix My Ideas

Arduino segítő funkciók

Arduino segítő funkciók


Szerző: Ethan Holmes, 2019

Íme néhány hasznos funkció az Arduino számára.

Villogó LED

Ez a funkció a kívánt villogási sebesség mellett többször is villog egy LED-es lámpát.

void blinkLED (byte targetPin, int numBlinks, int blinkRate) {for (int i = 0; i <numBlinks; i ++) {digitalWrite (targetPin, HIGH); késleltetés (blinkRate); digitalWrite (targetPin, LOW); késleltetés (blinkRate); }}

Egy szám villog

A számítástechnika hajnali korában a dolgok néha eléggé rosszul fordultak elő, hogy az egyetlen módja annak, hogy a felhasználónak hibaüzenetet tudjon adni a fény villogása. A mikrovezérlőkkel való kezelés során ez néha hasznos lehet. A következő funkció villog egy sorozatot, hogy a számot vizuálisan jelezze.

void blinkNumber (char * numString) {int versLength = strlen (numString); késleltetés (200); a (int i = 0; i <versLength; i ++) {int szám = numString [i] -48; ha (szám == 0) {blinkLED (LED_A, 1,20); késleltetés (160); } ha (szám> 0 && <10) villog (LED_A, szám, 200); késleltetés (400); }}

Zümmög egy zümmögőt

Általánosított általánosított funkció a Piezo-hangjelzők használatára anélkül, hogy a matematikán keresztül kellene átgondolni minden egyes hangfrekvenciát. Mindössze annyit kell tennie, hogy megmondja, hogy milyen funkciót szeretne használni, a hallani kívánt frekvenciát és a lejátszás gyakoriságát.

void buzz (int targetPin, hosszú frekvencia, hosszú hosszúság) {long delayValue = 1000000 / frequency / 2; hosszú numCycles = frekvencia * hossz / 1000; (hosszú i = 0; i <numCycles; i ++) {digitalWrite (targetPin, HIGH); delayMicroseconds (delayValue); digitalWrite (targetPin, LOW); delayMicroseconds (delayValue); }}

A szabad RAM ellenőrzése

Az ATmega328 32K programmemóriával rendelkezik, de csak 2K SRAM.A programmemória a kód és a RAM a dinamikus változók. Valójában ez kevesebb, mint 2K RAM, mert az Arduino könyvtárak dinamikus memóriaterületet foglalnak maguknak.

Az Arduino környezet boldogan lehetővé teszi, hogy egy olyan programot állítson össze, amely meghaladja a mikrovezérlő SRAM határértékeit, de a program viselkedése teljesen kiszámíthatatlanná válik, a kód bizarr dolgokat és / vagy összeomlást okoz. Ez a funkció visszaadja az SRAM-ban jelenleg szabad bájtok számát.

int memoryTest () {int byteCounter = 0; byte * byteArray; míg ((byteArray = (byte *) malloc (byteCounter * sizeof (byte)))! = NULL) {byteCounter ++; szabad (ByteArray); } szabad (byteArray); visszatérő byteCounter; }

Nagyobb számok leképezése

Ez a verzió egy térkép a nagyobb pozitív számok kezelésére alkalmas funkció, bár negatívakkal.

hosszú térképBig (nem aláírt hosszú x, aláíratlan hosszú__perc, alá nem írt hosszú in_max, nem aláírt hosszú out_min, nem aláírt hosszú out_max) {visszatérés (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }

Csatlakozás WiFi-hez

Az új Arduino WiFi pajzs nagyon szép tábla. A különböző típusú hálózatok kezelése azonban zavaró lehet. A következő kódrészlet megpróbál csatlakozni egy WPA / WPA2 titkosított WiFi hálózathoz, amelynek SSID-je a ssid változó, és a elhalad változó. Ha azonban nem találja azt a hálózatot, akkor vissza fog térni, és megkeresi a nyílt WiFi hálózatokat.

ha (WiFi.status () == WL_NO_SHIELD) {Serial.println ("WiFi védelem nincs jelen"); while (true); } if (stringFromCharString (ssid)! = "") {míg (állapot! = WL_CONNECTED) {timesWeTriedToConnect ++; Serial.print (F ("Megpróbál csatlakozni az SSID-hez (kísérlet)"); Serial.print (timesWeTriedToConnect); Serial.print (F ("5-ös):")); Serial.println (SSID); status = WiFi.begin (ssid, pass); // Csatlakozás a WPA / WPA2 hálózathoz. késleltetés (2000); ha (timesWeTriedToConnect> = 5) szünet; }} if (állapot! = WL_CONNECTED) {Serial.print ("Nem lehet csatlakozni az ssidhoz"); Serial.print (ssid); Serial.println ("'"); Serial.println ("** Nyitott hálózatok szkennelése **"); byte numSsid = WiFi.scanNetworks (); Serial.print ("rendelkezésre álló hálózatok száma"); Serial.println (numSsid); a (int thisNet = 0; ezNet

Olvasás és írás az EEPROM-ba

Néha hasznos lehet számokat vagy más adatokat tárolni az Arduino EEPROM-ba, hogy megvédje az energiaellátást. A mellékelt EEPROM könyvtár segítségével valóban elég könnyű számot írni az EEPROM-hoz,

void setNumber (unsigned long ctr) {Serial.print ("Beállítási szám EEPROM-ban ="); Serial.println (ctr); EEPROM.write (4, (ctr & 0xFFFFFFFF) >> 24); // írja az MSB EEPROM.write-t (3, (ctr & 0xFFFFFF) >> 16); // írja a 3rdB EEPROM.write (2, (ctr & 0xFFFF) >> 8); // írja a 2ndB EEPROM.write (1, ctr & 0xFF); // írja az LSB-t}

majd a számot elolvassa,

nem aláírt hosszú getNumber () {unsigned long ctr; // szám kezdeti beállítása, ha (EEPROM.read (5)! = 1) {//, ha a számkészlet állapota hamis Serial.println ("Szám inicializálása EEPROM-ban"); EEPROM.write (1,0); // írj LSB nulla EEPROM.write (2,0); // írjon 2ndB nullát EEPROM.write (3,0); // 3rdB nulla EEPROM.write (4,0) írása; // írjunk MSB nullát EEPROM.write (5,1); // számláló készlet állapota igaz} // kapja meg a számot - adja hozzá a bájtokat a 32 bites számhoz ctr = (EEPROM.read (4) << 24) + (EEPROM.read (3) << 16) + (EEPROM. (2) << 8) + (EEPROM.read (1)); Serial.print ("Szám megadása az EEPROM-tól ="); Serial.println (ctr); visszatér ctr; }

Ennek a bejegyzésnek a kódját Rob Faludi és Alasdair Allan szolgáltatták.Itt a MAKE webhelyen engedélyt kap. Ez a bejegyzés 2013. május 13-án volt közzétéve.



Lehet, Hogy Érdekli

Kaliforniai Tudományos Akadémia elhallgat

Kaliforniai Tudományos Akadémia elhallgat


Városi fenntarthatósági kérdések és kérdések Scott Kellogg-al

Városi fenntarthatósági kérdések és kérdések Scott Kellogg-al


Üdvözöljük - a kaland megosztása

Üdvözöljük - a kaland megosztása


Szabadon - Hollywood mártással

Szabadon - Hollywood mártással