s menovitými hodnotami od 10 Ohm do 1 MOhm);

  • 2 odpory 4,7 kOhm (z rovnakej sady);
  • spochni sipky (napr. os je dobra);
  • počítač s Arduino IDE.
  • 1 Popis I2C rozhranie

    Sériový komunikačný protokol IIC (tiež nazývaný I2C - Inter-Integrated Circuits) využíva na prenos údajov dve obojsmerné komunikačné linky, ktoré sa nazývajú sériová dátová zbernica. SDA (sériové údaje) tá pneumatika je poklepaná SCL (sériové hodiny). Existujú aj dve línie pre život. Zbernice SDA a SCL sú cez odpory pritiahnuté k životnej zbernici.

    Chcel by som mať jeden káblové zariadenie (Master) Tým sa spustí prenos údajov a vygenerujú sa synchronizačné signály. Opatrenia tiež správa zariadenia (Slave), ktoré prenášajú údaje vedúcemu. Vzhľadu zariadenia je priradená jedinečná adresa, po ktorej je zariadenie presmerované na novú. Adresy zariadenia sú uvedené v pase (údajovom liste). Na jednu I2C zbernicu je možné pripojiť až 127 zariadení v závislosti od počtu vodičov. Roboty je potom možné pripojiť k zbernici. Vaughn podporuje najhorúcejšie pripojenie.

    Poďme sa rýchlo pozrieť na diagram výmeny protokolu I2C. Možností je viacero, pozrime sa na jednu zo širších možností. Zrýchlite pomocou logického analyzátora, pripojeného k zberniciam SCL a SDA.

    Master iniciuje výmenu. Za týmto účelom VIN začne generovať hodinové impulzy a posiela ich po linke SCL v balení po 9 kusoch. Súčasne sa zobrazí dátový riadok SDA Adresy doplním, preto je potrebné inštalovať linky, ktoré sú taktované prvými 7 hodinovými impulzmi (z rozsahu adries: 2 7 = 128 mínus nula adries). Útočná bitka osady - tse kód transakcie(čítať alebo písať) a ešte jeden kúsok - potvrdzovací bit(ACK), aby ste potvrdili, že zariadenie prijalo požiadavku. Ak potvrdenie nedostane, výmena sa ukončí. Alebo sa majster bude naďalej nútiť pýtať sa znova.

    To je znázornené nižšie. V prvej fáze je napríklad potrebné ovládať zariadenie z pneumatiky. Je vidieť, že master sa pokúša nadviazať spojenie zo zariadenia s adresou 0x27, ale neodmieta potvrdenie (NAK). Výmena sa skončí.


    Teraz sa pripojíme k I2C zbernici zariadení a zopakujeme operáciu. Situácia sa zmenila. Prvý paket s adresou dostal podľa zadania potvrdenie (ACK). Výmena pokračovala. Informácie sa tiež prenášajú pomocou 9-bitových správ, ale teraz to trvá 8 bitov hold a 1 bit - potvrdzovací bit otrimannya vykonávame dáta bajtov kože. Ak sa kedykoľvek prerušia spojenia a nepríde potvrdenie, master pripne prenos.

    2 Implementácia I2C v Arduine

    Arduino vikorist pre roboty s rozhraním I2C, dva porty. Napríklad analógový port Arduino UNO a Arduino Nano A4 podporuje SDA, analógový port A5 podporuje SCL.


    Pre ostatné modely dosiek je typ pripojenia nasledujúci:

    3 Knižnica "Wire" pre roboty z IIC

    Na uľahčenie výmeny dát so zariadeniami cez zbernicu I2C bola pre Arduino napísaná štandardná knižnica Drôt. Má nasledujúce funkcie:

    FunkciaPridelenie
    začať (adresa) Inicializácia knižnice a pripojenie na zbernicu I2C; Ak adresa nie je uvedená, zariadenie musí akceptovať poskytovateľ; používa sa 7-bitové adresovanie;
    requestFrom() Vikorist používa káblové zariadenie na poskytovanie veľkého počtu bajtov z údajov;
    začaťPrenos (adresa) začiatok prenosu dát do určeného zariadenia za adresou skladby;
    endTransmission() implementácia prenosu údajov do podriadeného zariadenia;
    písať () zaznamenanie údajov uvedených v žiadosti;
    k dispozícii() otáča počet bajtov informácií dostupných ako vstup;
    čítať() čítanie bajtu prenášaného z mastera na master alebo z master do slave;
    onReceive() označuje funkciu, ktorá volá buta, keď vodič zariadenia odmietne prenos z hlavného zariadenia;
    NA ZNAMENIE() Označuje funkciu, ktorá sa volá, keď káblové zariadenie odmietne prenos z podriadeného zariadenia.

    4 Nainštalujem pripojenia I2C na Arduino

    Pozrime sa, ako funguje zbernica I2C s Arduinom.

    Okamžite zostavme diagram, ako malý. Na základe jasu LED je k dispozícii 64-polohový digitálny potenciometer AD5171 (Div. Technical Description), ktorý je pripojený na zbernicu I2C. Adresy, pre ktoré sa obrátime na potenciometer, sú 0x2c (44 pre desiaty systém).


    5 Ovládanie zariadenia cez zbernicu IIC

    Pozrime sa na schémy výmeny informácií s digitálnym potenciometrom AD5171, ktoré sú uvedené v technickom popise:


    Kliknutím sem zobrazíte schému zaznamenávania údajov v registri RDAC. Tento register slúži na obsluhu podpery potenciometra.

    Extrahované z knižnice "Wire": Súbor Zrazki Wire digital_potenciometer. Mám záujem o puzzle Arduino.

    #include // Zahŕňa bajt knižnice "Wire" val = 0; // hodnoty prenesené do potenciometra void setup() ( Wire.begin(); // sa pripája na zbernicu I2C ako master } void loop() ( Wire.beginTransmission(44); // začne komunikáciu zo zariadenia s I2C adresou "44" (0x2C) Wire.write(byte(0x00)); // vydá inštrukciu na zápis do registra RDAC Wire.write(val); // nastavenie polohy 64-polohového potenciometra Wire.endTransmission(); // kompletný prenos I2C val++; // zvýšenie hodnoty o 1 if (val == 63) ( // po dosiahnutí maxima potenciometra val = 0; // reset val ) delay(500); }

    Po zapnutí uvidíte, ako sa jas LED cyklicky zvyšuje a potom zhasne. V tomto prípade je potenciometer pripojený k prídavnému Arduinu cez zbernicu I2C.

    Dostal som zásielku z Číny obsahujúcu mikroobvod Atmel EEPROM. Chcel by som sa pripojiť k Arduinu. Vôbec však nechce zničiť hotovú knižnicu, ale začať stavať sám seba. Tento článok je krátky a únavný a možno ho rozdeliť do troch častí:

    • Teória rozhrania I2C.
    • EEPROM, popisy mojich mikroobvodov (AT24C256) a zapojenia.
    • Písanie knižnice pred prácou spamäti.

    Časť prvej, I2C a knižnice „Wire“.

    Protokol sekvenčnej výmeny údajov IIC(aj tituly I2C- Inter-Integrated Circuits, inter-mikrocircuit connection). Bola vyvinutá spoločnosťou Philips Semiconductors začiatkom osemdesiatych rokov minulého storočia ako jednoduchá 8-bitová interná zbernica pre elektronický systém, ktorý ju riadi. Ako teda právo na vikoristannya yogo stojí centy Atmel pharma s názvom yogo TWI, Ale zmysel, ktorý sa mení.

    Ako to funguje?

    Na prenos sa používajú dve obojsmerné prenosové linky. S.D.A.(Serial Data) sériová dátová zbernica SCL(Sériové hodiny) Časovanie autobusu. Dve zbernice sú vytiahnuté odpormi k zbernici pozitívneho života. Prenos/príjem signálov funguje na linke 0, jednoduchá sa inštaluje za rám pull-up odporov.

    Chceli by ste jedno káblové zariadenie ( Majster), ktorý iniciuje prenos dát a generuje synchronizačné a riadiace signály zariadenia ( Otrok), ktoré prenášajú údaje vedúcemu. Vzhľadu zariadenia je priradená jedinečná adresa, po ktorej je zariadenie presmerované na novú. Ukázalo sa, že Vodca je náš mikrokontrolér a Vodca je naša pamäť. Drôtové zariadenie začne tlačiť na pneumatiku SCL na nulu so speváckou čistotou, a pneumatika S.D.A. stlačte alebo uvoľnite niekoľko taktov do piesne, čím prenesiete Single alebo Nulik. Prenos dát začína signálom ŠTART, následne sa prenesie 8 dátových bitov a odošle sa 9. bit Podriadené zariadenie potvrdí príjem bajtu stlačením zbernice. S.D.A. do mínusu . Prenos sa ukončí signálom STOP .

    Knižnica "Wire".

    Na uľahčenie výmeny dát so zariadeniami cez zbernicu I2C bola pre Arduino napísaná štandardná knižnica Drôt jaka Tiež súčasťou súpravy IDE. Má tieto hlavné funkcie:

    Wire.begin(Adresa)Jedným kliknutím sa inicializuje a pripojí sa k zbernici ako hlavné alebo hlavné zariadenie. Adresa žiadnych úloh je pripojená ako hlavné zariadenie.

    Wire.beginPrenos(adresa) spustí prenos do I2C zariadení so zadanou adresou.

    Wire.endTransmission() sa týka prenosu údajov do led. Funkcia otáča bajtové hodnoty:

    • 0 - úspech.
    • 1 údaj je príliš dlhý na zaplnenie vyrovnávacej pamäte prenosu.
    • 2 — NACK bolo prijaté v hodinu prenosu adresy.
    • 3 - NACK prijaté za hodinu prenosu dát.
    • 4 - iné výhody.

    Wire.write() Nahrávané údaje zo zariadenia odoslané do zariadenia sa odošlú do káblového zariadenia alebo sa vložia do bajtov na prenos z hlavného zariadenia do zariadenia. V skutočnosti zapisuje údaje do vyrovnávacej pamäte. Veľkosť vyrovnávacej pamäte 32 bajtov a (mínus 2 bajty na adresu, v skutočnosti 30 bajtov) a funkcia prenesie vyrovnávaciu pamäť Wire.endTransmission().

    • Wire.write(value)- hodnota: prenosová hodnota, jeden bajt.
    • Wire.write(string)- reťazec: poradie prenosu, poradie bajtov.
    • Wire.write(dáta, dĺžka)- Údaje: pole dát na prenos, bajty. dĺžka: počet bajtov na prenos.

    Wire.read()Číta bajt, čo je počet prenosov z podriadeného zariadenia do nadradeného zariadenia a všetkých prenosov z káblového zariadenia do drôtu. To znamená, že bajt sa otáča: prijatý bajt.

    Toto sú hlavné funkcie knižnice a na ceste sa pozrieme na ďalšie))

    Časť priateľa, EEPROM.

    EEPROM Elektricky vymazateľná programovateľná pamäť len na čítanie) - elektricky vymaže PZP (EEPROM), ktorá je preprogramovaná, jeden z typov energeticky nezávislej pamäte (ako PROM a EPROM). Pamäť tohto typu môže byť vymazaná a zabudnutá údajmi až miliónkrát.

    Bol mi zaslaný hotový modul EEPROM s mikroobvodom AT24C256 od spoločnosti Atmel s objemom 32 kbajtov. Aby sme tento zázrak spoznali, máme šancu študovať dátový hárok tak veľmi nudné a anglické. Takže vidím hotový výsledok môjho trápenia.

    Charakteristika:

    • Nízke napätie a štandardná životnosť. VCC = 1,7 V až 5,5 V.
    • 400kHz (1,7V) a 1MHz (2,5V, 2,7V, 5,0V) súčet synchronizačnej frekvencie.
    • Vitalita: 1 000 000 nahrávacích cyklov.
    • Interné organizácie: 32 768 strán x 8 bitov.

    visnovki:

    • W.P.- Chráňte záznam. Ak vytvoríte spojenie s GND, môžete zaznamenať údaje na hádanku.
    • A0…A2- Vyžiadajte si adresu v prílohe.
    • Vcc- Jedlo plus.
    • GND- Jedlo mínus.
    Adresy pamäte:

    Tri nohy sú nastavené pomocou A0..A2. Ak je noha stlačená na Gnd, potom je hodnota bitu 0, ak do Vcc, potom 1. Mikroobvod je vikoristický osembitová adresa, zvyšný bit indikuje voľbu operácie. Ak je hodnota bitu vysoká, spustí sa operácia čítania, ak je hodnota nízka (nula), spustí sa operácia zápisu.

    Ak sú všetky tri piny stlačené na GND a chceme ich zapísať do pamäte, adresy zariadení budú vyzerať ako 10100000 (knižnica „Wire“ používa 7-bitové adresy, pričom všetko prevádza napravo od jedného bitu 0101000 0 0x50).

    Nahrávanie pocty hádanke:

    Aby sme nahrali od začiatku, vrátime sa do pamäte s bitovými Nahrávkami na adrese. Potom sa pridajú dve 8-bitové adresy (takže máme adresu 0x8000), potom dátový bajt a signál STOP. Potom EEPROM vstúpi pred interne synchronizovaný cyklus zápisu tWR (doba cyklu zápisu 5 ms) do energeticky nezávislej pamäte. Všetky vstupné signály
    zapnuté na hodinový cyklus nahrávania a EEPROM nie je správna kým sa nahrávanie nedokončí.

    Kopeme ďalej a v datasheete zistíme, že pamäť mikroobvodov je organizovaná ako 512 bok po boku 64 byte. Potom môžeme na jeden príkaz zapísať až 64 bajtov informácií. Pre ktoré prenášame všetkých 64 bajtov informácií a až potom signál STOP.

    Čítanie pocty:

    Pri čítaní týchto údajov budete spokojní. Pamäť podporuje tri možnosti čítania:

    • Prečítajte si presnú adresu;
    • Prečítajte si adresu Vipadkova;
    • Dôsledné čítanie;

    Pamäť si pamätá zostávajúcu adresu záznamu a nemení životnosť, takže zvyšný bajt môžeme prečítať bez vloženia adresy.

    Musíme si prečítať adresu od začiatku poslať príkaz na písanie a pošlite ho na adresu, ktorú si chcete prečítať( Nezabudnite, že adresy sa skladajú z dvoch 8-bitových častí). Potom odošlite príkaz na prečítanie a odstránenie načítaného bajtu, pričom všetko ukončíte príkazom STOP.

    Následné čítanie môže byť dokončené buď z adresy streamu alebo z výstupnej adresy a bude pokračovať, kým mikrokontrolér nenájde signál STOP. Keď sa adresa zmení, pamäť sa vymaže a adresovanie zmizne.

    No, prišiel čas skúsiť napísať:
    #include // Zahrňte knižnicu #define EEPROM_ADDRESS 0x53 // Nastavte adresu slova adresy pamäte = 0; // Cudi adresy sa zaznamenávajú byte data_send = 170; // Data void setup() ( Wire.begin(); // Inicializuje I2C Serial.begin(9600); Serial.print("Zapísať bajt do pamäte EEPROM..."); Serial.println (data_send); Wire. beginTransmission(EEPROM_ADDRESS);// Začne prenos Wire.write(adresa >> 8);Wire.write(adresa & 0xFF);// Odošle dva bajty adresy Wire.write(data_send); endTransmission(); // Ukončí prenos skontrolujeme stav prenosu.if (stav == 0)Serial.println ("Ok"); // oneskorenie(10); ), Wire.beginTransmission(EEPROM_ADDRESS); // Ak chcete prečítať údaje, otvorte správnu adresu. (stav == 0)Serial.println("OK"); // zastavenie prenosu Wire.requestFrom(EEPROM_ADDRESS, (bajt)1); // odošle príkaz na prečítanie jedného bajtu dátového bajtu dát = 0; if (Wire.available ()) // kontrola, aké údaje sa majú čítať (data = Wire.read(); // čítanie údajov) Serial.println (dáta, DEC); ) void loop() ( )

    Wire.requestFrom(adresa, množstvo) — Vikory používa majster na zapisovanie bajtov z keramického zariadenia. Tieto bajty je možné odstrániť pomocou metód available() a read(). Veľkosť vyrovnávacej pamäte je rovnaká 32 bajtov.

    • adresa : pridám 7-bitovú adresu, z ktorej sa budú prijímať bajty;
    • kvantita : počet bajtov na načítanie;

    Wire.available()— Otočí počet bajtov dostupných na extrakciu pomocou read().

    Tu je príklad záznamu v pamäti riadku „Ahoj Word“:

    #include #define EEPROM_ADDRESS 0x53 slovo adresa = 0; char data_send = "Ahoj Word"; void setup() ( Wire.begin(); // Serial.begin(9600); Serial.print("Zápis bajtu do pamäte EEPROM..."); Serial.println (odoslanie údajov); Wire.beginTransmission(EEPROM_ADDRESS); Wire.write(adresa >> 8); Wire.write(adresa & 0xFF); Wire.write(data_send); delay(10); Serial.println("Prečítať bajt z pamäte EEPROM..."); Wire.endTransmission (); if (stav == 0)Serial.println ("Ok"); // zastavenie prenosu Wire.requestFrom(EEPROM_ADDRESS, (bajt)10); byte data = 0; i<10 ;i++) { if (Wire.available()) { data = Wire.read(); } Serial.write (data); } } void loop() { }

    Organizácia pamäte:

    Nie je teda jasné, čo sa o tom píše v historických záznamoch. Prakticky sa snažím odtiaľto dostať. Technický list hovorí, že pamäť mikroobvodov je usporiadaná ako 512 bok po boku 64 byte. Čo to znamená? Ak chceme zapísať viac ako 64 bajtov na rámec, povedzme za adresu 0x40 (adresy druhej strany), keď adresa presahuje druhú stranu Interný mikroobvodový lekár kontaktujte prosím adresu na titulnej strane. A bajty požiadaviek sa zaznamenajú na titulnú stranu a údaje, ktoré tam boli zaznamenané, sa vymažú.

    Na čítanie takýchto hraníc neexistujú žiadne hranice, údajový list hovorí iba o tom, že keď dosiahnete koncovú adresu, budete automaticky prenesený na začiatok (adresy 0x00).

    Preto si myslím, že je to všetko. Samozrejme, môžete použiť hotovú knižnicu pre EEPROM a myslíte si, že si môžete napísať svoju vlastnú. Oboznámili sme sa so základnými princípmi robota.

    V tomto článku sme sa pokúsili zhromaždiť správy pre všetky najobľúbenejšie knižnice Arduino na jednom mieste a pripravili sme aj zbierku najobľúbenejších knižníc. Skôr či neskôr bude každý vývojár Arduina čeliť potrebe tejto alebo akejkoľvek inej knižnice. Dokonca aj hotový kód vikoristannaya dokonca skracuje hodinu na programovanie. Dúfame, že informácie o populárnych knižniciach zhromaždené na jednom mieste a vybavené správami na stiahnutie a krátkymi zadkami Wikoristanu vám pomôžu s vašimi projektmi.

    Knižnica Arduino je programový kód, ktorý nie je uložený v náčrtoch, ale v externých súboroch, ktoré je možné pripojiť k vášmu projektu. Knižnica využíva rôzne metódy a dátové štruktúry, ktoré sú potrebné na zjednodušenie práce so senzormi, indikátormi, modulmi a ďalšími komponentmi. Výber hotových programov vám uľahčí prácu na projektoch, takže sa môžete sústrediť na hlavnú logiku bez toho, aby ste strácali hodiny nečinnou prácou.

    Dnes je vytvorený veľký počet knižníc, ktoré sa dajú ľahko nájsť a dostať sa k nim na internete. Je dôležité, aby väčšina knižníc bola distribuovaná pod bezplatnou licenciou, takže nie je potrebné hľadať „pirátske“ verzie. Golovne, tse navchitisya.

    Štandardné knižnice Arduino

    Začnite spoznávať knižnice najlepšie na oficiálnej stránke, kde nájdete obsiahly zoznam štandardných modulov a odkazy na oficiálne knižnice partnerov.

    Zoznam zahrnutých knižníc (všetky dodávané s distribúciou Arduino IDE):

    • EEPROM
    • Ethernet / Ethernet 2
    • Firmata
    • LiquidCrystal
    • Servo
    • Software Serial
    • stepper

    Zbierka knižníc v jednom archíve

    Ak nemáte dostatok času na podrobnú analýzu anonymných stránok a chcete zhromaždiť všetko potrebné na prácu s aktuálnymi zariadeniami Arduino v jednom archíve, pripravili sme pre vás zoznam 40 najobľúbenejších knižníc. Stačí ho rozbaliť (priečinok knižnice) z priečinka Arduino.

    Knižnice pre obrazovky, indikátory a displeje

    I2C knižnica

    Knižnica je určená na použitie v periférnych zariadeniach využívajúcich protokol I2C.

    Vikoristan zadok:

    #ifndef I2C_MASTER_H

    #define I2C_MASTER_H

    void I2C_init (void) – vytvorenie objektu, upraveného na správnu frekvenciu pre zbernicu.

    uint8_t I2C_start () – spojenie nadviazané s novým zariadením.

    uint8_t I2C_write() – zápis dát do streamovacieho zariadenia.

    uint8_t I2C_read_ack() – načíta bajt zo zariadenia, zapíše ďalší bajt.

    Knižnica LiquidCrystal

    Štandardná knižnica nainštalovaná v Arduino IDE. Navrhnuté pre použitie so vzácnymi kryštálovými LCD displejmi.

    Vikoristan zadok:

    #include . Aby ste sa netrápili písaním, môžete sa pripojiť cez menu Sketch – Import Library – LiquidCrystal.

    Konštruktor triedy je LiquidCristal(…). Argumenty sú rs, rw, en, do ... d7. Prvé 3 signály sú RS, RW a Enable. Symboly d označujú čísla dátových zberníc, ku ktorým je displej pripojený.

    void begin(cols, rows) – metóda, ktorá inicializuje rozhranie displeja. Argumenty sú počet znakov v riadku (cols) a počet riadkov (rows). Táto metóda môže byť najskôr spochybnená.

    void createChar(num, data) - metóda potrebná na vytváranie koristuvach symbolov.

    Knižnica UTFT

    Štandardná knižnica potrebná pre roboty Arduino s TFT obrazovkami rôznych typov. Všetky podporované zobrazenia sú prezentované v sprievodnom dokumente s knižnicou.

    Vikoristan zadok:

    #include

    UTFT(); - Vytvorenie kópie UTFT.

    textRus(char*st, int x, int y); – metóda, ktorá umožňuje zobraziť riadok z indikátora. Napríklad char * dht = "Teplota, C";

    textRus(string st, int x, int y); - Zobrazte riadok z nastavení v parametri. Napríklad g.textRus("Teplota, C", 0, 20);

    Knižnica LedControl

    Umožňuje používať sedemsegmentové displeje, ktoré kombinujú pole LED diód do jednej matice.

    Vikoristan zadok:

    #include

    LedControl lc1 = LedControl();

    - Vyžaduje sa na inicializáciu knižnice. Je potrebné skombinovať štyri argumenty – počet pinov, na ktoré je displej pripojený (prvé 3 argumenty) a počet pripojených čipov.

    writeArduinoOn7Segment() - zobrazí na displeji všetky čísla od 0 do 15. Funkcie Vikorist setChar() pre znaky a, d a setRow() na vytvorenie rozloženia pre chýbajúce znaky.

    LedControl.shutdown() – vypnutie obrazu.

    setIntensity() – ovládanie jasu.

    Knižnice pre roboty s dátumom a hodinou Arduino

    Knižnica RTClib

    Knižnica na prácu s hodinami reálneho času, ktorá uľahčí interakciu s Arduinom.

    Vikoristan zadok:

    #include

    RTC_DS1307 RTC; - Vibrácie snímača (v tomto prípade DS1307).

    rtc.adjust(DateTime(Date, Time)); - úprava času a kalendára.

    dayOfTheWeek () – zobrazuje deň v týždni. Argument: 0 až 6, 0 – týždeň.

    Knižnica Timelib

    Umožňuje Arduinu získať informácie o dátume a hodine v aktuálnom okamihu.

    Vikoristan zadok:

    #include

    Čas (); - Vytvorenie kópie.

    setTime(t); - Je nastavená na hodinu. Argument t – rok, čas, sekunda, deň, mesiac a deň.

    timeStatus(); - Uveďte, ktorá hodina je nastavená.

    adjustTime(adjustment); - Je čas to napraviť.

    Knižnica Ds1307

    Knižnica pre manuálnu interakciu DS1307 s Arduinom a Wire knižnica.

    Vikoristan zadok:

    #include

    triedy DS1307RTC – vytvorenie objektu DS1307.

    SetTime() – nastavenie času.

    get() – číta RTC, otáča extrahovaný dátum vo formáte POSIX.

    Set(time_t t) – dátum záznamu z RTC

    Knižnica DS 3231

    Priradené k dátumu a hodine modulu ds3231.

    #include „ds3231.h“

    Hodiny DS3231 (SDA, SCL); – vytvorenie objektu DS3231, pripojenie na hodinovú a dátovú linku.

    getTime(); - prečítajte si dátum výročia.

    setDate(date, mon, year); - Stanovený dátum.

    Systémové knižnice Arduino

    Knižnica EEPROM

    Štandardné knižnice. Používa sa na prácu s neenergetickou pamäťou (záznam dát, čítanie).

    Vikoristan zadok:

    #include

    EEPROM.read(); - Vytvorenie objektu, načítanie bajtu na adrese z energeticky nezávislej pamäte.

    EEPROM.write(adresa, hodnota) – zapíše bajt do energeticky nezávislej pamäte.

    EEPROM.put() – záznam série čísel z plávajúcej kómy.

    EEPROM.get() – čítanie riadkov s pohyblivými číslami.

    Softvér knižnice Serial

    Knižnica, ktorá vám umožňuje implementovať následné rozhrania z ľubovoľných digitálnych pinov. Umožňuje vám tiež otvoriť niekoľko nasledujúcich portov, ktoré pracujú rýchlosťou až 115 200 baudov.

    #include

    SoftwareSerial mySerial(RX, TX) – objekt vytvorenia, argumenty – základy spojenia RX a TX.

    Serial.begin(); – nainštaluje tekutosť na port pre pripojenie Arduina a počítača.

    mySerial.overflow() – pretečenie vstupnej vyrovnávacej pamäte.

    Library Math

    Obsahuje veľké množstvo matematických funkcií pre prácu s pohyblivými číslami.

    Vikoristan zadok:

    #include

    Math(); - Vytvorenie kópie Math.

    Serial.print("cos num = "); - Otočte kosínus čísla.

    Serial.println(fmod(double__x, double__y)); - Otočte čísla modulo.

    Plánovač knižnice

    Navrhnuté pre roboty s Arduino Due, ktoré vám umožní pracovať v režime multitaskingu. Zatiaľ je to experimentálna knižnica.

    Vikoristan zadok:

    #include

    plánovač; - Vytvorenie kópie.

    Scheduler.startLoop() – umožňuje pridať funkciu, ktorá okamžite ukončí loop().

    yield() – umožňuje preniesť spracovanie na iné úlohy.

    Knižnice servomotorov a motorov

    Servo knižnice

    Štandardné knižnice. Je nevyhnutný pre činnosť servomotorov a často sa používa v robotických projektoch s manipulátormi.

    Vikoristan zadok:

    #include

    Servo myservo; - Vytvorenie objektu pre servomotor.

    myservo.attach(); - Číslo výstupu, ku ktorému je pripojený servomotor.

    myservo.write(180, 30, pravda); - Otočiť o 180 stupňov, rýchlosť 30, úplné otočenie.

    Library Stepper

    Nevyhnutné na liečbu krvných unipolárnych a bipolárnych motorov.

    #include

    const int stepsPerRevolution = ; – koľkokrát potrebuje motor na otočenie.

    Stepper myStepper = Stepper(steps, pin1, pin2) – vytvorí inštanciu triedy zo zadaného počtu krokov a vrcholov, ku ktorým je pripojený motor.

    Knižnice senzorov Arduino

    Knižnica DHT

    #include< DHT.h>

    DHT dht(DHTPIN, DHT11); – inicializuje snímač (v prípade DHT11).

    dht.begin(); - Spustenie snímača.

    float t = dht.readTemperature(); - Odčítanie hodnoty výstupnej teploty v stupňoch Celzia.

    Knižnica DallasTemperature

    Aplikácie pre roboty so senzormi Dallas. Funguje súčasne z knižnice OneWire.

    #include

    DallasTemperature dallasSensors(&oneWire); - Prenos oneWire objektu do senzorového robota.

    dať do registra.

    printTeplota(adresa senzora); – použije sa na získanie aktuálnej hodnoty teploty.

    Ultrazvuková knižnica

    Robot Arduino bude chránený ultrazvukovým snímačom vibrácií HC-SR04.

    #include

    Ultrazvukový ultrazvuk (tig, echo) – omráčenie objektu, argumenty – Trig kontakt a Echo kontakt.

    dist = ultrazvuk.vzdialenostRead(); - Určená vzdialenosť závisí od objektu. Argument – ​​centimetre (CM) chi palce (INC).

    Timing() – načítanie hodnoty impulzu na výstupe Echo, jej prevod do požadovanej číselnej sústavy.

    Knižnica ADXL345

    Navrhnuté pre použitie s akcelerometrom ADXL345.

    Vikoristan zadok:

    #include

    ADXL345_ADDRESS – vytvorený objekt priradený k jeho adrese.

    ADXL345_REG_DEVID – identifikácia zariadenia.

    ADXL345_REG_OFSX – potlačená os X.

    ADXL345_REG_BW_RATE – podpora rýchlosti prenosu dát.

    Knižnica BME280

    Vhodné pre prácu so snímačom teploty, vlhkosti a zverákom BME280.

    Vikoristan zadok:

    #include

    BME280_ADDRESS – vytvorený objekt BME280, priradený k jeho adrese.

    begin(uint8_t adr = BME280_ADDRESS); - Senzor robota Cob.

    getTemperature — posadnutosť aktuálnou teplotou.

    getPressure – posadnutosť magickým zlozvykom.

    Knižnica BMP280

    Vyžaduje sa pre roboty so snímačom atmosférického tlaku BMP280.

    Vikoristan zadok:

    #include

    BMP280_CHIPID – vytvorenie inštancie, vloženie adresy.

    getTemperature(float *temp); - udržiavanie extrémnych teplôt.

    getPressure(float *tlak); - Orezanie hodnoty zveráka.

    Knižnica BMP085

    Vyžaduje sa pre roboty so snímačom zveráka BMP085.

    Vikoristan zadok:

    #include

    Adafruit_BMP085 bmp; - Vytvorenie kópie BMP085.

    dps.init(MODE_ULTRA_HIGHRES, 25000, true); - Vymiryuvannya vice, argument 25000 - výška nad hladinou mora (v tomto prípade 250 m nad hladinou mora).

    dps.getPressure(&Pressure); - Zverák je pridelený.

    Knižnica odtlačkov prstov

    Musíte použiť skener prstov.

    zadokwikiristannya:

    #include

    Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); – omráčený objektom Finger. Parameter je odoslaný do lokality na prevádzku s UART pred pripojením akéhokoľvek modulu.

    finger.begin(); - Inicializácia modulu prstov.

    Func_sensor_communication(); - Kliknite na modul snímača prstov.

    Komunikačné knižnice

    Library Wire

    Vyžaduje sa pre prevádzku s bi-drôtovým rozhraním I2C.

    Vikoristan zadok:

    #include

    Wire.begin() – inicializácia knižnice, pripojená na I2C zbernicu.

    Wire.requestFrom() – naplní master bajtmi z hardvérového zariadenia.

    Wire.beginTransmission() – začiatok prenosu do zariadenia.

    Library Irremote

    Je potrebné, aby robot používal Arduino s IC.

    Vikoristan zadok:

    #include

    IRrecv irecv(RECV_PIN); - PIN pred prijatím akéhokoľvek spojenia ІЧ.

    SetPinAndButton(int ir1, int ir2, int pin) - umožňuje nakonfigurovať výstup, ktorý sa má požadovať, keď sú zadané hodnoty ir1, ir2.

    GSM knižnica

    Vyžaduje sa pre pripojenie cez GSM kartu so sieťou GSM/GRPS. S touto pomocou môžete vykonávať operácie, ktoré zahŕňajú používanie GSM telefónu, vybavovanie hlasových hovorov a pripojenie k internetu cez GRPS.

    Vikoristan zadok:

    #include

    GSM GSMAccess – inicializuje inštanciu triedy.

    gprs.powerOn() – zvýšená životnosť.

    GPRS – nastavenie internetového pripojenia.

    GSM – pripojenie rádiového modemu.

    Knižnica RFID

    Vyžaduje sa na pripojenie Arduina a RFID modulu.

    Vikoristan zadok:

    #include

    RFID rfid(SS_PIN, RST_PIN); - Vytvorenie rfid inštancie, argumentov - pinov, k ľubovoľnému modulu pripojení.

    rfid.init(); - Inicializácia modulu RFID.

    Knižnica MFRC 522

    Vyžaduje sa na pripojenie modulu Arduino a MFRC522.

    Vikoristan zadok:

    #include

    MFRC522 mfrc522(SS_PIN, RST_PIN); – vytvorená inštancia MFRC522, argumenty označujú výstup, ku ktorému je modul pripojený.

    mfrc522.PCD_Init(); - Inicializácia MFRC522.

    Knižnica Ethershield

    Nová verzia https://github.com/jcw/ethercard

    Vyžaduje sa na pripojenie Arduina k lokálnej sieti alebo internetu. Knižnica už nie je podporovaná, nová verzia Ethercard. K dispozícii je aj štandardná ethernetová knižnica.

    Vikoristan zadok:

    #include "EtherShield.h"

    #include

    EtherShield es = EtherShield(); - príprava webovej stránky

    ether.begin(veľkosť Ethernetu::buffer, mymac,); - Začiatok práce, argumenty - Mac adresy a číslo portu, ku ktorému je pripojený výstup CS.

    Knižnica Nrf24l01

    Vyžaduje sa pre roboty s rádiovým modulom RF24.

    Vikoristan zadok:

    #include „RF24.h“

    RF24 - Konštruktor vytvorí novú inštanciu ovládača. Pred výberom modulu musíte vytvoriť inštanciu a určiť kolík pred akýmkoľvek pripojením čipu (_cepin: Povoliť kolík modulu, cspin: Vybrať kolík modulu).

    Begin – začiatok robotického čipu.

    setChannel – RF komunikačný kanál.

    setPayloadSize – nastavenie pevnej veľkosti prenosu.

    getPayloadSize – výber pevnej veľkosti.

    Knižnica TinyGPS

    Je potrebné prečítať si oznámenia GPGGA a GPRMC. Pomáha vám čítať údaje o polohe, dátume, hodine, nadmorskej výške a ďalších parametroch.

    Vikoristan zadok:

    #include

    TinyGPS GPS; - Vytvorenie inštancie TinyGPS.

    encode() – odosielanie sekvenčných údajov do objektu, jeden znak po druhom.

    gps.stats() – metóda štatistiky. Ukazuje, či boli alebo neboli odstránené správne údaje.

    Knižnice v Arduino IDE

    Medzi rozmanitosťou knižníc možno vidieť 3 hlavné skupiny:

    • Sú to knižnice, ktoré sú pôvodne nainštalované v jadre Arduino IDE. Nie je potrebné ich dodatočne sťahovať ani inštalovať, sú k dispozícii na stiahnutie z programu ihneď po spustení procesu vývoja.
    • Ďalšie knižnice sú knižnice, ktoré je potrebné získať samostatne. Tento typ knižnice obsahuje kolekciu senzorov, senzorov a ďalších komponentov na uľahčenie práce Arduina.
    • Oneskorené knižnice – inštalujú sa ako bočný panel k doplnkovej knižnici, ktorá s ňou priamo nepracuje.

    Najjednoduchší spôsob, ako pracovať s knižnicami v Arduine, je využiť možnosti strednej časti Arduino IDE. Povedzme si o tom v oficiálnych štatistikách.

    displej LCD- Častý hosť projektov Arduino. V skladacích obvodoch však môžeme mať problém s nedostatkom Arduino portov kvôli nutnosti pripojenia obrazovky, ktorá má veľa kontaktov. Cesta z tejto situácie môže byť I2C/IIC Adaptér, ktorý pripája prakticky štandardnú obrazovku Arduino 1602 k doskám Uno, Nano alebo Mega s ďalšími 4 pinmi. Tento článok ukazuje, ako môžete pripojiť obrazovku LCD s rozhraním I2C, ako získať prístup ku knižniciam, napísať krátky príklad a pozrieť sa na typické aplikácie.

    Displej z tekutých kryštálov LCD 1602 Je to prvá voľba pre zobrazenie riadkov symbolov v rôznych projektoch. Je to lacné, s rôznymi úpravami s rôznymi farbami podsvietenia, môžete ľahko vytvárať hotové knižnice pre skicu Arduino. Najväčšou nevýhodou tejto obrazovky je ale fakt, že displej má 16 digitálnych prvkov, z ktorých je minimálne 6. Táto LCD obrazovka bez i2c je vážnym problémom dosiek Arduino Uno alebo Nano. Ak nie sú žiadne kontakty, budete si musieť kúpiť dosku Arduino Mega alebo chrániť kontakty, vrátane pripojenia displeja cez i2c.

    Krátky popis LCD 1602 pinov

    Pozrime sa bližšie na technológiu LCD1602:

    Šupka z viniča má svoj vlastný význam:

    1. uzemnenie GND;
    2. Kharchuvannya 5;
    3. nastavenie kontrastu monitora;
    4. Tím, dáta;
    5. Zaznamenávanie a čítanie údajov;
    6. Povoliť;

    7-14. Dátové linky;

    1. Plus podpora;
    2. Mínusové osvetlenie.

    Špecifikácie displeja:

    • Symbolický typ zobrazenia - možnosť zavedenia symbolov;
    • LED podsvietenie;
    • Ovládač HD44780;
    • Živé napätie 5V;
    • Formát 16x2 znakov;
    • Rozsah prevádzkových teplôt: -20°С až +70°С, rozsah skladovacích teplôt: -30°С až +80°С;
    • Pozriem sa okolo 180 stupňov.

    Schéma pripojenia LCD k doske Arduino bez i2C

    Štandardná schéma pripojenia monitora priamo k mikrokontroléru Arduino bez I2C vyzerá takto.

    Vzhľadom na veľký počet kontaktov, ktoré sú pripojené, nemusí byť dostatok miesta na prijatie požadovaných prvkov. Prepínač I2C zmení počet šípok na 4 a počet obsadených kolkov na 2.

    Kde kúpiť LCD obrazovky a štíty pre Arduino

    LCD obrazovka 1602 (a verzia 2004) je veľmi populárna, takže ju ľahko nájdete ako v lokálnych internetových obchodoch, tak aj na zahraničných trhoch. Poďme sa pozrieť na dostupné možnosti:

    Modul LCD1602+I2C s modrou obrazovkou v kombinácii s Arduinom Jednoduchý displej LCD1602 (zelené podsvietenie) lacnejšie ako 80 rubľov Veľká obrazovka LCD2004 s I2C HD44780 pre Arduino (modré a zelené podsvietenie)
    Displej 1602 s adaptérom IIC a modrými svetlami Ďalšia verzia LCD1602 so spájkovaným I2C modulom Port IIC/I2C/TWI/SPI modul adaptéra pre obrazovku 1602, vhodný pre Arduino
    Displej s RGB prepínačmi! LCD 16×2 + klávesnica +Buzzer Shield pre Arduino Štít pre Arduino s tlačidlami a obrazovkou LCD1602 LCD 1602 LCD displej pre 3D tlačiareň (Smart Controller pre RAMPS 1.4, Text LCD 20×4), modul čítačky kariet SD a MicroSD

    Popis protokolu I2C

    Najprv si v krátkosti povedzme o pripojení displeja k Arduinu cez adaptér i2c. Povedzme si stručne o samotnom protokole i2C.

    I2C/IIC(Inter-Integrated Circuit) je protokol, ktorý bol pôvodne vytvorený na prepojenie integrovaných obvodov uprostred elektronického zariadenia. Dizajn patrí spoločnosti Philips. Protokol i2c je založený na vikoristickej 8-bitovej zbernici, ktorá je potrebná na prepojenie blokov v elektronike, ktorú riadi, a na adresnom systéme, ktorý je možné pripojiť pozdĺž rovnakých vodičov pomocou konektora a prístavieb. Jednoducho dodávame dáta do jedného alebo druhého zariadenia, pričom k dátovým paketom pridáme identifikátor požadovaného prvku.

    Najjednoduchší obvod I2C môže obsahovať jedno káblové zariadenie (zvyčajne mikrokontrolér Arduino) a mnoho zariadení (napríklad LCD displej). Každé zariadenie má adresu v rozsahu od 7 do 127. Dve zariadenia s rovnakou adresou nemusia byť v rovnakom obvode.

    Doska Arduino podporuje i2c na hardvérovej úrovni. Na pripojenie zariadení pomocou tohto protokolu môžete použiť kolíky A4 a A5.

    V I2C robote môžete vidieť množstvo výhod:

    • Práca vyžaduje minimálne 2 linky – SDA (dátová linka) a SCL (synchronizačná linka).
    • Pripojenie veľkého počtu káblových zariadení.
    • Zmena hodiny nepokoja.
    • Na ovládanie celej sady zariadení je potrebný iba jeden mikrokontrolér.
    • Ľubovoľný počet mikroobvodov, ktoré sú pripojené k jednej zbernici, je obklopený iba hraničnou kapacitou.
    • Vysoká úroveň šetrenia dát prostredníctvom špeciálneho filtra potláča rozstrekovanie generované v obvodoch.
    • Jednoduchý postup diagnostiky vzniknutých porúch a odstraňovania porúch.
    • Zbernica je už integrovaná do samotného Arduina, takže nie je potrebné ďalej rozširovať rozhranie zbernice.

    Nedoliky:

    • Základné predpätie na linke je 400 pF.
    • Je dôležité naprogramovať ovládač I2C, pretože na zbernici je množstvo rôznych zariadení.
    • Pri veľkom počte zariadení je ťažké lokalizovať poruchu, pretože jedno z nich automaticky nainštaluje nízkoúrovňový faktor.

    i2c modul pre LCD 1602 Arduino

    Najlepší a najjednoduchší spôsob, ako nainštalovať i2c displej do Arduina, je zakúpiť si hotovú obrazovku so vstavaným protokolom. Ale takéto obrazovky neznesú smrad, nie je to lacné. A os rôznych štandardných obrazoviek už vytvorila veľkú silu. Preto je dnes najdostupnejšou a najobľúbenejšou možnosťou nákup a výmena susedného modulu I2C - adaptéra, ktorý vyzerá takto:

    Na jednej strane modulu sú i2c piny - zem, životnosť a 2 pre prenos dát. Z iného adaptéra použijeme ruže vonkajšieho života. A, samozrejme, na doske je obnažený spodok, okrem toho je modul prispájkovaný k štandardným komponentom obrazovky.


    Ak sa chcete pripojiť k platbe Arduino, použite odhlásenie i2c. V prípade potreby pripojíme externý zdroj osvetlenia. Pomocou vstavaného trim rezistora môžeme upraviť nastavenia kontrastu J

    Na trhu nájdete moduly LCD 1602 s pripájanými adaptérmi, ich inštalácia je maximálne zjednodušená. Ak ste si kúpili rovnaký adaptér, musíte ho vopred prispájkovať k modulu.

    Pripojenie obrazovky RK k Arduinu cez I2C

    Na pripojenie potrebujete samotnú Arduino dosku, displej, breadboard, konektory a potenciometer.

    Ak používate špeciálny adaptér i2c, musíte ho najskôr prispájkovať k modulu obrazovky. Je dôležité mať súcit, môžete sa zapojiť do takejto schémy.


    Pred zaplatením ďalších štyroch šípok je pripojený RCD monitor s podporou i2c - dve šípky pre dáta, dve šípky pre život.

    • Prípojka GND je spojená s GND na doske.
    • VCC je na 5V.
    • SCL je pripojený na kolík A5.
    • SDA je pripojený na pin A.

    To je všetko! Dlhé siete ciest, v ktorých sa dá ľahko stratiť. Celú zložitosť implementácie i2C protokolu môžeme v tomto prípade jednoducho zveriť knižniciam.

    Knižnice pre roboty s i2c LCD displejom

    Na komunikáciu medzi Arduinom a LCD 1602 cez zbernicu I2C budete potrebovať aspoň dve knižnice:

    • Knižnica Wire.h pre prácu s I2C je už zahrnutá v štandardnom programe Arduino IDE.
    • Knižnica LiquidCrystal_I2C.h, ktorá obsahuje širokú škálu príkazov na ovládanie monitora cez zbernicu I2C, umožňuje vytvoriť jednoduchší a kratší náčrt. Knižnicu je potrebné nainštalovať dodatočne Po pripojení obrazovky je potrebné nainštalovať knižnicu LiquidCrystal_I2C.h

    Po pripojení všetkých potrebných knižníc do skice vytvoríme objekt a môžeme prispôsobiť jeho funkcie. Na testovanie je dôležité použiť štandardný náčrt na zadku.

    #include #include // Pripojenia knižnice //#include // Pripojenie alternatívnej knižnice LiquidCrystal_I2C lcd(0x27,16,2); // Uveďte adresu I2C (najširšiu hodnotu) a zadajte parametre obrazovky (pre LCD 1602 - 2 riadky po 16 znakov //LiquidCrystal_PCF8574 lcd(0x27); // Možnosť pre knižnicu PCF8574 void setup() ( lcd. init (); // Inicializácia displeja lcd.backlight(); // Pripojenie podsvietenia lcd.setCursor(0,0); // Umiestnite kurzor na začiatok prvého riadku lcd.print("Ahoj"); // Napíšte text do prvého riadka lcd .setCursor(0,1); // Umiestnite kurzor na začiatok ďalšieho riadka lcd.print("ArduinoMaster"); // Napíšte text do ďalšieho riadka ) void loop() ( )

    Popis funkcií a metód knižnice LiquidCrystal_I2C:

    • home() a clear() – prvá funkcia umožňuje otočiť kurzor do hornej časti obrazovky a zároveň zobraziť všetko, čo bolo predtým na monitore.
    • write(ch) – umožňuje napísať na obrazovku jeden znak ch.
    • kurzor() a noCursor() – zobrazenie/skrytie kurzora na obrazovke.
    • blink() a noBlink() – kurzor bliká/nebliká (ak bolo jeho zobrazenie predtým povolené).
    • display() a noDisplay() – umožňuje pripojiť/zapnúť displej.
    • scrollDisplayLeft() a scrollDisplayRight() – posúva obrazovku o jeden znak ľavá/pravá.
    • autoscroll() a noAutoscroll() – umožňuje zapnúť/vypnúť režim automatického posúvania. Pre ktorý režim kože sa nový symbol zaznamená na rovnaké miesto, ktoré bolo predtým napísané na obrazovke.
    • leftToRight() a rightToLeft() – Priame vloženie zobrazeného textu – zľava doprava alebo sprava doľava.
    • createChar(ch, bitmap) – vytvorí znak s kódom ch (0 – 7) pomocou poľa bitmapových bitmapových máp na vytvorenie čiernych a bielych bodov.

    Alternatívna knižnica pre roboty s i2c displejom

    V niektorých prípadoch, keď je priradená knižnica so zariadeniami vybavenými radičmi PCF8574 poškodená, môže dôjsť k chybám. Alternatívou k tejto možnosti je knižnica LiquidCrystal_PCF8574.h. Rozširuje LiquidCrystal_I2C, čo nie je príčinou problémov pre viktoriánov.

    Problémy s pripojením i2c LCD displeja

    Ak po kliknutí na skicu nevidíte na displeji požadovanú správu, skúste kliknúť na tieto akcie.

    V prvom rade môžete zvýšiť alebo zmeniť kontrast monitora. Postavy často jednoducho nie sú viditeľné cez režim kontrastu a osvetlenia.

    Ak to nepomôže, skontrolujte, či sú kontakty správne pripojené a či je pripojený živý zdroj napájania. Ak ste použili kompatibilný adaptér i2c, znova skontrolujte spájkovací bod kontaktov.

    Ďalším častým dôvodom chýbajúceho textu na obrazovke môžu byť nesprávne adresy i2c. Skúste si v náčrtoch zapamätať adresu zariadenia s 0x27 0x20 alebo 0x3F. Rôzni distribútori môžu mať rôzne adresy pre platbu. Ak to nepomôže, môžete spustiť náčrt skenera i2c, ktorý sa pozrie na všetky pripojenia zariadenia a určí ich adresy pomocou metódy hrubej sily. Náčrt zadku skenera i2c.

    Ak obrazovka stále nefunguje, skúste prispájkovať adaptér a pripojiť LCD ako zvyčajne.

    Višňovok

    V tomto článku sme sa pozreli na hlavný zdroj napájania pre LCD obrazovku v skladacích Arduino projektoch, ak potrebujeme ušetriť peniaze navyše na doske. Jednoduchý a lacný adaptér i2c vám umožňuje pripojiť obrazovku LCD 1602 pomocou iba 2 analógových kolíkov. Vo viacerých situáciách môžete byť ešte dôležitejší. Poplatok za dostupnosť – nutnosť použitia prídavného modulu – prevodníka a knižnice. Cena za flexibilitu nie je podľa nás vôbec vysoká a odporúčame túto flexibilitu využiť v projektoch.

    Popis knižnice Wire

    Táto knižnica vám umožňuje komunikovať so zariadeniami I2C/TWI. Na doskách Arduino s rozložením R3 (dizajn 1.0) sú SDA (dátová linka) a SCL (hodinová linka) umiestnené na pinoch AREF pinu. Arduino Due má dve rozhrania I2C/TWI: SDA1 a SCL1 sú umiestnené na kolíkoch AREF a ďalšie linky sú umiestnené na kolíkoch 20 a 21.

    Nižšie uvedená tabuľka zobrazuje odinštalovanie TWI na rôznych doskách Arduino.

    Počnúc Arduino 1.0 táto knižnica predstavuje funkcie Stream, takže funguje skvele s inými knižnicami na čítanie/zápis. Prostredníctvom toho sú send() a recipient() nahradené read() a write().

    Poznámka

    Nájdite 7- a 8-bitové verzie adresy I2C. 7 bitov identifikuje zariadenie a 8. bit označuje, či sa zo zariadenia zapisuje alebo číta. Knižnica Wire obsahuje 7 bitové adresy. Ak máte technický popis alebo príklad kódu, ktorý víťazí 8-bitové adresy, budete musieť prevrátiť nízky bit (aby ste hodnotu zničili o jeden bit pravou rukou), pričom adresu znížite z 0 na 127. Adresy však od 0 do 7 nie sú víťazné, fragmenty sú rezervované, prvá adresa, ktorú je možné zvoliť, je 8. Upozorňujeme, že pri pripájaní kolíkov SDA/SCL je potrebné vytiahnuť odpory. Správa sa čudovať zadku. Na doske MEGA 2560 sú odpory, ktoré je potrebné vytiahnuť na kolíky 20 a 21.

    Popis metód

    Wire.begin()

    Popis

    Inicializuje knižnicu Wire a pripája sa k zbernici I2C ako master alebo leader. Spravidla môžete volať len raz.

    Syntax

    Wire.begin(adresa)

    Parametre

    adresa: 7-bitová adresa priradená zariadeniu (nevyžaduje sa); Ak nie sú žiadne úlohy, doska je pripojená k zbernici ako master.

    Význam toho, čo sa otáča

    zadok

    Nedopalky pre keramické zariadenie sú úžasné v metódach onReceive() a onRequest(). Nedopalky pre káblové zariadenia sa líšia od zadkov k iným metódam. .

    Wire.requestFrom()

    Popis

    Vikory používa majster na zapisovanie bajtov z keramického zariadenia. Tieto bajty je možné odstrániť pomocou metód available() a read().

    Ak je tento argument pravdivý, potom requestFrom() po zapnutí vydá upozornenie STOP, ktoré zavolá zbernicu I2C.

    Ak je tento argument nepravdivý, potom requestFrom() po požiadavke vydá upozornenie RESTART. Pneumatika nefunguje, čo bráni inému zariadeniu-master dostať sa medzi pripojenia. To umožňuje jednému káblovému zariadeniu posielať množstvo napájacích vstupov, kým nebude ovládať zbernicu.

    Syntax

    Wire.requestFrom(adresa, množstvo)

    Wire.requestFrom(adresa, množstvo, zastávka)

    Parametre

    • adresa: pridám 7-bitovú adresu, z ktorej sa budú prijímať bajty;
    • kvantita: počet bajtov na načítanie;
    • stop: booleovský. true vynúti po požiadavke upozornenie STOP. false vynúti upozornenie RESTART po požiadavke, čím sa uložia aktívne pripojenia.
    Význam toho, čo sa otáča

    byte: počet bajtov otočených podľa zadaného zariadenia.

    zadok

    Wire.beginTransmission()

    Popis

    Spustí prenos do I2C zariadení so zadanou adresou. Po zadaní sekvencie prenosových bajtov pomocou funkcie write() sa prenos dokončí pomocou volania endTransmission().

    Syntax

    Wire.beginPrenos(adresa)

    Parametre

    adresa: pridám 7 bitovú adresu, pretože je potrebné preniesť dáta.

    Význam toho, čo sa otáča

    zadok

    Wire.endTransmission()

    Popis

    Dokončí prenos do zariadenia, ktoré bolo vytlačené pomocou metódy beginTransmission() a prenesie bajty, ktoré boli odoslané do zariadenia pomocou metódy write().

    Na použitie s väčšinou I2C zariadení, počnúc Arduino 1.0.1, requestFrom() berie argument typu Boolean údajov, ktorý mení jeho správanie.

    Ak je tento argument pravdivý, potom requestFrom() po prenose vydá upozornenie STOP, čím uvoľní zbernicu I2C.

    Ak je tento argument nepravdivý, potom requestFrom() po prenose vydá oznámenie RESTART. Pneumatika nefunguje, čo bráni inému zariadeniu-master dostať sa medzi pripojenia. To umožňuje jednému káblovému zariadeniu posielať niekoľko prevodových stupňov pri ovládaní zbernice.

    Teoreticky je tento argument starší ako pravdivý.

    Syntax

    Wire.endTransmission()

    Wire.endTransmission(stop)

    Parametre

    stop: booleovský. true force notifikácia STOP po prenose. false si po prenose vynúti notifikáciu RESTART, čím sa uloží aktívne spojenie.

    Význam toho, čo sa otáča

    bajt, ktorý označuje režim prenosu:

    • 0: úspech;
    • 1: na naplnenie vyrovnávacej pamäte prenosu je potrebných viac údajov;
    • 2: NACK prijaté v hodine prenosu adresy;
    • 3: NACK prijaté v hodine prenosu dát;
    • 4: reshta ospravedlňuje.
    zadok

    Pozrite si príklad metódy write().

    Wire.write()

    Popis

    Zapisuje údaje zo zadaného zariadenia do vstupného zariadenia alebo nastavuje bajty, ktoré sa majú preniesť z hlavného zariadenia do určeného zariadenia (medzi volaniami beginTransmission() a endTransmission()).

    Syntax

    Wire.write(value)

    Wire.write(string)

    Wire.write(dáta, dĺžka)

    Parametre

    • hodnota: hodnota prenosu, jeden bajt.
    • reťazec: poradie prenosu, postupnosť bajtov.
    • dáta: pole prenosových dát, bajtov.
    • dĺžka: počet bajtov na prenos.
    Význam toho, čo sa otáča

    byte: write() otáča počet zapísaných bajtov, aj keď čítanie niektorých z nich nie je ťažké.

    Zadok #include byte val = 0; void setup() ( Wire.begin(); // pripojenie na zbernicu i2c ) void loop() ( Wire.beginTransmission(44); // prenos do zariadenia #44 (0x2c) // adresa zariadenia pre úlohy v technický popis Wire. write(val); // odoslanie hodnoty byte Wire.endTransmission(); // preskočenie prenosu val++; // zvýšenie hodnoty if(val == 64) // keď je 64. hodnota (max) dosiahnuté (val = 0; / / štart na klase) oneskorenie (500);

    Wire.available()

    Popis

    Otočí počet bajtov, ktoré je možné získať pomocou read(). Táto metóda musí byť volaná na káblovom zariadení po volaní requestFrom() alebo na podradenom zariadení uprostred volania onReceive().

    Syntax

    Wire.available()

    Parametre

    Význam toho, čo sa otáča

    Počet bajtov dostupných na čítanie.

    zadok

    Pred metódou read() sledujte zadok.

    Wire.read()

    Popis

    Číta bajt odoslaný z odosielaného zariadenia hostiteľovi po zavolaní requestFrom() alebo bajt odoslaný z odosielaného zariadenia odosielanému.

    Syntax

    Parametre

    Význam toho, čo sa otáča

    byte: červový bajt akceptácií.

    Zadok #include byte val = 0; void setup() ( Wire.begin(); // pripojenie k i2c zbernici (adresy pre master nie sú povinné) Serial.begin(9600); // nastavenie sériového portu pre výstup ) void loop() ( Wire .requestFrom( 2, 6);// dodanie 6 bajtov zo zadaného zariadenia #2 while(Wire.available()) // môže byť odoslaných menej ako požadované zariadenie (char c = Wire.read(); // prijatie bajt ako sériový znak .print (c); // zalomenie symbolu ) delay(500);

    Wire.setClock()

    Popis

    Mení frekvenciu hodín komunikácie na zbernici I2C. Zariadenia I2C nemajú minimálnu pracovnú frekvenciu hodín, ktorá je zvyčajne 100 kHz.

    Syntax

    Wire.setClock(clockFrequency)

    Parametre

    clockFrequency: hodnota frekvencie (v hertzoch) hodinového signálu. Akceptované hodnoty sú 100 000 (štandardný režim) a 400 000 (švédsky režim). Každý procesor tiež podporuje 10 000 (nízkorýchlostný režim), 1 000 000 (vysokorýchlostný plus režim) a 3 400 000 (vysokorýchlostný režim). Aby ste sa uistili, že je podporovaný požadovaný režim, prejdite do dokumentácie pre konkrétny procesor.

    Význam toho, čo sa otáča

    Wire.onReceive()

    Popis

    Registruje funkciu, ktorá sa bude volať, keď zariadenie prijme prenos od mastera.

    Syntax

    Wire.onReceive(handler)

    Parametre

    handler: funkcia, ktorá sa zavolá, keď zariadenie prijme dáta; Musíte akceptovať jeden parameter int (počet bajtov načítaných z hlavného servera) a nič neotáčať, potom:

    void myHandler(int numBytes)

    Význam toho, čo sa otáča

    zadok

    #include void setup() ( Wire.begin(8); // pripojenie k i2c zbernici s adresou #8 Wire.onReceive(receiveEvent); // registrácia subsenzora Serial.begin(9600); // konfigurácia sériového portu pre zobrazenie ) void loop() ( delay(100); ) // funkcia, ktorá sa ukončí okamžite po prijatí údajov z mastera // táto funkcia je zaregistrovaná ako dátový procesor, watch setup() void recipientEvent(int howMany) ( pričom (1< Wire.available()) // пройтись по всем до последнего { char c = Wire.read(); // принять байт как символ Serial.print(c); // напечатать символ } int x = Wire.read(); // принять байт как целое число Serial.println(x); // напечатать число }

    Wire.onRequest()

    Popis

    Registruje funkciu, ktorá sa bude volať, keď si master vyžiada údaje zo zadaného zariadenia.

    Syntax

    Wire.onRequest(handler)

    Parametre

    handler: funkcia, ktorá sa musí volať, neakceptuje parametre a nič neotáča, takže:

    void myHandler()

    Význam toho, čo sa otáča

    zadok

    Kód pre dosku Arduino, ktorá funguje ako zariadenie:

    #include void setup() ( Wire.begin(8); // pripojenie k i2c zbernici s adresou #8 Wire.onRequest(requestEvent); // registrácia procesora požiadaviek ) void loop() ( delay(100); ) // Funkcia, Hneď ako sa master // dopytuje na dáta // táto funkcia je zaregistrovaná ako pollster, pozri setup() void requestEvent() ( Wire.write("ahoj"); // odosielanie upozornení )