s jmenovitými hodnotami v rozmezí od 10 Ohm do 1 MOhm);

  • 2 rezistory 4,7 kOhm (ze stejné sady);
  • spochni šipky (např. osa je dobrá);
  • počítač s Arduino IDE.
  • 1 Popis I2C rozhraní

    Sériový komunikační protokol IIC (také nazývaný I2C - Inter-Integrated Circuits) používá k přenosu dat dvě obousměrné komunikační linky, nazývané sériová datová sběrnice. SDA (sériová data) ta pneumatika je poklepaná SCL (sériové hodiny). Existují také dvě čáry pro život. Sběrnice SDA a SCL jsou vytaženy do sběrnice života přes odpory.

    Chtěl bych mít jeden drátové zařízení (Master) To zahájí přenos dat a generuje synchronizační signály. Opatření také správa zařízení (Slave), které přenášejí data vedoucímu. Vzhled zařízení je přiřazena jedinečná adresa, po které je zařízení přesměrováno na novou. Adresy zařízení jsou uvedeny v pasu (datasheetu). Na jednu I2C sběrnici lze v závislosti na počtu vodičů připojit až 127 zařízení. Roboty pak lze připojit ke sběrnici. Vaughn podporuje horké spojení.

    Pojďme se rychle podívat na schéma výměny protokolu I2C. Možností je celá řada, pojďme se podívat na jednu z širších možností. Zrychlete pomocí logického analyzátoru připojeného ke sběrnicím SCL a SDA.

    Master zahájí výměnu. Za tímto účelem VIN začne generovat hodinové impulsy a posílá je po lince SCL v balení po 9 kusech. Současně se zobrazí datový řádek SDA Adresy doplním, proto je nutné instalovat spoje, které jsou taktovány prvních 7 hodinových impulzů (z rozsahu adres: 2 7 = 128 minus nula adres). Ofenzivní bitva osady je kód transakce(číst nebo psát) a ještě jeden kousek - potvrzovací bit(ACK) pro potvrzení, že zařízení přijalo požadavek. Pokud potvrzení neobdržíte, výměna bude ukončena. Nebo se pán bude dál nutit znovu se ptát.

    To je znázorněno níže. V první fázi je například nutné ovládat zařízení z pneumatiky. Je vidět, že master se snaží navázat spojení ze zařízení s adresou 0x27, ale neodmítá potvrzení (NAK). Výměna bude ukončena.


    Nyní se připojíme na I2C sběrnici zařízení a operaci zopakujeme. Situace se změnila. První paket s adresou obdržel potvrzení (ACK), jak bylo zadáno. Výměna pokračovala. Informace jsou také přenášeny pomocí 9bitových zpráv, ale nyní to trvá 8 bitů hold a 1 bit - potvrzovací bit otrimannya provádíme data byte kůže. Pokud se kdykoli spojení přeruší a potvrzení nepřijde, master připojí přenos.

    2 Implementace I2C v Arduinu

    Arduino vikorist pro roboty s rozhraním I2C, dva porty. Například analogový port Arduino UNO a Arduino Nano A4 podporuje SDA, analogový port A5 podporuje SCL.


    U ostatních modelů desek je typ připojení následující:

    3 Knihovna "Drát" pro roboty z IIC

    Pro snadnější výměnu dat se zařízeními přes I2C sběrnici byla pro Arduino napsána standardní knihovna Drát. Má následující funkce:

    FunkceÚkol
    začít (adresa) Inicializace knihovny a připojení na I2C sběrnici; Pokud adresa není uvedena, musí být zařízení rozpoznáno poskytovatelem; používá se 7bitové adresování;
    requestFrom() Vikorist používá kabelové zařízení k dodání velkého počtu bajtů z dat;
    začítPřenos (adresa) začátek přenosu dat do určeného zařízení za adresou skladby;
    endTransmission() implementace přenosu dat na slave;
    napsat() zaznamenání údajů zadaných v žádosti;
    dostupný() otočí počet bajtů informací dostupných jako vstup;
    číst() čtení bajtu přenášeného z master na master nebo z master na slave;
    onReceive() označuje funkci, která volá buta, když ovladač zařízení odmítne přenos z mastera;
    NA ZNAMENÍ() Označuje funkci, která je volána, když kabelové zařízení odmítne přenos z podřízeného zařízení.

    4 Nainstaluji připojení I2C na Arduino

    Podívejme se, jak funguje sběrnice I2C s Arduinem.

    Okamžitě dáme dohromady schéma, jako malé. Na základě jasu LED je k dispozici 64-polohový digitální potenciometr AD5171 (div. technický popis), který je připojen na sběrnici I2C. Adresy, pro které se budeme obracet na potenciometr, jsou 0x2c (44 pro desátý systém).


    5 Ovládání zařízení přes sběrnici IIC

    Podívejme se na schémata výměny informací s digitálním potenciometrem AD5171, která jsou uvedena v technickém popisu:


    Kliknutím sem zobrazíte schéma záznamu dat v registru RDAC. Tento registr slouží k ovládání pomocí podpory potenciometru.

    Extrahováno z knihovny "Wire": Zrazka Wire soubor digital_potenciometr. Zajímá mě puzzle Arduino.

    #zahrnout // Zahrnuje byte knihovny "Wire" val = 0; // hodnoty přenesené do potenciometru void setup() ( Wire.begin(); // se připojuje ke sběrnici I2C jako master } void loop() ( Wire.beginTransmission(44); // zahájí komunikaci ze zařízení s I2C adresou "44" (0x2C) Wire.write(byte(0x00)); // vydá instrukci k zápisu registru RDAC Wire.write(val); // nastavení pozice 64polohového potenciometru Wire.endTransmission(); // kompletní přenos I2C val++; // zvýšení hodnoty o 1 if (val == 63) ( // po dosažení maxima potenciometru val = 0; // reset val ) delay(500); }

    Po zapnutí uvidíte, jak se jas LED cyklicky zvyšuje a poté zhasne. Potenciometr je v tomto případě připojen k přídavnému Arduinu přes sběrnici I2C.

    Dostal jsem balíček z Číny obsahující mikroobvod Atmel EEPROM. Chtěl bych se připojit k Arduinu. Nechce ale hotovou knihovnu vůbec zničit, ale začít stavět sám. Tento článek je krátký a nudný a lze jej rozdělit do tří částí:

    • Teorie I2C rozhraní.
    • EEPROM, popisy mých mikroobvodů (AT24C256) a zapojení.
    • Psaní knihovny před prací z paměti.

    Část první, I2C a knihovny „Wire“.

    Protokol sekvenční výměny dat IIC(také tituly I2C- Inter-Integrated Circuits, inter-mikrocircuit connection). Byla vyvinuta společností Philips Semiconductors na počátku 80. let jako jednoduchá 8bitová interní sběrnice pro elektronický systém, který ji řídí. Jak je tedy právo na vikoristannya yogo stát haléře Atmel pharma s názvem yogo TWI, Ale smysl, který se mění.

    Jak to funguje?

    Pro přenos se používají dvě obousměrné přenosové linky. S.D.A.(Serial Data) sériová datová sběrnice SCL(Sériové hodiny) Časování autobusu. Dvě sběrnice jsou vytaženy odpory ke sběrnici pozitivní životnosti. Vysílání/příjem signálů se provádí stisknutím řádku 0, jeden instaluje se za rám pull-up rezistorů.

    Chtěli byste jedno kabelové zařízení ( Mistr), který spouští přenos dat a generuje synchronizační a řídicí signály zařízení ( Otrok), které předávají data vedoucímu. Vzhled zařízení je přiřazena jedinečná adresa, po které je zařízení přesměrováno na novou. Ukázalo se, že vůdce je náš mikrokontrolér a vůdce je naše paměť. Drátové zařízení začne tlačit na pneumatiku SCL na nulu s čistotou zpěvu a pneumatika S.D.A. stiskněte nebo uvolněte několik taktů do písně, přenášejte Single nebo Nulik. Přenos dat začíná signálem START, poté je přeneseno 8 datových bitů a je odeslán 9. bit Podřízené zařízení potvrdí příjem bajtu stisknutím sběrnice. S.D.A. do mínusu . Přenos končí signálem STOP .

    Knihovna "Drát".

    Pro snadnější výměnu dat se zařízeními přes I2C sběrnici byla pro Arduino napsána standardní knihovna Drát jaka Také součástí sady IDE. Má následující hlavní funkce:

    Wire.begin(Adresa)Jedním kliknutím provedete inicializaci a připojení ke sběrnici jako Master nebo Master zařízení. Adresa žádných úloh je připojena jako hlavní zařízení.

    Wire.beginPřenos(adresa) zahájí přenos do I2C zařízení se zadanou adresou.

    Wire.endTransmission() odkazuje na přenos dat do LED. Funkce otočí hodnoty bajtů:

    • 0 - úspěch.
    • 1 data jsou příliš dlouhá na zaplnění přenosové vyrovnávací paměti.
    • 2 — NACK bylo přijato v hodinu přenosu adresy.
    • 3 - NACK přijato za hodinu přenosu dat.
    • 4 - další výhody.

    Wire.write() Nahrávaná data ze zařízení odeslaná do zařízení jsou odeslána do kabelového zařízení nebo vložena do bajtů pro přenos z hlavního zařízení do zařízení. Ve skutečnosti zapisuje data do vyrovnávací paměti. Velikost vyrovnávací paměti 32 bajtů a (minus 2 bajty na adresu, ve skutečnosti 30 bajtů) a vyrovnávací paměť se přenese do funkce Wire.endTransmission().

    • Wire.write(hodnota)- hodnota: přenosová hodnota, jeden bajt.
    • Wire.write(řetězec)-tětiva: pořadí přenosu, sekvence bajtů.
    • Wire.write(data, délka)-Data: pole dat k přenosu, bajtů. délka: počet bajtů k přenosu.

    Wire.read()Čte bajt, což je počet přenosů z řízeného zařízení do hlavního zařízení, nebo libovolný počet přenosů z drátového zařízení do drátového zařízení. To znamená, že bajt je otočen: přijatý bajt.

    Toto jsou hlavní funkce knihovny a na další se podíváme))

    Část přítele, EEPROM.

    EEPROM Elektricky vymazatelná programovatelná paměť pouze pro čtení) - elektricky vymaže PZP (EEPROM), která je přeprogramována, jeden z typů energeticky nezávislých pamětí (jako PROM a EPROM). Paměť tohoto typu může být vymazána a zapomenuta daty až milionkrát.

    Byl mi zaslán hotový modul EEPROM s mikroobvodem AT24C256 od společnosti Atmel o objemu 32 kbytů. Abychom tento zázrak poznali, máme šanci studovat datový list tak velmi nudné a anglické. Takže vidím hotový výsledek mého trápení.

    Vlastnosti:

    • Nízké napětí a standardní životnost. VCC = 1,7V až 5,5V.
    • 400kHz (1,7V) a 1MHz (2,5V, 2,7V, 5,0V) součet synchronizační frekvence.
    • Vitalita: 1 000 000 záznamových cyklů.
    • Vnitřní organizace: 32 768 stran x 8 bitů.

    visnovki:

    • W.P.- Chraňte záznam. Pokud vytvoříte spojení s GND, můžete zaznamenat data na puzzle.
    • A0…A2- Zeptejte se na adresu přílohy.
    • Vcc- Jídlo plus.
    • GND- Jídlo mínus.
    Adresy paměti:

    Tři nohy jsou nastaveny pomocí A0..A2. Pokud je noha přitlačena k Gnd, pak je hodnota bitu 0, pokud do Vcc pak 1. Mikroobvod je vikoristický osmibitová adresa, zbývající bit indikuje volbu operace. Pokud je hodnota bitu vysoká, je zahájena operace čtení, pokud je hodnota nízká (nula), je zahájena operace zápisu.

    Pokud jsou všechny tři piny stisknuty na GND a chceme je zapsat do paměti, budou adresy zařízení vypadat jako 10100000 (knihovna „Wire“ používá 7bitové adresy, vše sbalíme do správného bitu 010100 00 0x50).

    Záznam poct k hádance:

    Pro záznam od začátku se vrátíme do paměti s bitovými Nahrávkami na adrese. Poté se přidají dvě 8bitové adresy (takže máme adresu 0x8000), dále datový bajt a signál STOP. Poté EEPROM vstoupí před interně synchronizovaným cyklem zápisu tWR (Write Cycle Time 5 ms) do energeticky nezávislé paměti. Všechny vstupní signály
    zapnuto pro hodinový cyklus záznamu a EEPROM není správná dokud nebude nahrávání dokončeno.

    Kopeme dále a v datovém listu zjistíme, že paměť mikroobvodů je organizována jako 512 bok po boku 64 byte. Potom můžeme zapsat až 64 bajtů informací na jeden příkaz. U kterého přeneseme všech 64 bajtů informací a teprve poté signál STOP.

    Čtení poct:

    Z přečtení těchto údajů budete mít radost. Paměť podporuje tři možnosti čtení:

    • Přečtěte si přesnou adresu;
    • Přečtěte si adresu Vipadkova;
    • Důsledné čtení;

    Paměť si pamatuje zbývající adresu záznamu a nemění životnost, takže můžeme číst zbývající bajt bez vkládání adresy.

    Musíme číst adresu od začátku poslat příkaz k zápisu a předejte jej na adresu, kterou chcete číst( Nezapomeňte, že adresy se skládají ze dvou 8bitových částí). Poté odešlete příkaz k přečtení a odstranění přečteného bajtu a vše ukončíte příkazem STOP.

    Následné čtení může být dokončeno buď z adresy streamu nebo z výstupní adresy a bude pokračovat, dokud mikrokontrolér nenajde signál STOP. Při změně adresy se paměť vymaže a adresování zmizí.

    No, přišel čas zkusit napsat:
    #zahrnout // Zahrnout knihovnu #define EEPROM_ADDRESS 0x53 // Nastavit adresu slova adresy paměti = 0; // Cudi adresy jsou zaznamenány byte data_send = 170; // Data void setup() ( Wire.begin(); // Inicializuje I2C Serial.begin(9600); Serial.print("Zapsat byte do paměti EEPROM..."); Serial.println (data_send); Wire. beginTransmission(EEPROM_ADDRESS); // Zahájí přenos Wire.write(adresa >> 8); kontrola stavu přenosu.if (status == 0)Serial.println ("Ok"); // zpoždění(10), Wire.beginTransmission(EEPROM_ADDRESS);// Čtení dat z úvodní adresy. (stav == 0)Serial.println("OK"); // zastavení přenosu Wire.requestFrom(EEPROM_ADDRESS, (byte)1); // odeslání příkazu k přečtení jednoho bajtu datového bajtu data = 0; if (Wire.available ()) // kontrola, jaká data se mají číst (data = Wire.read(); // čtení dat) Serial.println (data, DEC); ) void loop() ( )

    Wire.requestFrom(adresa, množství) — Vikory používá mistr k zápisu bajtů z keramického zařízení. Tyto bajty lze odstranit pomocí metod available() a read(). Velikost vyrovnávací paměti je stejných 32 bajtů.

    • adresa : přidám 7bitovou adresu, ze které se budou přijímat bajty;
    • kvantita : počet bajtů k načtení;

    Wire.available()— Otočí počet bajtů dostupných pro extrakci pomocí read().

    No a příklad z paměťového záznamu řádku „Ahoj Word“:

    #zahrnout #define EEPROM_ADDRESS 0x53 slovo adresa = 0; char data_send = "Ahoj Word"; void setup() ( Wire.begin(); // Serial.begin(9600); Serial.print("Zapsat byte do paměti EEPROM..."); Serial.println (data_send); Wire.beginTransmission(EEPROM_ADDRESS); Wire.write(adresa >> 8) Wire.write(data_send)("Načíst bajt z paměti EEPROM..." ); // zastavení přenosu Wire.requestFrom(EEPROM_ADDRESS, (byte)10);<10 ;i++) { if (Wire.available()) { data = Wire.read(); } Serial.write (data); } } void loop() { }

    Organizace paměti:

    Není tedy jasné, co se o tom píše v historických záznamech. Prakticky se snažím odtud dostat. Datasheet říká, že paměť mikroobvodů je organizována jako 512 bok po boku 64 byte. Co to znamená? Pokud chceme zapsat více než 64 bajtů na rámec, řekněme za adresu 0x40 (adresy druhé strany), když adresa přesahuje druhou stranu Lékař pro interní mikroobvody kontaktujte prosím adresu na titulní straně. A bajty požadavků budou zaznamenány na úvodní stránku a data, která tam byla zaznamenána, budou vymazána.

    Pro čtení takových hranic neexistují žádné hranice; datasheet pouze říká, že když dosáhnete koncové adresy, budete automaticky převedeni na začátek (adresy 0x00).

    Proto si myslím, že je to vše. Samozřejmě můžete použít hotovou knihovnu pro EEPROM a myslíte si, že můžete napsat svou vlastní. Seznámili jsme se se základními principy robota.

    V tomto článku jsme se pokusili shromáždit zprávy pro všechny nejoblíbenější knihovny Arduino na jednom místě a také jsme připravili sbírku nejoblíbenějších knihoven. Dříve nebo později bude každý vývojář Arduina čelit potřebě této nebo jakékoli jiné knihovny. Dokonce i hotový kód vikoristannaya dokonce zkracuje hodinu na programování. Doufáme, že informace o populárních knihovnách shromážděné na jednom místě a opatřené zprávami ke stažení a krátkými články o Wikoristanu vám pomohou s vašimi projekty.

    Knihovna Arduino je programový kód, který se neukládá do skic, ale do externích souborů, které lze připojit k vašemu projektu. Knihovna využívá různé metody a datové struktury, které jsou nezbytné pro zjednodušení práce se senzory, indikátory, moduly a dalšími komponentami. Výběr předpřipravených programů usnadní práci na projektech, takže se můžete soustředit na hlavní logiku, aniž byste ztráceli hodiny nečinnou prací.

    Dnes bylo vytvořeno velké množství knihoven, které lze snadno najít a zpřístupnit na internetu. Je důležité, že většina knihoven je distribuována pod svobodnou licencí, takže není třeba hledat „pirátské“ verze. Golovne, tse navchitisya.

    Standardní knihovny Arduino

    Začněte poznávat knihovny nejlépe na oficiálních stránkách, kde najdete obsáhlý seznam standardních modulů a odkazy na oficiální knihovny partnerů.

    Seznam zahrnutých knihoven (všechny dodávané s distribucí Arduino IDE):

    • EEPROM
    • Ethernet / Ethernet 2
    • Firmata
    • Tekutý krystal
    • Servo
    • Software Serial
    • stepper

    Sbírka knihoven v jednom archivu

    Pokud nemáte dostatek času na podrobnou analýzu anonymních stránek a chcete shromáždit vše, co potřebujete k práci s aktuálními zařízeními Arduino, do jednoho archivu, připravili jsme seznam 40 nejoblíbenějších knihoven. Stačí jej rozbalit (složku libraries) ze složky Arduino.

    Knihovny pro obrazovky, indikátory a displeje

    I2C knihovna

    Knihovna je určena pro použití v periferních zařízeních využívajících protokol I2C.

    Vikoristan zadek:

    #ifndef I2C_MASTER_H

    #define I2C_MASTER_H

    void I2C_init (void) – vytvoření objektu, upraveného na správnou frekvenci pro sběrnici.

    uint8_t I2C_start () – spojení navázáno s novým zařízením.

    uint8_t I2C_write() – zápis dat do streamovacího zařízení.

    uint8_t I2C_read_ack() – přečte bajt ze zařízení, zapíše další bajt.

    Knihovna LiquidCrystal

    Standardní knihovna nainstalovaná v Arduino IDE. Navrženo pro použití se vzácnými krystalovými LCD displeji.

    Vikoristan zadek:

    #zahrnout . Abyste se nemuseli starat o psaní, můžete se také připojit přes nabídku Sketch – Import Library – LiquidCrystal.

    Konstruktor třídy je LiquidCristal(…). Argumenty jsou rs, rw, en, do ... d7. První 3 signály jsou RS, RW a Enable. Písmena d označují čísla datových sběrnic, ke kterým je displej připojen.

    void begin(cols, rows) – metoda, která inicializuje rozhraní displeje. Argumenty jsou počet znaků v řádku (cols) a počet řádků (rows). Tato metoda může být nejprve zpochybněna.

    void createChar(num, data) - metoda potřebná pro vytváření koristuvach symbolů.

    Knihovna UTFT

    Standardní knihovna, nezbytná pro roboty Arduino s TFT obrazovkami různých typů. Všechny podporované displeje jsou prezentovány v doprovodném dokumentu s knihovnou.

    Vikoristan zadek:

    #zahrnout

    UTFT(); - Vytvoření kopie UTFT.

    textRus(char*st, int x, int y); – metoda, která umožňuje zobrazit řádek z indikátoru. Například char * dht = "Teplota, C";

    textRus(řetězec st, int x, int y); - Zobrazte řádek z nastavení v parametru. Například g.textRus("Teplota, C", 0, 20);

    Knihovna LedControl

    Umožňuje používat sedmisegmentové displeje, které kombinují pole LED do jedné matice.

    Vikoristan zadek:

    #zahrnout

    LedControl lc1 = LedControl();

    - Vyžadováno pro inicializaci knihovny. Je potřeba zkombinovat čtyři argumenty – počty pinů, ke kterým je displej připojen (první 3 argumenty) a počet připojených čipů.

    writeArduinoOn7Segment() - zobrazí na displeji všechna čísla od 0 do 15 funkce Vikorist setChar() pro znaky a, da setRow() pro vytvoření rozložení pro chybějící znaky.

    LedControl.shutdown() – vypnutí obrazu.

    setIntensity() – ovládání jasu.

    Knihovny pro práci s datem a hodinou Arduino

    Knihovna RTClib

    Knihovna pro práci s hodinami reálného času, která usnadní interakci s Arduinem.

    Vikoristan zadek:

    #zahrnout

    RTC_DS1307 RTC; - Vibrace snímače (v tomto případě DS1307).

    rtc.adjust(DateTime(Datum, Čas)); – úprava času a kalendáře.

    dayOfTheWeek () – zobrazuje den v týdnu. Argument: 0 až 6, 0 – týden.

    Knihovna Timelib

    Umožňuje Arduinu získat informace o datu a hodině v aktuálním okamžiku.

    Vikoristan zadek:

    #zahrnout

    Čas(); - Vytvoření kopie.

    setTime(t); - Je nastaveno na hodinu. Argument t – rok, čas, sekunda, den, měsíc a den.

    timeStatus(); - Uveďte, která hodina je nastavena.

    adjustTime(adjustment); - Je čas to napravit.

    Knihovna Ds1307

    Knihovna pro manuální interakci DS1307 s Arduinem a knihovnou Wire.

    Vikoristan zadek:

    #zahrnout

    třídy DS1307RTC – vytvoření objektu DS1307.

    SetTime() – nastavení času.

    get() – čte RTC, otáčí extrahované datum ve formátu POSIX.

    Set(time_t t) – datum záznamu z RTC

    Knihovna DS 3231

    Přiřazeno k datu a hodině modulu ds3231.

    #include „ds3231.h“

    Hodiny DS3231 (SDA, SCL); – vytvoření objektu DS3231, připojení na hodinovou a datovou linku.

    getTime(); - přečtěte si datum výročí.

    setDate(datum, pondělí, rok); - Stanovené datum.

    Systémové knihovny Arduino

    Knihovna EEPROM

    Standardní knihovny. Využívá pro práci s neenergetickou pamětí (záznam dat, čtení).

    Vikoristan zadek:

    #zahrnout

    EEPROM.read(); - Vytvoření objektu, čtení bytu na adrese z energeticky nezávislé paměti.

    EEPROM.write(adresa, hodnota) – zapíše bajt do energeticky nezávislé paměti.

    EEPROM.put() – záznam řady čísel z plovoucí kómatu.

    EEPROM.get() – čtení řádků plovoucích čísel.

    Knihovní software Serial

    Knihovna, která umožňuje implementovat následná rozhraní z libovolných digitálních pinů. Umožňuje také otevřít řadu následujících portů, které pracují rychlostí až 115 200 baudů.

    #zahrnout

    SoftwareSerial mySerial(RX, TX) – objekt vytvoření, argumenty – základy spojení RX a TX.

    Serial.begin(); – nainstaluje fluiditu na port pro připojení Arduina a počítače.

    mySerial.overflow() – přetečení vstupní vyrovnávací paměti.

    Knihovní matematika

    Obsahuje velké množství matematických funkcí pro práci s plovoucími čísly.

    Vikoristan zadek:

    #zahrnout

    Matematika(); - Vytvoření kopie Math.

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

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

    Plánovač knihovny

    Navrženo pro roboty s Arduino Due, které umožňuje pracovat v režimu multitaskingu. Prozatím je to experimentální knihovna.

    Vikoristan zadek:

    #zahrnout

    plánovač; - Vytvoření kopie.

    Scheduler.startLoop() – umožňuje přidat funkci, která okamžitě ukončí loop().

    yield() – umožňuje přenést zpracování na jiné úkoly.

    Knihovny servomotorů a motorů

    Servo knihovny

    Standardní knihovny. Je nezbytný pro provoz servomotorů a často se používá v robotických projektech s manipulátory.

    Vikoristan zadek:

    #zahrnout

    Servo myservo; - Vytvoření objektu pro servomotor.

    myservo.attach(); - Číslo výstupu, ke kterému je servomotor připojen.

    myservo.write(180, 30, pravda); - Otočit o 180 stupňů, rychlost 30, úplné otočení.

    Knihovní stepper

    Nezbytné pro léčbu krevních unipolárních a bipolárních motorů.

    #zahrnout

    const int stepsPerRevolution = ; – kolikrát motor potřebuje k otočení.

    Stepper myStepper = Stepper(steps, pin1, pin2) – vytvoří instanci třídy ze zadaného počtu kroků a vrcholů, ke kterým je připojen motor.

    Knihovny senzorů Arduino

    Knihovna DHT

    #zahrnout< DHT.h>

    DHT dht(DHTPIN, DHT11); – inicializuje senzor (v případě DHT11).

    dht.begin(); - Spuštění senzoru.

    float t = dht.readTemperature(); - Čtení hodnoty výstupní teploty ve stupních Celsia.

    Knihovna DallasTemperature

    Aplikace pro roboty se senzory Dallas. Funguje současně z knihovny OneWire.

    #zahrnout

    DallasTemperature dallasSensors(&oneWire); - Přenos oneWire objektu do senzorového robota.

    dát do registru.

    printTemperature(sensorAddress); – použije se pro získání aktuální hodnoty teploty.

    Ultrazvuková knihovna

    Robot Arduino bude chráněn ultrazvukovým vibračním senzorem HC-SR04.

    #zahrnout

    Ultrasonic ultrazvuk (tig, echo) – omráčení objektu, argumenty – Trig contact a Echo contact.

    dist = ultrazvuk.vzdálenostRead(); - Určená vzdálenost závisí na objektu. Argument – ​​centimetry (CM) chi palce (INC).

    Timing() – přečte hodnotu pulsu na výstupu Echo a převede ji do požadované číselné soustavy.

    Knihovna ADXL345

    Navrženo pro použití s ​​akcelerometrem ADXL345.

    Vikoristan zadek:

    #zahrnout

    ADXL345_ADDRESS – vytvořený objekt přiřazený k jeho adrese.

    ADXL345_REG_DEVID – identifikace zařízení.

    ADXL345_REG_OFSX – potlačená osa X.

    ADXL345_REG_BW_RATE – podpora rychlosti přenosu dat.

    Knihovna BME280

    Vhodné pro použití s ​​teplotním čidlem a svěrákem BME280.

    Vikoristan zadek:

    #zahrnout

    BME280_ADDRESS – vytvořený objekt BME280, přiřazený k jeho adrese.

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

    getTemperature – posedlost teplotou.

    getPressure – posedlost magickou neřestí.

    Knihovna BMP280

    Vyžaduje se pro roboty se snímačem atmosférického tlaku BMP280.

    Vikoristan zadek:

    #zahrnout

    BMP280_CHIPID – vytvoření instance, vložení adresy.

    getTemperature(float *temp); - udržování extrémní teploty.

    getPressure(float *tlak); - Oříznutí hodnoty svěráku.

    Knihovna BMP085

    Vyžaduje se pro roboty se snímačem svěráku BMP085.

    Vikoristan zadek:

    #zahrnout

    Adafruit_BMP085 bmp; - Vytvoření kopie BMP085.

    dps.init(MODE_ULTRA_HIGHRES, 25000, true); - Vymiryuvannya vice, argument 25000 - výška nad hladinou moře (v tomto případě 250 m nad hladinou moře).

    dps.getPressure(&Pressure); - Svěrák je přidělen.

    Knihovna otisků prstů

    Musíte použít čtečku otisků prstů.

    zadekwikiristannya:

    #zahrnout

    Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); - omráčen objektem Finger. Parametr – odeslaný na stránku pro provoz s UART, před jakýmkoli připojením k modulu.

    prst.begin(); - Inicializace modulu pro konečky prstů.

    Func_sensor_communication(); - Klikněte na modul snímače prstu.

    Komunikační knihovny

    Knihovní drát

    Vyžaduje se pro provoz s bi-wired rozhraním I2C.

    Vikoristan zadek:

    #zahrnout

    Wire.begin() – inicializace knihovny, připojené na I2C sběrnici.

    Wire.requestFrom() – naplní master bajty z hardwarového zařízení.

    Wire.beginTransmission() – začátek přenosu do zařízení.

    Knihovna Irremote

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

    Vikoristan zadek:

    #zahrnout

    IRrecv irecv(RECV_PIN); - PIN, před přijetím jakéhokoli připojení ІЧ.

    SetPinAndButton(int ir1, int ir2, int pin) - umožňuje nakonfigurovat výstup, který má být požadován, když jsou zadány hodnoty ir1, ir2.

    GSM knihovna

    Vyžadováno pro připojení přes GSM kartu se sítí GSM/GRPS. S touto pomocí můžete provádět operace, které zahrnují používání GSM telefonu, vyřizování hlasových hovorů a připojení k internetu přes GRPS.

    Vikoristan zadek:

    #zahrnout

    GSM GSMAccess – inicializuje instanci třídy.

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

    GPRS – nastavení internetového připojení.

    GSM – připojení pomocí radiomodemu.

    Knihovna RFID

    Vyžaduje se pro připojení Arduina a modulu RFID.

    Vikoristan zadek:

    #zahrnout

    RFID rfid(SS_PIN, RST_PIN); - Vytvoření instance rfid, argumenty - piny, k libovolnému modulu připojení.

    rfid.init(); - Inicializace modulu RFID.

    Knihovna MFRC 522

    Vyžaduje se pro připojení Arduina a modulu MFRC522.

    Vikoristan zadek:

    #zahrnout

    MFRC522 mfrc522(SS_PIN, RST_PIN); – vytvořená instance MFRC522, argumenty udávají výstup, ke kterému je modul připojen.

    mfrc522.PCD_Init(); - Inicializace MFRC522.

    Knihovna Ethershield

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

    Vyžaduje se pro připojení Arduina k místní síti nebo internetu. Knihovna již není podporována, nová verze Ethercard. K dispozici je také standardní ethernetová knihovna.

    Vikoristan zadek:

    #include "EtherShield.h"

    #zahrnout

    EtherShield es = EtherShield(); – příprava webové stránky

    ether.begin(velikost Ethernetu::vyrovnávací paměť, mymac,); - Začátek práce, argumenty - Mac adresy a číslo portu, ke kterému je připojen výstup CS.

    Knihovna Nrf24l01

    Vyžaduje se pro roboty s rádiovým modulem RF24.

    Vikoristan zadek:

    #include „RF24.h“

    RF24 - Konstruktor vytvoří novou instanci ovladače. Před výběrem modulu musíte vytvořit instanci a zadat pin před jakýmkoli připojením čipu (_cepin: Povolit pin modulu, cspin: Vyberte pin modulu).

    Begin – začátek robotického čipu.

    setChannel – RF komunikační kanál.

    setPayloadSize – nastavení pevné velikosti přenosu.

    getPayloadSize – výběr pevné velikosti.

    Knihovna TinyGPS

    Je nutné si přečíst upozornění GPGGA a GPRMC. Pomáhá číst údaje o poloze, datu, hodině, nadmořské výšce a dalších parametrech.

    Vikoristan zadek:

    #zahrnout

    TinyGPS GPS; - Vytvoření instance TinyGPS.

    encode() – odesílání sekvenčních dat objektu, jeden znak po druhém.

    gps.stats() – metoda statistiky. Ukazuje, zda byla nebo nebyla odstraněna správná data.

    Knihovny v Arduino IDE

    Mezi rozmanitostí knihoven lze vidět 3 hlavní skupiny:

    • Jedná se o knihovny, které jsou zpočátku instalovány v jádru Arduino IDE. Není nutné je stahovat nebo instalovat dodatečně, jsou k dispozici ke stažení z programu ihned po zahájení procesu vývoje.
    • Další knihovny jsou knihovny, které je třeba získat samostatně. Tento typ knihovny obsahuje kolekci senzorů, senzorů a dalších komponent pro usnadnění práce Arduina.
    • Zpožděné knihovny – jsou instalovány jako postranní panel k doplňkové knihovně, která s ní přímo nepracuje.

    Nejjednodušší způsob, jak pracovat s knihovnami v Arduinu, je využít možnosti středu Arduino IDE. Promluvme si o tom v oficiálních statistikách.

    LCD displej- Častý host projektů Arduino. Ve skládacích obvodech však můžeme mít problém s nedostatkem Arduino portů kvůli nutnosti připojení obrazovky, která má spoustu kontaktů. Cesta z této situace může být I2C/IIC Adaptér, který připojuje prakticky standardní obrazovku Arduino 1602 k deskám Uno, Nano nebo Mega s dalšími 4 piny. Tento článek ukazuje, jak můžete propojit LCD obrazovku s rozhraním I2C, jak získat přístup ke knihovnám, napsat krátký příklad a podívat se na typické aplikace.

    Displej z tekutých krystalů LCD 1602 Je to první volba pro zobrazení řad symbolů v různých projektech. Je to levné, s různými úpravami s různými barvami podsvícení snadno vytvoříte hotové knihovny pro skicu Arduino. Ale od neohroženého krátkotrvajícího Tsoogo Ekran є tato skutečnost, zobrazení 16. května digiribru Visnovkiv, s Yakiki -Ism alespoň 6. Vikoristán Tsoogo LCD bez I2C SERYOZHEND na Arduino UNO Poen Nano. Pokud nejsou žádné kontakty, budete si muset koupit desku Arduino Mega nebo chránit kontakty, včetně připojení displeje přes i2c.

    Krátký popis LCD 1602 pinů

    Podívejme se blíže na technologii LCD1602:

    Kůže z vinné révy má svůj vlastní význam:

    1. Uzemnění GND;
    2. Kharchuvannya 5;
    3. Nastavení kontrastu monitoru;
    4. Tým, data;
    5. Zapisování a čtení dat;
    6. Umožnit;

    7-14. Datové linky;

    1. Plus podpora;
    2. Mínus osvětlení.

    Specifikace displeje:

    • Symbolický typ zobrazení - možnost zavedení symbolů;
    • LED podsvícení;
    • Ovladač HD44780;
    • Živé napětí 5V;
    • Formát 16x2 znaků;
    • Rozsah provozních teplot: -20°С až +70°С, rozsah skladovacích teplot: -30°С až +80°С;
    • Podívám se kolem 180 stupňů.

    Schéma připojení LCD k desce Arduino bez i2C

    Standardní schéma pro připojení monitoru přímo k mikrokontroléru Arduino bez I2C vypadá takto.

    Vzhledem k velkému počtu kontaktů, které jsou připojeny, nemusí být dostatek místa pro přijetí požadovaných prvků. I2C přepínač změní počet šipek na 4 a počet obsazených kolků na 2.

    Kde koupit LCD obrazovky a štíty pro Arduino

    LCD obrazovka 1602 (a verze 2004) je velmi oblíbená, takže ji snadno najdete jak v místních internetových obchodech, tak na zahraničních trzích. Pojďme se podívat na dostupné možnosti:

    Modul LCD1602+I2C s modrou obrazovkou v kombinaci s Arduinem Jednoduchý displej LCD1602 (zelené podsvícení) levnější než 80 rublů Velká obrazovka LCD2004 s I2C HD44780 pro Arduino (modré a zelené podsvícení)
    Displej 1602 s adaptérem IIC a modrými světly Další verze LCD1602 s pájeným I2C modulem Port IIC/I2C/TWI/SPI modul adaptéru pro obrazovku 1602, vhodný pro Arduino
    Displej s RGB přepínači! LCD 16×2 + klávesnice + Buzzer Shield pro Arduino Štít pro Arduino s tlačítky a obrazovkou LCD1602 LCD 1602 LCD displej pro 3D tiskárnu (Smart Controller pro RAMPS 1.4, Text LCD 20×4), modul čtečky karet SD a MicroSD

    Popis protokolu I2C

    Nejprve si krátce promluvme o připojení displeje k Arduinu pomocí adaptéru i2c. Pojďme si krátce promluvit o samotném protokolu i2C.

    I2C/IIC(Inter-Integrated Circuit) je protokol, který byl původně vytvořen pro připojení integrovaných obvodů uprostřed elektronického zařízení. Design patří firmě Philips. Protokol i2c je založen na 8bitové sběrnici vicorstan, která je nutná pro propojení bloků v elektronice, která jej řídí, a na adresovacím systému, který lze připojit po stejných vodičích zařízení coma. Jednoduše dodáváme data do toho či onoho zařízení a k datovým paketům přidáváme identifikátor požadovaného prvku.

    Nejjednodušší obvod I2C pojme jedno kabelové zařízení (obvykle mikrokontrolér Arduino) a mnoho zařízení (například LCD displej). Každé zařízení má adresu v rozsahu od 7 do 127. Dvě zařízení se stejnou adresou nemusí být ve stejném obvodu.

    Deska Arduino podporuje i2c na hardwarové úrovni. Pro připojení zařízení pomocí tohoto protokolu můžete použít kolíky A4 a A5.

    V robotu I2C můžete vidět řadu výhod:

    • Práce vyžaduje minimálně 2 linky – SDA (datová linka) a SCL (synchronizační linka).
    • Připojení velkého počtu kabelových zařízení.
    • Změna hodiny neklidu.
    • K ovládání celé sady zařízení je zapotřebí pouze jeden mikrokontrolér.
    • Libovolný počet mikroobvodů, které jsou připojeny k jedné sběrnici, je obklopen pouze hraniční kapacitou.
    • Vysoká úroveň ukládání dat pomocí speciálního filtru potlačuje rozstřiky vznikající v obvodech.
    • Jednoduchý postup pro diagnostiku vzniklých poruch a jejich odstranění.
    • Sběrnice je již integrována do samotného Arduina, není tedy potřeba rozhraní sběrnice dále rozšiřovat.

    Nedoliky:

    • Základní předpětí linky je 400 pF.
    • Je důležité naprogramovat řadič I2C, protože na sběrnici je řada různých zařízení.
    • U velkého počtu zařízení je obtížné lokalizovat poruchu, protože jedno z nich automaticky nainstaluje nízkoúrovňový faktor.

    i2c modul pro LCD 1602 Arduino

    Nejlepší a nejsnadnější způsob, jak nainstalovat i2c displej do Arduina, je zakoupení hotové obrazovky s vestavěným protokolem. Ale takové obrazovky ten smrad nevydrží, není to levné. A osa různých standardních obrazovek již vytvořila velkou sílu. Proto je dnes nejdostupnější a nejoblíbenější možností nákup a výměna sousedního modulu I2C - adaptéru, který vypadá takto:

    Na jedné straně modulu jsou i2c piny - zem, životnost a 2 pro přenos dat. Z jiného adaptéru použijeme růže vnějšího života. A na desce je samozřejmě holé dno, navíc je modul připájen ke standardním součástkám obrazovky.


    Pro připojení k platbě Arduino použijte odhlášení i2c. V případě potřeby připojíme externí napájení pro osvětlení. Pomocí vestavěného trim rezistoru můžeme upravit nastavení kontrastu J

    Na trhu najdete moduly LCD 1602 s pájenými adaptéry, jejich instalace je maximálně zjednodušena. Pokud jste si koupili stejný adaptér, budete jej muset k modulu předem připájet.

    Připojení obrazovky RK k Arduinu přes I2C

    K připojení potřebujete samotnou desku Arduino, displej, breadboard, konektory a potenciometr.

    Pokud používáte speciální adaptér i2c, budete jej muset nejprve připájet k modulu obrazovky. Je důležité mít slitování, můžete se zapojit do takového plánu.


    Před zaplacením dalších čtyř šipek je připojen RCD monitor s podporou i2c - dvě šipky pro data, dvě šipky pro život.

    • Připojení GND je spojeno s GND na desce.
    • VCC je na 5V.
    • SCL je připojen na pin A5.
    • SDA je připojen na pin A.

    To je vše! Dlouhé sítě cest, ve kterých je snadné se ztratit. Veškerou složitost implementace protokolu i2C můžeme v tomto případě jednoduše svěřit knihovnám.

    Knihovny pro roboty s i2c LCD displejem

    Pro komunikaci mezi Arduinem a LCD 1602 přes I2C sběrnici budete potřebovat alespoň dvě knihovny:

    • Knihovna Wire.h pro práci s I2C je již součástí standardního programu Arduino IDE.
    • Knihovna LiquidCrystal_I2C.h, která obsahuje širokou škálu příkazů pro ovládání monitoru přes I2C sběrnici, umožňuje vytvořit jednodušší a kratší skicu. Je nutné dodatečně nainstalovat knihovnu Po připojení obrazovky je potřeba nainstalovat knihovnu LiquidCrystal_I2C.h

    Po připojení všech potřebných knihoven ke skice vytvoříme objekt a můžeme upravit jeho funkce. Pro testování je důležité použít standardní skicu na zadku.

    #zahrnout #zahrnout // Připojení knihovny //#include // Připojení alternativní knihovny LiquidCrystal_I2C lcd(0x27,16,2); // Pokazum I2C adresa (Night -shine), já jsem parametr Ekran (v LCD 1602 - 2 řádky 16. symbolů v skinu // Liquidcrystal_pf8574 LCD (0x27); // Wareant pro nastavení Bigblastic PCF8574 VOOID (LCD) (LCD .init ( ); // Inicializace displeje lcd.backlight(); // Připojení displeje lcd.setCursor(0,0); // Umístěte kurzor na začátek prvního řádku lcd.print ("Ahoj" .setCursor(0,1) // Umístěte kurzor na začátek dalšího řádku lcd.print("ArduinoMaster" // Napište text na jiný řádek ) void loop() ( ));

    Popis funkcí a metod knihovny LiquidCrystal_I2C:

    • home() a clear() – první funkce umožňuje otočit kurzor do horní části obrazovky a zároveň zobrazit vše, co bylo předtím na monitoru.
    • write(ch) – umožňuje napsat na obrazovku jeden znak ch.
    • kurzor() a noCursor() – zobrazí/skryje kurzor na obrazovce.
    • blink() a noBlink() – kurzor bliká/nebliká (pokud bylo jeho zobrazení dříve povoleno).
    • display() a noDisplay() – umožňuje připojit/zapnout displej.
    • scrollDisplayLeft() a scrollDisplayRight() – posouvá obrazovku o jeden znak pro levou/pravou ruku.
    • autoscroll() a noAutoscroll() – umožňuje zapnout/vypnout režim autoscroll. Pro který režim vzhledu se nový symbol zaznamená na stejné místo, které bylo dříve napsáno na obrazovce.
    • leftToRight() a rightToLeft() – Přímé vložení zobrazeného textu – zleva doprava nebo zprava doleva.
    • createChar(ch, bitmap) – vytvoří znak s kódem ch (0 – 7) pomocí pole bitmapových bitmap k vytvoření černých a bílých bodů.

    Alternativní knihovna pro roboty s i2c displejem

    V některých případech, kdy dojde k poškození přiřazené knihovny se zařízeními vybavenými řadiči PCF8574, může dojít k chybám. Alternativou k této možnosti je knihovna LiquidCrystal_PCF8574.h. Rozšiřuje LiquidCrystal_I2C, což není příčinou problémů viktoriánů.

    Problémy s připojením i2c LCD displeje

    Pokud po kliknutí na skicu nevidíte na displeji požadovanou zprávu, zkuste kliknout na tyto akce.

    V první řadě můžete zvýšit nebo změnit kontrast monitoru. Postavy často jednoduše nejsou vidět přes režim kontrastu a osvětlení.

    Pokud to nepomůže, zkontrolujte, zda jsou kontakty správně připojeny a zda je připojeno živé napájení. Pokud jste použili kompatibilní adaptér i2c, znovu zkontrolujte pájecí bod kontaktů.

    Dalším častým důvodem chybějícího textu na obrazovce mohou být nesprávné adresy i2c. Zkuste si v náčrtech zapamatovat adresu zařízení s 0x27 0x20 nebo 0x3F. Různí distributoři mohou mít různé adresy pro platbu. Pokud to nepomůže, můžete spustit náčrt skeneru i2c, který se podívá na všechna připojení zařízení a určí jejich adresy pomocí metody hrubé síly. Skica zadku skeneru i2c.

    Pokud obrazovka stále nefunguje, zkuste připájet adaptér a připojit LCD jako obvykle.

    Višnovok

    V tomto článku jsme se podívali na hlavní napájecí zdroj pro LCD obrazovku ve skládacích Arduino projektech, pokud potřebujeme ušetřit peníze navíc na desce. Jednoduchý a levný adaptér i2c umožňuje připojit obrazovku 1602 LCD pouze pomocí 2 analogových kolíků. Ve více situacích můžete být ještě důležitější. Poplatek za dostupnost - nutnost použití přídavného modulu - převodníku a knihovny. Cena za flexibilitu není dle našeho názoru nijak vysoká a doporučujeme tuto flexibilitu v projektech využít.

    Popis knihovny Wire

    Tato knihovna vám umožňuje komunikovat se zařízeními I2C/TWI. Na deskách Arduino s rozložením R3 (design 1.0) jsou SDA (datová linka) a SCL (hodinová linka) umístěny na pinech pinu AREF. Arduino Due má dvě rozhraní I2C/TWI: SDA1 a SCL1 jsou umístěny na kolíku AREF a další linky jsou umístěny na kolících 20 a 21.

    Níže uvedená tabulka ukazuje odinstalaci TWI na různých deskách Arduino.

    Počínaje Arduino 1.0 tato knihovna zavádí funkce Stream, takže funguje skvěle s jinými knihovnami pro čtení/zápis. Tímto způsobem jsou send() a accept() nahrazeny read() a write().

    Poznámka

    Najděte 7bitové a 8bitové verze adresy I2C. 7 bitů identifikuje zařízení a 8. bit udává, zda se zařízení zapisuje nebo čte. Knihovna Wire obsahuje 7bitové adresy. Pokud máte technický popis nebo příklad kódu, který navrhuje 8bitové adresy, budete muset vyhodit nízký bit (pro zničení hodnoty o jeden bit pravotočivým krokem), snížit adresu z 0 na 127. , adresy od 0 do 7 nejsou vikorizovány, fragmenty jsou rezervovány, první adresa, kterou lze vybrat, je 8. Vezměte prosím na vědomí, že při zapojování pinů SDA/SCL je nutné vytáhnout odpory. Zpráva je k údivu nad zadkem. Na desce MEGA 2560 jsou rezistory, které je třeba vytáhnout na piny 20 a 21.

    Popis metod

    Wire.begin()

    Popis

    Inicializuje Wire knihovnu a připojuje se ke sběrnici I2C jako master nebo leader. Zpravidla můžete volat pouze jednou.

    Syntax

    Wire.begin(adresa)

    Parametry

    adresa: 7bitová adresa přiřazená zařízení (není požadováno); Pokud nejsou žádné úlohy, je deska připojena ke sběrnici jako master.

    Smysl toho, co se otočí

    zadek

    Nedopalky pro keramické zařízení jsou úžasné v nedopalcích metod onReceive() a onRequest(). Nedopalky pro kabelová zařízení se liší od nedopalků k jiným metodám. .

    Wire.requestFrom()

    Popis

    Vikory používá master k zápisu bajtů z keramického zařízení. Tyto bajty lze odstranit pomocí metod available() a read().

    Pokud je tento argument pravdivý, pak requestFrom() po zapnutí vydá upozornění STOP a zavolá sběrnici I2C.

    Pokud je tento argument nepravdivý, pak requestFrom() vydá po požadavku oznámení RESTART. Pneumatika nefunguje, což brání dalšímu zařízení-master dostat se mezi spoje. To umožňuje jednomu kabelovému zařízení vysílat řadu napájecích vstupů, dokud nebude ovládat sběrnici.

    Syntax

    Wire.requestFrom(adresa, množství)

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

    Parametry

    • adresa: přidám 7bitovou adresu, ze které se budou přijímat bajty;
    • kvantita: počet bajtů k načtení;
    • stop: booleovský. true vynutí upozornění STOP po požadavku. false vynutí oznámení RESTART po požadavku, čímž se uloží aktivní připojení.
    Smysl toho, co se otočí

    byte: počet bajtů otočených podle zadaného zařízení.

    zadek

    Wire.beginTransmission()

    Popis

    Zahájí přenos do I2C zařízení se zadanou adresou. Poté, co je pomocí funkce write() specifikována sekvence přenosových bajtů, je přenos dokončen pomocí volání endTransmission().

    Syntax

    Wire.beginPřenos(adresa)

    Parametry

    adresa: Přidám 7bitovou adresu, protože je potřeba přenášet data.

    Smysl toho, co se otočí

    zadek

    Wire.endTransmission()

    Popis

    Dokončí přenos do zařízení, které bylo vytištěno pomocí metody beginTransmission() a přenese bajty, které byly odeslány do zařízení pomocí metody write().

    Pro použití s ​​většinou I2C zařízení, počínaje Arduinem 1.0.1, requestFrom() přebírá argument booleovskému datovému typu, který mění jeho chování.

    Pokud je tento argument pravdivý, pak requestFrom() po přenosu vydá oznámení STOP a uvolní sběrnici I2C.

    Pokud je tento argument nepravdivý, pak requestFrom() vydá po přenosu oznámení RESTART. Pneumatika nefunguje, což brání dalšímu zařízení-master dostat se mezi spoje. To umožňuje jednomu kabelovému zařízení vysílat řadu převodových stupňů při ovládání sběrnice.

    Teoreticky je tento argument starší než pravdivý.

    Syntax

    Wire.endTransmission()

    Wire.endTransmission(stop)

    Parametry

    stop: booleovský. true force upozornění STOP po přenosu. false vynutí upozornění RESTART po přenosu, čímž se uloží aktivní spojení.

    Smysl toho, co se otočí

    byte , který označuje režim přenosu:

    • 0: úspěch;
    • 1: k naplnění přenosové vyrovnávací paměti je potřeba více dat;
    • 2: NACK přijato v hodinu přenosu adresy;
    • 3: NACK přijato v hodinu přenosu dat;
    • 4: reshta promine.
    zadek

    Podívejte se na příklad metody write().

    Wire.write()

    Popis

    Zapisuje data ze zadaného zařízení do vstupního zařízení nebo nastavuje bajty pro přenos z hlavního zařízení do určeného zařízení (mezi voláním beginTransmission() a endTransmission()).

    Syntax

    Wire.write(hodnota)

    Wire.write(řetězec)

    Wire.write(data, délka)

    Parametry

    • hodnota: hodnota přenosu, jeden bajt.
    • řetězec: pořadí přenosu, sekvence bajtů.
    • data: pole přenosových dat, bajtů.
    • délka: počet bajtů k přenosu.
    Smysl toho, co se otočí

    byte: write() otočí počet zapsaných bajtů, i když čtení některých z nich není obtížné.

    Zadek #zahrnout byte val = 0; void setup() ( Wire.begin(); // připojení ke sběrnici i2c ) void loop() ( Wire.beginTransmission(44); // přenos do zařízení #44 (0x2c) // adresa zařízení pro úkoly v technický popis Wire. write(val) // odešlete hodnotu byte Wire.endTransmission(); // přeskočíte hodnotu ( val = 0; / / začátek od klasu) zpoždění (500);

    Wire.available()

    Popis

    Otočí počet bajtů, které lze načíst pomocí read(). Tato metoda musí být volána na drátovém zařízení po volání requestFrom() nebo na podřízeném zařízení uprostřed volání onReceive().

    Syntax

    Wire.available()

    Parametry

    Smysl toho, co se otočí

    Počet bajtů dostupných pro čtení.

    zadek

    Před metodou read() si dejte pozor.

    Wire.read()

    Popis

    Přečte bajt, který je odeslán z odeslaného zařízení hostiteli po zavolání requestFrom() nebo bajt, který je odeslán z odeslaného zařízení odeslanému.

    Syntax

    Parametry

    Smysl toho, co se otočí

    byte: červový bajt akceptací.

    Zadek #zahrnout byte val = 0; void setup() ( Wire.begin(); // připojení ke sběrnici i2c (adresy pro master nejsou povinné) Serial.begin(9600); // nastavení sériového portu pro výstup ) void loop() ( Wire .requestFrom( 2, 6);// dodá 6 bajtů ze zadaného zařízení #2 while(Wire.available()) // lze odeslat méně než požadované zařízení (char c = Wire.read(); // přijmout bajt jako sériový znak .print (c) // zabalit symbol ) delay(500);

    Wire.setClock()

    Popis

    Mění taktovací frekvenci komunikace na sběrnici I2C. Zařízení I2C nemají minimální pracovní frekvenci hodin, která je obvykle 100 kHz.

    Syntax

    Wire.setClock(clockFrequency)

    Parametry

    clockFrequency: hodnota frekvence (v hertzech) hodinového signálu. Akceptované hodnoty jsou 100 000 (standardní režim) a 400 000 (švédský režim). Každý procesor také podporuje 10 000 (nízkorychlostní režim), 1 000 000 (vysokorychlostní plus režim) a 3 400 000 (vysokorychlostní režim). Abyste se ujistili, že je požadovaný režim podporován, přejděte do dokumentace pro konkrétní procesor.

    Smysl toho, co se otočí

    Wire.onReceive()

    Popis

    Registruje funkci, která bude volána, když zařízení přijme přenos od mastera.

    Syntax

    Wire.onReceive(handler)

    Parametry

    handler: funkce, která bude volána, když zařízení přijme data; Musíte přijmout jeden parametr int (počet bajtů přečtených z hlavního serveru) a nic neotáčet, pak:

    void myHandler(int numBytes)

    Smysl toho, co se otočí

    zadek

    #zahrnout void setup() ( Wire.begin(8); // připojení ke sběrnici i2c s adresou #8 Wire.onReceive(receiveEvent); // registrace subsenzoru Serial.begin(9600); // konfigurace sériového portu pro zobrazení ) void loop() ( delay(100); ) // funkce, která se ukončí okamžitě, když jsou data přijata z masteru // tato funkce je registrována jako datový procesor, watch setup() void acceptEvent(int howMany) ( while (1< Wire.available()) // пройтись по всем до последнего { char c = Wire.read(); // принять байт как символ Serial.print(c); // напечатать символ } int x = Wire.read(); // принять байт как целое число Serial.println(x); // напечатать число }

    Wire.onRequest()

    Popis

    Registruje funkci, která bude volána, když master požaduje data z určeného zařízení.

    Syntax

    Wire.onRequest(handler)

    Parametry

    handler: funkce, která se musí volat, nepřijímá parametry a nic neotáčí, takže:

    void myHandler()

    Smysl toho, co se otočí

    zadek

    Kód pro desku Arduino, která funguje jako zařízení:

    #zahrnout void setup() ( Wire.begin(8); // připojení ke sběrnici i2c s adresou #8 Wire.onRequest(requestEvent); // registrace procesoru požadavku ) void loop() ( delay(100); ) // funkce, Jakmile je master // dotazován na data // tato funkce je registrována jako pollster, viz setup() void requestEvent() ( Wire.write("hello"); // zasílání upozornění )