kurių nominalai svyruoja nuo 10 omų iki 1 MOhm);

  • 2 rezistoriai po 4,7 kOhm (iš to paties komplekto);
  • spochni smiginis (pavyzdžiui, ašis yra gera);
  • Kompiuteris su Arduino IDE.
  • 1 apibūdinimas I2C sąsaja

    Nuosekliojo ryšio protokolas IIC (dar vadinamas I2C – Inter-Integrated Circuits) duomenims perduoti naudoja dvi dvikryptes ryšio linijas, vadinamas nuosekliąja duomenų magistrale. SDA (serijiniai duomenys) ta padanga yra tapusi SCL (serijinis laikrodis). Taip pat yra dvi gyvenimo eilutės. SDA ir SCL magistralės ištraukiamos iki gyvybės magistralės per rezistorius.

    Norėčiau tokį turėti laidinis įrenginys (pagrindinis) Tai inicijuoja duomenų perdavimą ir generuoja sinchronizavimo signalus. Priemonės taip pat įrenginių valdymas (vergas), kurios perduoda duomenis lyderiui. Prietaiso odai priskiriamas unikalus adresas, po kurio įrenginys nukreipiamas į naują. Prietaiso adresai nurodyti pase (duomenų lape). Prie vienos I2C magistralės galima prijungti iki 127 įrenginių, priklausomai nuo laidų skaičiaus. Tada prie autobuso galima prijungti robotus. Vaughn skatina karštą ryšį.

    Greitai pažvelkime į I2C protokolo keitimosi diagramą. Yra keletas variantų, pažvelkime į vieną iš platesnių. Paspartinkite su loginiu analizatoriumi, prijungtu prie SCL ir SDA magistralių.

    Meistras inicijuoja mainus. Šiuo tikslu VIN pradeda generuoti laikrodžio impulsus ir siunčia juos SCL linija 9 vienetų pakuotėje. Tuo pačiu metu rodoma SDA duomenų eilutė Pridedu adresus, todėl būtina įdiegti nuorodas, kurios yra laikomos pirmaisiais 7 laikrodžio impulsais (iš adresų diapazono: 2 7 = 128 minus nulis adresų). Įžeidžiantis gyvenvietės mūšis yra operacijos kodas(skaitykite arba rašykite) ir dar vienas dalykas - patvirtinimo bitas(ACK), kad patvirtintumėte, jog įrenginys gavo užklausą. Jei patvirtinimo negausite, mainai bus baigti. Arba meistras ir toliau versis save vėl klausti.

    Tai pavaizduota žemiau.. Pavyzdžiui, pirmoje fazėje reikia valdyti įrenginį nuo padangos. Matyti, kad pagrindinis kompiuteris bando užmegzti ryšį iš įrenginio, kurio adresas yra 0x27, bet neatmeta patvirtinimo (NAK). Mainai baigsis.


    Dabar prisijungiame prie įrenginių I2C magistralės ir kartojame operaciją. Situacija pasikeitė. Pirmasis paketas su adresu gavo patvirtinimą (ACK), kaip buvo įvestas. Mainai tęsėsi. Informacija taip pat perduodama naudojant 9 bitų pranešimus, tačiau dabar tam reikia 8 bitų duoklė ir 1 bitas - patvirtinimo bitas otrimannya atliekame odos baitų duomenis. Jei bet kuriuo metu ryšiai nutrūksta ir patvirtinimas negauna, kapitonas prisega transmisiją.

    2 I2C įgyvendinimas Arduino

    Arduino vikorist robotams su I2C sąsaja, dviem prievadais. Pavyzdžiui, Arduino UNO ir Arduino Nano analoginis prievadas A4 palaiko SDA, analoginis prievadas A5 palaiko SCL.


    Kitų plokščių modelių jungčių tipas yra toks:

    3 biblioteka "Laidas" robotams z IIC

    Kad būtų lengviau keistis duomenimis su įrenginiais per I2C magistralę, „Arduino“ buvo parašyta standartinė biblioteka Viela. Jis turi šias funkcijas:

    FunkcijaUžduotis
    pradžia (adresas) Bibliotekos inicijavimas ir prijungimas prie I2C magistralės; Jei adresas nenurodytas, teikėjas turi atpažinti įrenginį; naudojamas 7 bitų adresavimas;
    prašymas nuo() „Vikorist“ naudoja laidinis įrenginys, kad paduotų daug baitų iš duomenų;
    startTransmission (adresas) duomenų perdavimo į nurodytą įrenginį už dainos adreso pradžia;
    endTransmission () duomenų perdavimo vergui įgyvendinimas;
    rašyti () prašyme įrašytų duomenų įrašymas;
    prieinama () sukasi informacijos baitų skaičių, turimą kaip įvestį;
    skaityti () nuskaityti baitą, perduodamą iš pagrindinio pagrindinio arba iš šeimininko į pavaldinį;
    onReceive () nurodo funkciją, kuri iškviečia buta, kai įrenginio tvarkyklė atmeta perdavimą iš pagrindinio;
    pageidaujant() Nurodo funkciją, kuri iškviečiama, kai laidinis įrenginys atmeta perdavimą iš pavaldinio.

    4 Sumontuosiu I2C jungtisį Arduino

    Pažiūrėkime, kaip I2C magistralė veikia su Arduino.

    Iš karto sudarykime diagramą, kaip mažą. Remiantis šviesos diodo ryškumu, yra 64 padėčių skaitmeninis potenciometras AD5171 (Div. Technical Description), kuris yra prijungtas prie I2C magistralės. Adresai, dėl kurių kreipsimės į potenciometrą, yra 0x2c (dešimtajai sistemai – 44).


    5 Įrenginio valdymas per IIC autobusą

    Pažiūrėkime į techniniame aprašyme pateiktas informacijos mainų su skaitmeniniu potenciometru AD5171 diagramas:


    Spustelėkite čia, norėdami pamatyti duomenų įrašymo į registrą schemą RDAC. Šis registras naudojamas valdymui potenciometro pagalba.

    Ištraukta iš „Wire“ bibliotekos: Zrazka Wire failas skaitmeninis_potenciometras. Domina Arduino galvosūkis.

    #įtraukti // Apima "Wire" bibliotekos baitą val = 0; // reikšmės, perkeltos į potenciometrą negaliojantis nustatymas () ( Wire.begin(); // prisijungia prie I2C magistralės kaip pagrindinis } void loop() ( Laidas.beginTransmission(44); // pradeda ryšį iš įrenginio su I2C adresu "44" (0x2C) Wire.write(byte(0x00)); // duoti nurodymą rašyti RDAC registrą Wire.write(val); // nustatyti 64 pozicijų potenciometro padėtį Wire.endTransmission(); // užbaigti I2C perdavimo val++; // increment val 1 if (val == 63) ( // pasiekus potenciometro maksimumą val = 0; // reset val ) delay(500); }

    Įjungus pamatysite, kaip LED ryškumas cikliškai didėja, o paskui užgęsta. Tokiu atveju potenciometras per I2C magistralę prijungiamas prie papildomo Arduino.

    Iš Kinijos gavau paketą su Atmel EEPROM mikroschema. Norėčiau prisijungti prie Arduino. Bet jis visai nenori griauti paruoštos bibliotekos, o pradėti kurti pats. Šis straipsnis yra trumpas ir varginantis, jį galima suskirstyti į tris dalis:

    • I2C sąsajos teorija.
    • EEPROM, mano mikroschemų (AT24C256) ir jungčių aprašymai.
    • Rašyti biblioteką prieš dirbant iš atminties.

    Pirmosios, I2C ir „Wire“ bibliotekos dalis.

    Nuosekliojo apsikeitimo duomenimis protokolas IIC(taip pat pavadinimai I2C- Integruotosios grandinės, mikroschemų jungtis). Devintojo dešimtmečio pradžioje jį sukūrė „Philips Semiconductors“ kaip paprastą 8 bitų vidinę magistralę, skirtą ją valdančiai elektronikos sistemai. Taigi, kaip yra teisė į vikoristannya yogo kainuoja centus Atmel pharma vadinamas yogo TWI, Ale kurio pojūtis keičiasi.

    Kaip tai veikia?

    Perdavimui naudojamos dvi dvikryptės perdavimo linijos. S.D.A.(Serial Data) nuoseklioji duomenų magistralė SCL(Serial Clock) Magistralės laikas. Abu autobusai rezistoriais patraukti į teigiamos gyvybės magistralę. Signalų perdavimas/priėmimas atliekamas paspaudus 0 eilutę, viena montuoja pats, už pritraukiamųjų rezistorių rėmo.

    Norėtumėte vieno laidinio įrenginio ( Meistras), kuris inicijuoja duomenų perdavimą ir generuoja sinchronizavimo bei įrenginio valdymo signalus ( Vergas), kurios perduoda duomenis lyderiui. Prietaiso odai priskiriamas unikalus adresas, po kurio įrenginys nukreipiamas į naują. Tapo aišku, kad „Leader“ yra mūsų mikrovaldiklis, o „Leader“ yra mūsų atmintis. Vielos įtaisas pradeda spausti padangą SCL iki nulio su dainavimo grynumu, ir padanga S.D.A. paspauskite arba atleiskite keletą taktų į dainą, perduodant Single arba Nulik. Duomenų perdavimas pradedamas nuo START signalo, tada perduodami 8 duomenų bitai ir siunčiamas 9-asis bitas. S.D.A. iki minuso . Perdavimas baigiamas STOP signalu .

    Biblioteka "Laidas".

    Kad būtų lengviau keistis duomenimis su įrenginiais per I2C magistralę, „Arduino“ buvo parašyta standartinė biblioteka Viela jakas Taip pat įtraukta į IDE rinkinį. Jis atlieka šias pagrindines funkcijas:

    Wire.begin (adresas)Spustelėja vieną kartą, kad inicijuotų ir prisijungtų prie magistralės kaip pagrindinis arba pagrindinis įrenginys. Užduočių adresas nėra prijungtas kaip pagrindinis įrenginys.

    Wire.beginTransmission(adresas) pradeda siuntimą į I2C įrenginius nurodytu adresu.

    Wire.endTransmission() reiškia duomenų perdavimą į LED. Funkcija paverčia baitų reikšmes:

    • 0 - sėkmė.
    • 1 duomenys yra per ilgi, kad būtų galima užpildyti perdavimo buferį.
    • 2 — NACK buvo gautas adreso perdavimo valandą.
    • 3 – NACK gautas per duomenų perdavimo valandą.
    • 4 - kiti privalumai.

    Wire.write()Įrašomi duomenys iš įrenginio, siunčiami į įrenginį, siunčiami į laidinį įrenginį arba įdedami į baitus, kad būtų galima perduoti iš pagrindinio įrenginio į įrenginį. Iš tikrųjų įrašo duomenis į buferį. Buferio dydis 32 baitai a (atėmus 2 baitus iki adreso, iš tikrųjų 30 baitų), o buferis perkeliamas į funkciją Wire.endTransmission().

    • Wire.write(vertė)- vertė: perdavimo vertė, vienas baitas.
    • Wire.write (eilutė)-styga: perdavimo tvarka, baitų seka.
    • Wire.write (duomenys, ilgis)-Duomenys: perduodamų duomenų masyvas, baitai. ilgis: perduotinų baitų skaičius.

    Wire.read() Nuskaito baitą, kuris yra perdavimų skaičius iš varomo įrenginio į pagrindinį įrenginį arba bet koks siuntimų skaičius iš laidinio įrenginio į laidinį. Reiškia, kad baitas pasuktas: gautas baitas.

    Tai yra pagrindinės bibliotekos funkcijos, o mes pažvelgsime į kitas))

    Draugo dalis, EEPROM.

    EEPROM Elektra ištrinama programuojama tik skaitymo atmintis) - elektriškai ištrina PZP (EEPROM), kuris yra perprogramuotas, vienas iš nepastoviosios atminties tipų (pvz., PROM ir EPROM). Tokio tipo atmintį duomenys gali ištrinti ir pamiršti iki milijono kartų.

    Iš „Atmel“ man buvo išsiųstas paruoštas EEPROM modulis su AT24C256 mikroschema, kurio tūris yra 32 kbai. Norėdami pažinti šį stebuklą, turime galimybę mokytis duomenų lapas labai nuobodu ir angliška. Taigi matau jau paruoštą savo kankinimo rezultatą.

    Charakteristikos:

    • Žema įtampa ir standartinis tarnavimo laikas. VCC = 1,7 V–5,5 V.
    • 400kHz (1,7V) ir 1MHz (2,5V, 2,7V, 5,0V) sinchronizacijos dažnių suma.
    • Gyvybingumas: 1 000 000 įrašymo ciklų.
    • Vidinės organizacijos: 32768 puslapiai x 8 bitai.

    visnovki:

    • W.P.- Apsaugokite įrašą. Jei užmezgate ryšius su GND, galite įrašyti duomenis į galvosūkį.
    • A0…A2- Prašau teirautis priedo adreso.
    • Vcc- Maisto pliusas.
    • GND- Maisto minusas.
    Atminties adresai:

    Trys kojos yra nustatytos A0..A2. Jei kojelė prispausta prie Gnd, bito reikšmė yra 0, jei iki Vcc, tada 1. Mikroschema yra vikoristinė aštuonių bitų adresas, likęs bitas nurodo operacijos pasirinkimą. Jei bito reikšmė aukšta, tada inicijuojama skaitymo operacija, jei reikšmė maža (nulis), tada inicijuojama rašymo operacija.

    Jei visi trys kontaktai bus prispausti prie GND ir norime juos įrašyti į atmintį, įrenginio adresai atrodys kaip 10100000 („Wire“ biblioteka naudoja 7 bitų adresus, viską sutraukiame į teisingą bitą 010100 00 0x50).

    Įrašyti duokles mįslei:

    Norėdami įrašyti nuo pradžių, grįžtame į atmintį su bitu Įrašai adresu. Tada pridedami du 8 bitų adresai (taigi turime 0x8000 adresą), tada duomenų baitas ir STOP signalas. Po to EEPROM įeina į nepastoviąją atmintį prieš viduje sinchronizuotą įrašymo ciklą tWR (Write Cycle Time 5 ms). Visi įvesties signalai
    įjungtas valandiniam įrašymo ciklui ir EEPROM neteisingas kol bus baigtas įrašymas.

    Kasdami toliau ir duomenų lape išsiaiškiname, kad mikroschemų atmintis sutvarkyta taip 512 greta 64 baitas. Tada viena komanda galime įrašyti iki 64 baitų informacijos. Dėl kurių perduodame visus 64 baitus informacijos ir tik tada STOP signalą.

    Skaitydami pagarbą:

    Perskaitę šiuos duomenis būsite laimingi. Atmintis palaiko tris skaitymo parinktis:

    • Perskaitykite tikslų adresą;
    • Perskaitykite Vipadkovo adresą;
    • Nuoseklus skaitymas;

    Atmintis įsimena likusį įrašo adresą ir nekeičia gyvenimo, todėl likusį baitą galime nuskaityti neįterpdami adreso.

    Turime perskaityti adresą nuo pat pradžių siųsti komandą rašyti ir perduokite adresu, kurį norite perskaityti ( Nepamirškite, kad adresai susideda iš dviejų 8 bitų dalių). Tada nusiųskite komandą nuskaityti ir pašalinti skaitymo baitą, viską užbaigdami komanda STOP.

    Tolesnis skaitymas gali būti baigtas iš srauto adreso arba iš išvesties adreso ir tęsis tol, kol mikrovaldiklis neras STOP signalo. Pakeitus adresą, atmintis bus ištrinta ir adresas išnyks.

    Na, atėjo laikas pabandyti užsirašyti:
    #įtraukti // Įtraukti biblioteką #define EEPROM_ADDRESS 0x53 // Nustatyti atminties adresą word address = 0; // Cudi adresai įrašomi baitas data_send = 170; // Data void setup() ( Wire.begin(); // Inicijuoja I2C Serial.begin(9600); Serial.print ("Rašyti baitą į EEPROM atmintį..."); Serial.println (duomenų_siuntimas); Wire. beginTransmission(EEPROM_ADDRESS) // Pradeda perdavimą Wire.write(adresas & 0xFF) // Siunčia du baitus adreso (data_send) tikrinant siuntimo būseną.if (status == 0)Serial.println ("Ok") // delay(10 ), Wire.beginTransmission(EEPROM_ADDRESS);// Norėdami nuskaityti duomenis iš atidarymo adreso. (būsena == 0)Serial.println("Gerai"); // sustabdyti siuntimą Wire.requestFrom(EEPROM_ADDRESS, (baitas)1); // siųsti komandą nuskaityti vieną duomenų baitą baito duomenys = 0; if (Wire.available ()) // patikrinkite, kokius duomenis reikia nuskaityti (duomenys = Wire.read(); // skaityti duomenis) Serial.println (duomenys, DEC); ) void loop () ( )

    Wire.requestFrom(adresas, kiekis) — „Vikory“ meistras naudoja baitų rašymui iš keraminio įrenginio. Šiuos baitus galima pašalinti naudojant prieinamus () ir skaitymo () metodus. Buferio dydis yra tas pats 32 baitai.

    • adresas : pridėsiu 7 bitų adresą, iš kurio bus gauti baitai;
    • kiekis: gautinų baitų skaičius;

    Wire.available()— Suka baitų skaičių, kurį galima išgauti naudojant read().

    Na, ir pavyzdys iš eilutės „Labas žodis“ atminties įrašo:

    #įtraukti #define EEPROM_ADDRESS 0x53 žodžio adresas = 0; char data_send = "Sveikas žodis"; void setup() ( Wire.begin(); // Serial.begin(9600); Serial.print("Įrašyti baitą į EEPROM atmintį..."); Serial.println (duomenų_siuntimas); Wire.beginTransmission(EEPROM_ADDRESS); Wire.write(adresas >> 8) Wire.write(Serial.println) ); // sustabdyti siuntimą Wire.requestFrom(EEPROM_ADDRESS, (baitas)10);<10 ;i++) { if (Wire.available()) { data = Wire.read(); } Serial.write (data); } } void loop() { }

    Atminties organizavimas:

    Taigi neaišku, kas apie tai parašyta istoriniuose įrašuose. Praktiškai bandau dingti iš čia. Duomenų lape rašoma, kad mikroschemų atmintis yra organizuota kaip 512 greta 64 baitas. Ką tai reiškia? Jei norime įrašyti daugiau nei 64 baitus viename kadre, pasakykite už adreso 0x40 (kitos pusės adresai), kai adresas peržengia kitą pusę Vidinės mikroschemos gydytojas kreipkitės adresu pirmajame puslapyje. O užklausų baitai bus įrašyti pirmajame puslapyje ir ten įrašyti duomenys bus ištrinti.

    Norint perskaityti tokias ribas, ribų nėra, duomenų lape tik parašyta, kad pasiekus pabaigos adresą būsite automatiškai perkelti į pradžią (adresai 0x00).

    Štai kodėl aš manau, kad tai viskas. Žinoma, galite naudoti paruoštą EEPROM biblioteką ir manote, kad galite parašyti savo. Susipažinome su pagrindiniais roboto principais.

    Šiame straipsnyje mes bandėme surinkti visų populiariausių Arduino bibliotekų pranešimus vienoje vietoje, taip pat paruošėme populiariausių bibliotekų rinkinį. Anksčiau ar vėliau bet kuris „Arduino“ kūrėjas susidurs su šios ar kitos bibliotekos poreikiu. Net vikoristannaya paruoštas kodas netgi sutrumpina programavimo valandą. Tikimės, kad vienoje vietoje surinkta ir su atsisiuntimo žinutėmis bei trumpais Vikoristano užrašais informacija apie populiarias bibliotekas padės jums įgyvendinti projektus.

    Arduino biblioteka yra programos kodas, kuris išsaugomas ne eskizuose, o išoriniuose failuose, kuriuos galima prijungti prie jūsų projekto. Bibliotekoje naudojami įvairūs metodai ir duomenų struktūros, kurios būtinos darbui su jutikliais, indikatoriais, moduliais ir kitais komponentais supaprastinti. Paruoštų programų pasirinkimas palengvins darbą su projektais, todėl galėsite susitelkti ties pagrindine logika, negaišdami valandų tuščiam darbui.

    Šiandien sukurta daugybė bibliotekų, kurias galima lengvai rasti ir pasiekti internete. Svarbu, kad dauguma bibliotekų platinamos pagal nemokamą licenciją, todėl nereikia ieškoti „piratinių“ versijų. Golovne, tse navchitisya.

    Standartinės Arduino bibliotekos

    Pradėkite mokytis apie bibliotekas geriausiai oficialioje svetainėje, kur rasite išsamų standartinių modulių sąrašą ir nuorodas į oficialias partnerių bibliotekas.

    Įtrauktų bibliotekų sąrašas (visos pateikiamos kartu su Arduino IDE paskirstymu):

    • EEPROM
    • Ethernet / Ethernet 2
    • Firmata
    • Skystieji kristalai
    • Servo
    • Serijinė programinė įranga
    • steperis

    Bibliotekų rinkinys viename archyve

    Jei neturite pakankamai laiko išsamiai anoniminių svetainių analizei ir norite viename archyve surinkti viską, ko reikia darbui su dabartiniais Arduino įrenginiais, parengėme 40 populiariausių bibliotekų sąrašą. Tiesiog išpakuokite jį (bibliotekų aplanką) iš Arduino aplanko.

    Ekranų, indikatorių ir ekranų bibliotekos

    I2C biblioteka

    Biblioteka skirta naudoti periferiniuose įrenginiuose naudojant I2C protokolą.

    Vikoristano užpakalis:

    #ifndef I2C_MASTER_H

    #define I2C_MASTER_H

    void I2C_init (void) – objekto sukūrimas, sureguliuotas į tinkamą magistralės dažnį.

    uint8_t I2C_start () – užmegztas ryšys su nauju įrenginiu.

    uint8_t I2C_write() – duomenų įrašymas į srautinio perdavimo įrenginį.

    uint8_t I2C_read_ack() – nuskaito baitą iš įrenginio, įrašo kitą baitą.

    Biblioteka LiquidCrystal

    Standartinė biblioteka, įdiegta Arduino IDE. Sukurtas naudoti su retais kristaliniais LCD ekranais.

    Vikoristano užpakalis:

    #įtraukti . Be to, kad nesijaudintumėte dėl rašymo, galite prisijungti per meniu Sketch – Import Library – LiquidCrystal.

    Klasės konstruktorius yra LiquidCristal (…). Argumentai yra rs, rw, en, do ... d7. Pirmieji 3 signalai yra RS, RW ir Enable. Raidės d nurodo duomenų magistralių, prie kurių prijungtas ekranas, numerius.

    void begin(cols, rows) – metodas, kuris inicijuoja rodymo sąsają. Argumentai yra simbolių skaičius eilutėje (stulpeliais) ir eilučių (eilučių) skaičius. Šis metodas gali būti suabejotas pirmiausia.

    void createChar(skaičius, duomenys) - metodas, reikalingas koristuvach simboliams sukurti.

    UTFT biblioteka

    Standartinė biblioteka, reikalinga Arduino robotams su įvairių tipų TFT ekranais. Visi palaikomi ekranai pateikiami papildomame dokumente su biblioteka.

    Vikoristano užpakalis:

    #įtraukti

    UTFT(); - UTFT kopijos sukūrimas.

    textRus(char*st, int x, int y); – metodas, leidžiantis rodyti eilutę iš indikatoriaus. Pavyzdžiui, char * dht = "Temperatūra, C";

    textRus(string st, int x, int y); - Rodyti eilutę iš parametro nustatymų. Pavyzdžiui, g.textRus("Temperatūra, C", 0, 20);

    LedControl biblioteka

    Leidžia naudoti septynių segmentų ekranus, sujungiančius šviesos diodų masyvą į vieną matricą.

    Vikoristano užpakalis:

    #įtraukti

    LedControl lc1 = LedControl();

    - Reikalingas inicijuojant biblioteką. Reikia sujungti keturis argumentus – kaiščių, prie kurių prijungtas ekranas, skaičius (pirmieji 3 argumentai) ir prijungtų lustų skaičių.

    writeArduinoOn7Segment() – ekrane rodomi visi skaičiai nuo 0 iki 15 Vikorist funkcijos setChar() simboliams a, d ir setRow(), kad sukurtų trūkstamų simbolių išdėstymą.

    LedControl.shutdown() – išjungti vaizdą.

    setIntensity() – ryškumo valdymas.

    Bibliotekos darbui su data ir valanda Arduino

    Biblioteka RTClib

    Biblioteka, skirta darbui su realaus laiko laikrodžiu, kuri palengvins sąveiką su Arduino.

    Vikoristano užpakalis:

    #įtraukti

    RTC_DS1307 RTC; - Jutiklio vibracija (šiuo atveju DS1307).

    rtc.adjust(DataLaikas(data, laikas)); – laiko ir kalendoriaus koregavimas.

    dayOfTheWeek () – rodo savaitės dieną. Argumentas: nuo 0 iki 6, 0 – savaitė.

    Timelib biblioteka

    Leidžia Arduino gauti informaciją apie datą ir valandą dabartiniu momentu.

    Vikoristano užpakalis:

    #įtraukti

    Laikas(); - Kopijos sukūrimas.

    setTime(t); - Nustatyta valanda. Argumentas t – metai, laikas, sekundė, diena, mėnuo ir diena.

    timeStatus(); - Nurodykite, kokia valanda nustatyta.

    koreguotiLaikas(reguliavimas); - Laikas tai sutvarkyti.

    Biblioteka Ds1307

    Biblioteka, skirta rankiniam DS1307 sąveikai su Arduino ir Wire biblioteka.

    Vikoristano užpakalis:

    #įtraukti

    klasė DS1307RTC – objekto DS1307 sukūrimas.

    SetTime() – nustatykite laiką.

    get() – skaito RTC, sukasi ištrauktą datą POSIX formatu.

    Set(time_t t) – įrašymo data iš RTC

    Biblioteka DS 3231

    Priskirta modulio ds3231 datai ir valandai.

    #include „ds3231.h“

    DS3231 laikrodis (SDA, SCL); – objekto DS3231 sukūrimas, prijungimas prie laikrodžio linijos ir duomenų linijos.

    getTime (); - perskaitykite jubiliejaus datą.

    setDate(data, pirmadienis, metai); - Įsteigimo data.

    Arduino sistemos bibliotekos

    EEPROM biblioteka

    Standartinės bibliotekos. Naudojama darbui su neenergetine atmintimi (duomenų įrašymui, skaitymui).

    Vikoristano užpakalis:

    #įtraukti

    EEPROM.skaityti(); - Objekto sukūrimas, baito nuskaitymas adresu iš pastovios atminties.

    EEPROM.write(adresas, reikšmė) – įrašo baitą į nepastovią atmintį.

    EEPROM.put() – skaičių serijų įrašymas iš plūduriuojančios komos.

    EEPROM.get() – slankiųjų skaičių eilučių skaitymas.

    Bibliotekos programinės įrangos serija

    Biblioteka, leidžianti įdiegti vėlesnes sąsajas iš bet kokių skaitmeninių kontaktų. Tai taip pat leidžia atidaryti keletą paskesnių prievadų, veikiančių iki 115 200 bodų greičiu.

    #įtraukti

    SoftwareSerial mySerial(RX, TX) – kūrimo objektas, argumentai – RX ir TX jungčių pagrindai.

    Serial.begin(); – įdiegia sklandumą ant prievado, skirto Arduino ir kompiuterio prijungimui.

    mySerial.overflow() – įvesties buferio perpildymas.

    Bibliotekos matematika

    Apima daugybę matematinių funkcijų, skirtų darbui su slankiaisiais skaičiais.

    Vikoristano užpakalis:

    #įtraukti

    Matematika (); - Matematikos kopijos sukūrimas.

    Serial.print("cos num = "); - Pasukite skaičiaus kosinusą.

    Serial.println(fmod(double__x, double__y)); - Pasukti skaičius moduliu.

    Bibliotekos planuotojas

    Sukurta robotams su Arduino Due, leidžiančiu dirbti kelių užduočių režimu. Kol kas tai yra eksperimentinė biblioteka.

    Vikoristano užpakalis:

    #įtraukti

    Tvarkaraštis; - Kopijos sukūrimas.

    Scheduler.startLoop() – leidžia pridėti funkciją, kuri iš karto išeina iš loop().

    result() – leidžia perkelti apdorojimą į kitas užduotis.

    Servo variklių ir variklių bibliotekos

    Bibliotekos servo

    Standartinės bibliotekos. Jis reikalingas servomotoriams veikti ir dažnai naudojamas robotų projektuose su manipuliatoriais.

    Vikoristano užpakalis:

    #įtraukti

    Servo myservo; - Objekto servovarikliui sukūrimas.

    myservo.attach(); - Išėjimo, prie kurio prijungtas servovariklis, numeris.

    myservo.write(180, 30, true); - Sukite 180 laipsnių, greitis 30, pilnas pasukimas.

    Bibliotekos žingsnelis

    Būtinas kraujo vienpoliams ir bipoliniams varikliams gydyti.

    #įtraukti

    const int stepsPerRevolution = ; – kartų skaičius, per kurį variklis apsisuka.

    Stepper myStepper = Stepper(žingsniai, pin1, pin2) – sukuria klasės egzempliorių iš nurodyto skaičiaus žingsnių ir viršūnių, prie kurių prijungtas variklis.

    Arduino jutiklių bibliotekos

    DHT biblioteka

    #įtraukti< DHT.h>

    DHT dht (DHTPIN, DHT11); – inicijuoja jutiklį (DHT11 atveju).

    dht.begin(); - Jutiklio paleidimas.

    float t = dht.readTemperature(); - Srauto temperatūros vertės nuskaitymas Celsijaus laipsniais.

    Biblioteka Dalaso temperatūra

    Programos robotams su Dalaso jutikliais. Vienu metu veikia iš OneWire bibliotekos.

    #įtraukti

    Dalaso temperatūros dalaso jutikliai (&oneWire); - OneWire objekto perkėlimas į jutiklinį robotą.

    įrašyti į registrą.

    spausdinimoTemperatūra (jutiklio adresas); – taikoma esamai temperatūros vertei gauti.

    Ultragarso biblioteka

    Arduino robotą saugos ultragarsinis vibracijos jutiklis HC-SR04.

    #įtraukti

    Ultragarsinis ultragarsas (tig, echo) – apsvaiginkite objektą, argumentai – Trig contact ir Echo contact.

    dist = ultrasonic.distanceRead(); - Nurodytas atstumas yra iki objekto. Argumentas – centimetrai (CM) chi coliai (INC).

    Timing() – nuskaito impulso reikšmę Echo išvestyje ir konvertuoja į reikiamą skaičių sistemą.

    Biblioteka ADXL345

    Sukurta naudoti su ADXL345 akselerometru.

    Vikoristano užpakalis:

    #įtraukti

    ADXL345_ADDRESS – sukurtas objektas, priskirtas jo adresui.

    ADXL345_REG_DEVID – įrenginio identifikavimas.

    ADXL345_REG_OFSX – slopinama X ašis.

    ADXL345_REG_BW_RATE – duomenų perdavimo greičio palaikymas.

    Biblioteka BME280

    Tinka naudoti su temperatūros jutikliu ir BME280 spaustukais.

    Vikoristano užpakalis:

    #įtraukti

    BME280_ADDRESS – sukurtas objektas BME280, priskirtas jo adresui.

    begin(uint8_t addr = BME280_ADRESAS); - Burbuolės roboto jutiklis.

    getTemperature – temperatūros manija.

    getPressure – stebuklingos ydos manija.

    Biblioteka BMP280

    Reikalingas robotams su atmosferos slėgio jutikliu BMP280.

    Vikoristano užpakalis:

    #įtraukti

    BMP280_CHIPID – egzemplioriaus sukūrimas, adreso įterpimas.

    getTemperature(float *temp); - ekstremalios temperatūros palaikymas.

    getPressure(float *slėgis); - spaustuko vertės apipjaustymas.

    Biblioteka BMP085

    Reikalingas robotams su spaustukų jutikliu BMP085.

    Vikoristano užpakalis:

    #įtraukti

    Adafruit_BMP085 bmp; - BMP085 kopijos sukūrimas.

    dps.init(MODE_ULTRA_HIGHRES, 25000, tiesa); - Vymiryuvannya vice, argumentas 25000 - aukštis virš jūros lygio (šiuo atveju 250 m virš jūros lygio).

    dps.getPressure(&Slėgis); – Paskirta yda.

    Pirštų atspaudų biblioteka

    Turite naudoti pirštų atspaudų skaitytuvą.

    užpakaliswikiristannya:

    #įtraukti

    Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); - apsvaigintas nuo piršto objekto. Parametras – siunčiamas į svetainę darbui su UART, prieš bet kokį prisijungimą prie modulio.

    pirštas.begin(); - Pirštų galiukų modulio inicijavimas.

    Func_sensor_communication(); - Spustelėkite piršto jutiklio modulį.

    Ryšių bibliotekos

    Bibliotekos laidas

    Reikalingas darbui su dviejų laidų I2C sąsaja.

    Vikoristano užpakalis:

    #įtraukti

    Wire.begin() – bibliotekos inicijavimas, prijungtas prie I2C magistralės.

    Wire.requestFrom() – užpildo pagrindinį baitais iš aparatūros įrenginio.

    Wire.beginTransmission() – perdavimo į įrenginį pradžia.

    Biblioteka Irremote

    Būtina, kad robotas naudotų Arduino su IC.

    Vikoristano užpakalis:

    #įtraukti

    IRrecv irrecv(RECV_PIN); - PIN, prieš priimant bet kokį ryšį ІЧ.

    SetPinAndButton(int ir1, int ir2, int pin) – leidžia sukonfigūruoti išvestį, kurios būtų prašoma, kai nurodomos ir1, ir2 reikšmės.

    GSM biblioteka

    Reikalingas prisijungimui per GSM kortelę su GSM/GRPS tinklu. Naudodamiesi šia pagalba galite atlikti operacijas, apimančias GSM telefono naudojimą, balso skambučius ir prisijungimą prie interneto per GRPS.

    Vikoristano užpakalis:

    #įtraukti

    GSM GSMAccess – inicijuoja klasės egzempliorių.

    gprs.powerOn() – ilgesnis tarnavimo laikas.

    GPRS – interneto ryšio nustatymas.

    GSM – radijo modemo jungtis.

    RFID biblioteka

    Reikalingas Arduino ir RFID modulio prijungimui.

    Vikoristano užpakalis:

    #įtraukti

    RFID rfid (SS_PIN, RST_PIN); - RFID egzemplioriaus sukūrimas, argumentai - kaiščiai, prie bet kurio jungčių modulio.

    rfid.init(); - RFID modulio inicijavimas.

    Biblioteka MFRC 522

    Reikalingas Arduino ir MFRC522 modulio prijungimui.

    Vikoristano užpakalis:

    #įtraukti

    MFRC522 mfrc522 (SS_PIN, RST_PIN); – sukurtas MFRC522 egzempliorius, argumentai nurodo išvestį, prie kurios prijungtas modulis.

    mfrc522.PCD_Init(); - MFRC522 inicijavimas.

    Ethershield biblioteka

    Nauja versija https://github.com/jcw/ethercard

    Reikalingas norint prijungti Arduino prie vietinio tinklo arba interneto. Biblioteka nebepalaikoma, nauja Ethercard versija. Taip pat yra standartinė eterneto biblioteka.

    Vikoristano užpakalis:

    #include "EtherShield.h"

    #įtraukti

    EtherShield es = EtherShield(); – internetinio puslapio paruošimas

    eteris.begin(dydis Ethernet::buferis, mymac,); - Darbo pradžia, argumentai - Mac adresai ir prievado numeris prie kurio prijungta CS išvestis.

    Biblioteka Nrf24l01

    Reikalingas robotams su RF24 radijo moduliu.

    Vikoristano užpakalis:

    #include „RF24.h“

    RF24 – konstruktorius sukuria naują tvarkyklės egzempliorių. Prieš pasirinkdami modulį, turite sukurti egzempliorių ir nurodyti kaištį prieš jungiant lustą (_cepin: įgalinti modulio kaištį, cspin: pasirinkti modulio kaištį).

    Begin – roboto lusto pradžia.

    setChannel – RF ryšio kanalas.

    setPayloadSize – fiksuoto pervedimo dydžio nustatymas.

    getPayloadSize – fiksuoto dydžio pasirinkimas.

    TinyGPS biblioteka

    Būtina perskaityti GPGGA ir GPRMC pranešimus. Padeda skaityti duomenis apie padėtį, datą, valandą, aukštį ir kitus parametrus.

    Vikoristano užpakalis:

    #įtraukti

    TinyGPS GPS; - TinyGPS egzemplioriaus sukūrimas.

    encode() – nuoseklių duomenų pateikimas objektui, po vieną simbolį.

    gps.stats() – statistikos metodas. Rodo, ar pašalinti teisingi duomenys, ar ne.

    Arduino IDE bibliotekos

    Tarp bibliotekų įvairovės galima išskirti 3 pagrindines grupes:

    • Tai yra bibliotekos, kurios iš pradžių įdiegtos Arduino IDE branduolyje. Jų nereikia atsisiųsti ar įdiegti papildomai, juos galima atsisiųsti iš programos iškart po kūrimo proceso pradžios.
    • Papildomos bibliotekos yra bibliotekos, kurias reikia įsigyti savarankiškai. Šio tipo bibliotekoje yra jutiklių, jutiklių ir kitų komponentų kolekcija, palengvinanti Arduino darbą.
    • Uždelstos bibliotekos – įdiegiamos kaip papildomos bibliotekos šoninė juosta, kuri su ja tiesiogiai neveikia.

    Paprasčiausias būdas dirbti su Arduino bibliotekomis yra išnaudoti Arduino IDE vidurio galimybes. Pakalbėkime apie tai oficialioje statistikoje.

    LCD ekranas– Dažnas Arduino projektų svečias. Tačiau sulankstomose grandinėse galime turėti problemų dėl Arduino prievadų trūkumo, nes reikia prijungti ekraną, kuriame yra daug kontaktų. Išeitis iš šios situacijos gali būti I2C/IIC Adapteris, jungiantis praktiškai standartinį Arduino 1602 ekraną prie Uno, Nano ar Mega plokščių su papildomais 4 kontaktais. Šiame straipsnyje parodyta, kaip galite prijungti LCD ekraną su I2C sąsaja, kaip pasiekti bibliotekas, parašyti trumpą pavyzdį ir pažvelgti į įprastas programas.

    Skystųjų kristalų ekranas LCD 1602 Tai pirmasis pasirinkimas norint rodyti simbolių eilutes įvairiuose projektuose. Tai nebrangi, su įvairiomis modifikacijomis su skirtingomis foninio apšvietimo spalvomis galite lengvai sukurti paruoštas bibliotekas Arduino eskizui. Ale by the ungulounced trumpalaikis Tsoogo Ekran є kad faktas, Gegužės 16 d. rodymas Visnovkivo digiribus, su Yakiki -Ism bent 6. Tsoogo LCD vikoristanas be I2C SERYOZHEND į Arduino UNO Poen Nano. Jei kontaktų nėra, turėsite nusipirkti Arduino Mega plokštę arba apsaugoti kontaktus, įskaitant ekrano prijungimą per i2c.

    Trumpas LCD 1602 kontaktų aprašymas

    Pažvelkime atidžiau į LCD1602 technologiją:

    Vynmedžių oda turi savo reikšmę:

    1. Įžeminimas GND;
    2. Kharchuvannya g. 5;
    3. monitoriaus kontrasto nustatymas;
    4. Komanda, duomenys;
    5. Duomenų užrašymas ir skaitymas;
    6. Įjungti;

    7-14. Duomenų linijos;

    1. Plius palaikymas;
    2. Minusinis apšvietimas.

    Ekrano specifikacijos:

    • Simbolinis ekrano tipas – simbolių įvedimo galimybė;
    • LED foninis apšvietimas;
    • Valdiklis HD44780;
    • Įtampa 5V;
    • 16x2 simbolių formatas;
    • Darbinės temperatūros diapazonas: -20°С iki +70°С, laikymo temperatūros diapazonas: -30°С iki +80°С;
    • Leisk man pasižiūrėti 180 laipsnių kampu.

    Skystųjų kristalų ekrano prijungimo schema prie Arduino plokštės be i2C

    Standartinė monitoriaus prijungimo tiesiogiai prie Arduino mikrovaldiklio be I2C schema atrodo taip.

    Dėl didelio prijungtų kontaktų skaičiaus gali neužtekti vietos reikiamiems elementams priimti. I2C jungiklis pakeičia smiginio skaičių į 4, o užimtų kėglių skaičių į 2.

    Kur nusipirkti LCD ekranus ir ekranus, skirtus Arduino

    LCD ekranas 1602 (ir versija 2004) yra labai populiarus, todėl jį nesunkiai rasite tiek vietinėse internetinėse parduotuvėse, tiek užsienio rinkose. Pažvelkime į galimas parinktis:

    LCD1602+I2C modulis su mėlynu ekranu, kartu su Arduino Paprastas LCD1602 ekranas (žalias apšvietimas) pigesnis nei 80 rublių Didelis LCD2004 ekranas su I2C HD44780, skirtas Arduino (mėlynas ir žalias apšvietimas)
    Ekranas 1602 su IIC adapteriu ir mėlynomis lemputėmis Kita LCD1602 versija su lituotu I2C moduliu Prievado IIC/I2C/TWI/SPI adapterio modulis ekranui 1602, tinka Arduino
    Ekranas su RGB jungikliais! LCD 16 × 2 + klaviatūra + „Arduino“ garso signalo skydas Skydas Arduino su mygtukais ir ekranu LCD1602 LCD 1602 LCD ekranas 3D spausdintuvui (Smart Controller for RAMPS 1.4, Text LCD 20×4), SD ir MicroSD kortelių skaitytuvo modulis

    I2C protokolo aprašymas

    Pirma, trumpai pakalbėkime apie ekrano prijungimą prie Arduino per i2c adapterį. Trumpai pakalbėkime apie patį i2C protokolą.

    I2C/IIC(Inter-Integrated Circuit) yra protokolas, kuris iš pradžių buvo sukurtas sujungti integrinius grandynus elektroninio įrenginio viduryje. Dizainas priklauso „Philips“ kompanijai. i2c protokolas pagrįstas 8 bitų vicorstan magistrale, kuri reikalinga ją valdančios elektronikos blokams susieti, ir adresavimo sistema, kuri gali būti jungiama tais pačiais laidais komos įrenginius. Tiesiog pateikiame duomenis į vieną ar kitą įrenginį, prie duomenų paketų pridėdami reikiamo elemento identifikatorių.

    Paprasčiausioje I2C grandinėje gali tilpti vienas laidinis įrenginys (dažniausiai Arduino mikrovaldiklis) ir daug įrenginių (pavyzdžiui, LCD ekranas). Kiekvieno įrenginio adresas yra nuo 7 iki 127. Du įrenginiai su tuo pačiu adresu nebūtinai turi būti toje pačioje grandinėje.

    Arduino plokštė palaiko i2c aparatūros lygiu. Norėdami prijungti įrenginius naudodami šį protokolą, galite naudoti A4 ir A5 kaiščius.

    I2C robotas turi keletą privalumų:

    • Darbui reikalingos bent 2 eilutės – SDA (duomenų linija) ir SCL (sinchronizavimo linija).
    • Daugelio laidinių įrenginių prijungimas.
    • Keičiasi neramumų valanda.
    • Norint valdyti visą įrenginių rinkinį, reikalingas tik vienas mikrovaldiklis.
    • Bet koks mikroschemų skaičius, prijungtas prie vienos magistralės, yra apsuptas tik ribinės talpos.
    • Aukštas duomenų taupymo lygis per specialų filtrą slopina grandinėse susidarančius purslus.
    • Paprasta atsiradusių gedimų diagnozavimo ir gedimų šalinimo procedūra.
    • Autobusas jau yra integruotas į patį Arduino, todėl nereikia toliau plėsti magistralės sąsajos.

    Nedoliky:

    • Pagrindinis linijos poslinkis yra 400 pF.
    • Svarbu užprogramuoti I2C valdiklį, nes magistralėje yra daug skirtingų įrenginių.
    • Esant dideliam skaičiui įrenginių, tampa sunku lokalizuoti gedimą, nes vienas iš jų automatiškai įdiegia žemo lygio veiksnį.

    i2c modulis, skirtas LCD 1602 Arduino

    Geriausias ir lengviausias būdas įdiegti „i2c“ ekraną „Arduino“ yra įsigyti paruoštą ekraną su įmontuotu protokolu. Bet tokie ekranai negali pakęsti smarvės, tai nėra pigu. Ir skirtingų standartinių ekranų ašis jau padarė didelę jėgą. Todėl šiandien prieinamiausias ir populiariausias variantas yra įsigyti ir pakeisti greta esantį I2C modulį - adapterį, kuris atrodo taip:

    Vienoje modulio pusėje yra i2c kaiščiai - įžeminimas, gyvenimo trukmė ir 2 duomenų perdavimui. Iš kito adapterio naudosime išorinio gyvenimo rožes. Ir, žinoma, plokštėje yra plikas dugnas, be to, modulis yra prilituotas prie standartinių ekrano komponentų.


    Norėdami prisijungti prie „Arduino“ mokėjimo, naudokite „i2c“ atsijungimą. Jei reikia, apšvietimui prijungiame išorinį maitinimo šaltinį. Įmontuoto apdailos rezistoriaus pagalba galime reguliuoti kontrasto nustatymus J

    Rinkoje galima rasti LCD 1602 modulių su lituotais adapteriais, jų montavimas yra kiek įmanoma supaprastintas. Jei įsigijote tą patį adapterį, prieš tai turėsite jį prilituoti prie modulio.

    RK ekrano prijungimas prie Arduino per I2C

    Norėdami prisijungti, jums reikia pačios Arduino plokštės, ekrano, duonos lentos, jungčių ir potenciometro.

    Jei naudojate specialų i2c adapterį, pirmiausia turėsite jį lituoti prie ekrano modulio. Svarbu ten pasigailėti, galite įsitraukti į tokią schemą.


    RCD monitorius su i2c palaikymu prijungiamas prieš mokant už papildomas keturias smiginius – du smiginius duomenims, du smiginius visam gyvenimui.

    • GND jungtis yra prijungta prie GND plokštėje.
    • VCC yra 5 V.
    • SCL yra prijungtas prie kaiščio A5.
    • SDA prijungtas prie A kaiščio.

    Tai viskas! Ilgi kelionių tinklai, kuriuose lengva pasiklysti. Tokiu atveju visą i2C protokolo įgyvendinimo sudėtingumą galime tiesiog patikėti bibliotekoms.

    Bibliotekos robotams su i2c LCD ekranu

    Norėdami susisiekti tarp Arduino ir LCD 1602 per I2C magistralę, jums reikės bent dviejų bibliotekų:

    • Wire.h biblioteka, skirta darbui su I2C, jau įtraukta į standartinę Arduino IDE programą.
    • LiquidCrystal_I2C.h biblioteka, kurioje yra daug įvairių komandų, skirtų monitoriui valdyti per I2C magistralę, leidžia sukurti paprastesnį ir trumpesnį eskizą. Būtina papildomai įdiegti biblioteką Prijungus ekraną, reikia įdiegti biblioteką LiquidCrystal_I2C.h

    Prie eskizo prijungę visas reikalingas bibliotekas sukuriame objektą ir galime pritaikyti jo funkcijas. Bandymui svarbu naudoti standartinį eskizą ant užpakalio.

    #įtraukti #įtraukti // Bibliotekos jungtys //#įtraukti // Alternatyvios bibliotekos prijungimas LiquidCrystal_I2C lcd(0x27,16,2); // Pokazum I2C adresas (Night -shine), aš esu Ekran parametras (LCD 1602 - 2 eilutės 16 simbolių odoje // Liquidcrystal_pf8574 LCD (0x27); // Wareant for the Bigblastic PCF8574 VOOID sąranka (LCD) (LCD .init ( ); // Inicijuoti ekraną lcd.backlight(); // Prijunkite ekraną lcd.setCursor(0,0); // Užveskite žymeklį ant pirmosios eilutės lcd.print ("Sveiki" .setCursor(0,1) // Padėkite žymeklį ant kitos eilutės lcd.print("ArduinoMaster" // Įveskite tekstą kitoje eilutėje ) void loop() ( )

    LiquidCrystal_I2C bibliotekos funkcijų ir metodų aprašymas:

    • home() ir clear() – pirmoji funkcija leidžia pasukti žymeklį į ekrano viršų, o taip pat rodyti viską, kas buvo monitoriuje anksčiau.
    • write(ch) – leidžia į ekraną įrašyti vieną simbolį ch.
    • cursor() ir noCursor() – rodyti/slėpti žymeklį ekrane.
    • blink() ir noBlink() – žymeklis mirksi/nemirksi (jei jo rodymas buvo įjungtas anksčiau).
    • display() ir noDisplay() – leidžia prijungti/įjungti ekraną.
    • scrollDisplayLeft() ir scrollDisplayRight() – slenka ekranu vienu kairiarankio/dešiniarankio ženklu.
    • autoscroll() ir noAutoscroll() – leidžia įjungti/išjungti automatinio slinkties režimą. Kuriam odos režimui naujas simbolis įrašomas toje pačioje vietoje, kuri anksčiau buvo parašyta ekrane.
    • leftToRight() ir rightTo Left() – rodomo teksto įterpimas tiesiai – iš kairės į dešinę arba iš dešinės į kairę.
    • createChar(ch, bitmap) – sukuria simbolį su kodu ch (0 – 7), naudodamas bitmap bitmap masyvą, kad sukurtų juodus ir baltus taškus.

    Alternatyvi biblioteka robotams su i2c ekranu

    Kai kuriais atvejais, kai sugadinta priskirta biblioteka su įrenginiais, kuriuose yra PCF8574 valdikliai, gali atsirasti klaidų. Šios parinkties alternatyva yra biblioteka LiquidCrystal_PCF8574.h. Ji plečia LiquidCrystal_I2C, o tai nekelia problemų nugalėtojams.

    Problemos jungiant i2c LCD ekraną

    Jei spustelėję eskizą ekrane nematote norimo pranešimo, pabandykite spustelėti šiuos veiksmus.

    Visų pirma, galite padidinti arba pakeisti monitoriaus kontrastą. Dažnai personažai tiesiog nesimato per kontrasto ir apšvietimo režimus.

    Jei tai nepadeda, patikrinkite, ar tinkamai prijungti kontaktai ir ar prijungtas maitinimo šaltinis. Jei naudojote suderinamą i2c adapterį, dar kartą patikrinkite kontaktų litavimo tašką.

    Kita dažna priežastis, kodėl ekrane trūksta teksto, gali būti neteisingi i2c adresai. Pabandykite eskizuose atsiminti įrenginio adresą su 0x27 0x20 arba 0x3F. Skirtingi platintojai gali turėti skirtingus mokėjimo adresus. Jei tai nepadeda, galite paleisti i2c skaitytuvo eskizą, kuris peržiūri visas įrenginio jungtis ir nustato jų adresus, naudodamas brutalios jėgos metodą. „i2c“ skaitytuvo užpakalinis eskizas.

    Jei ekranas vis tiek neveikia, pabandykite lituoti adapterį ir prijungti skystųjų kristalų ekraną kaip įprasta.

    Visnovok

    Šiame straipsnyje apžvelgėme pagrindinį skystųjų kristalų ekrano maitinimo šaltinį sulankstomų Arduino projektų atveju, jei reikia sutaupyti papildomų pinigų lentoje. Paprastas ir nebrangus i2c adapteris leidžia prijungti 1602 LCD ekraną naudojant tik 2 analoginius kaiščius. Daugiau situacijų galite būti dar svarbesni. Mokestis už prieinamumą – poreikis naudoti papildomą modulį – keitiklį ir biblioteką. Mūsų nuomone, lankstumo kaina visai nėra didelė ir rekomenduojame šiuo lankstumu pasinaudoti projektuose.

    Wire bibliotekos aprašymas

    Ši biblioteka leidžia bendrauti su I2C/TWI įrenginiais. Arduino plokštėse su R3 išdėstymu (dizainas 1.0), SDA (duomenų linija) ir SCL (laikrodžio linija) yra ant AREF kaiščio kaiščių. Arduino Due turi dvi I2C/TWI sąsajas: SDA1 ir SCL1 yra ant AREF kaiščio, o papildomos linijos yra ant 20 ir 21 kaiščių.

    Žemiau esančioje lentelėje parodytas TWI pašalinimas iš skirtingų Arduino plokščių.

    Pradedant nuo Arduino 1.0, ši biblioteka pristato srauto funkcijas, todėl puikiai veikia su kitomis skaitymo / rašymo bibliotekomis. Per tai siuntimas () ir gauti () pakeičiami read () ir write ().

    Pastaba

    Raskite 7 ir 8 bitų I2C adreso versijas. 7 bitai identifikuoja įrenginį, o 8 bitas nurodo, ar įrenginys rašomas, ar skaitomas. Wire bibliotekoje yra 7 bitų adresai. Jei turite techninį aprašą ar kodo, kuris sukuria 8 bitų adresus, pavyzdį, turėsite išmesti žemąjį bitą (norėdami sunaikinti reikšmę vienu bitu dešiniarankiai), sumažindami adresą nuo 0 iki 127. Tačiau , adresai nuo 0 iki 7 nevirinami, fragmentai rezervuoti, pirmasis adresas, kurį galima pasirinkti, yra 8. Atkreipkite dėmesį, kad jungiant SDA/SCL kaiščius, rezistoriams reikia pakelti. Pranešimas turi būti nustebintas užpakaliu. MEGA 2560 plokštėje yra rezistoriai, kuriuos reikia ištraukti ant 20 ir 21 kaiščių.

    Metodų aprašymas

    Wire.begin()

    apibūdinimas

    Inicijuoja Wire biblioteką ir prisijungia prie I2C magistralės kaip pagrindinis arba vadovas. Paprastai skambinti galima tik vieną kartą.

    Sintaksė

    Wire.begin(adresas)

    Parametrai

    adresas: įrenginiui priskirtas 7 bitų adresas (nebūtina); Jei nėra užduočių, plokštė prijungiama prie magistralės kaip pagrindinis.

    Prasmė to, kas apsiverčia

    užpakalis

    Keraminio įrenginio užpakaliai yra nuostabūs naudojant onReceive() ir onRequest() metodus. Laidinių įrenginių užpakaliai skiriasi nuo kitų būdų. .

    Wire.requestFrom()

    apibūdinimas

    „Vikory“ meistras naudoja baitų rašymui iš keramikos įrenginio. Šiuos baitus galima pašalinti naudojant prieinamus () ir skaitymo () metodus.

    Jei šis argumentas teisingas, įjungus maitinimą, requestFrom() išsiunčia STOP pranešimą, iškviečiantį I2C magistralę.

    Jei šis argumentas klaidingas, requestFrom() po užklausos išduos RESTART pranešimą. Padanga neveikia, todėl tarp jungčių negali patekti kitas įrenginys-masters. Tai leidžia vienam laidiniam įrenginiui siųsti daugybę maitinimo įėjimų, kol jis valdys magistralę.

    Sintaksė

    Wire.requestFrom(adresas, kiekis)

    Wire.requestFrom(adresas, kiekis, stotelė)

    Parametrai

    • adresas: pridėsiu 7 bitų adresą, iš kurio bus gauti baitai;
    • kiekis: gautinų baitų skaičius;
    • sustabdyti: loginis. tiesa priverčia STOP pranešimą po užklausos. false priverčia RESTART pranešimą po užklausos, išsaugant aktyvius ryšius.
    Prasmė to, kas apsiverčia

    baitas: pagal nurodytą įrenginį pasuktų baitų skaičius.

    užpakalis

    Wire.beginTransmission()

    apibūdinimas

    Pradeda siuntimą į I2C įrenginius nurodytu adresu. Po to, kai perdavimo baitų seka yra nurodyta naudojant funkciją write (), perdavimas baigiamas naudojant endTransmission () iškvietimą.

    Sintaksė

    Wire.beginTransmission(adresas)

    Parametrai

    adresas: pridėsiu 7 bitų adresą, nes reikia perkelti duomenis.

    Prasmė to, kas apsiverčia

    užpakalis

    Wire.endTransmission()

    apibūdinimas

    Užbaigia perkėlimą į įrenginį, kuris buvo išspausdintas naudojant beginTransmission() metodą, ir perkelia baitus, kurie buvo išsiųsti į įrenginį naudojant Write() metodą.

    Naudoti su daugeliu I2C įrenginių, pradedant nuo Arduino 1.0.1, requestFrom() perkelia argumentą į Būlio duomenų tipą, o tai pakeičia jo elgesį.

    Jei šis argumentas yra teisingas, tada requestFrom() po perdavimo išduoda STOP pranešimą, išlaisvindamas I2C magistralę.

    Jei šis argumentas klaidingas, requestFrom() po perdavimo išsiunčia RESTART pranešimą. Padanga neveikia, todėl tarp jungčių negali patekti kitas įrenginys-masters. Tai leidžia vienam laidiniam įrenginiui siųsti daugybę pavarų valdant magistralę.

    Teoriškai šis argumentas yra senesnis nei tiesa.

    Sintaksė

    Wire.endTransmission()

    Wire.endTransmission(stop)

    Parametrai

    sustabdyti: loginis. tiesa verčia STOP pranešimą po perdavimo. klaidingas jėgų RESTART pranešimas po perdavimo, išsaugoti aktyvų ryšį.

    Prasmė to, kas apsiverčia

    baitas , kuris nurodo perdavimo režimą:

    • 0: sėkmė;
    • 1: reikia daugiau duomenų perdavimo buferiui užpildyti;
    • 2: NACK gautas adreso perdavimo valandą;
    • 3: NACK gautas duomenų perdavimo valandą;
    • 4: Reshta atleisk.
    užpakalis

    Peržiūrėkite rašymo () metodo pavyzdį.

    Wire.write()

    apibūdinimas

    Įrašo duomenis iš nurodyto įrenginio į įvesties įrenginį arba nustato baitus, skirtus perduoti iš pagrindinio įrenginio į nurodytą įrenginį (tarp iškvietimų beginTransmission() ir endTransmission()).

    Sintaksė

    Wire.write(vertė)

    Wire.write (eilutė)

    Wire.write (duomenys, ilgis)

    Parametrai

    • reikšmė: perdavimo vertė, vienas baitas.
    • eilutė: perdavimo tvarka, baitų seka.
    • duomenys: perdavimo duomenų masyvas, baitai.
    • ilgis: perduotinų baitų skaičius.
    Prasmė to, kas apsiverčia

    baitas: write() pasuka parašytų baitų skaičių, nors kai kuriuos iš jų skaityti nėra sunku.

    Užpakalis #įtraukti baito val = 0; void setup() ( Wire.begin(); // prisijungti prie i2c magistralės ) void loop() ( Wire.beginTransmission(44); // perkelti į įrenginį #44 (0x2c) // įrenginio adresas užduotims atlikti techninis aprašymas Wire(val) // siųsti vertės baitą Wire.endTransmission( // praleisti reikšmę if(val = 64) // nustatyti 64 reikšmę (max); ( val = 0; / / pradėti nuo burbuolės) delsimas (500);

    Wire.available()

    apibūdinimas

    Pasuka baitų skaičių, kurį galima gauti naudojant read(). Šis metodas turi būti iškviestas laidiniame įrenginyje po iškvietimo requestFrom() arba pagalbiniame įrenginyje skambučio onReceive() viduryje.

    Sintaksė

    Wire.available()

    Parametrai

    Prasmė to, kas apsiverčia

    Skaitymui prieinamų baitų skaičius.

    užpakalis

    Stebėkite užpakaliuką prieš skaitydami () metodą.

    Wire.read()

    apibūdinimas

    Nuskaito baitą, kuris siunčiamas iš išsiųsto įrenginio į pagrindinį kompiuterį, iškvietus requestFrom() , arba baitą, kuris siunčiamas iš išsiųsto įrenginio į išsiųstą.

    Sintaksė

    Parametrai

    Prasmė to, kas apsiverčia

    baitas: kirmino priėmimo baitas.

    Užpakalis #įtraukti baito val = 0; void setup() ( Wire.begin(); // prisijungti prie i2c magistralės (pagrindo adresai nėra privalomi) Serial.begin(9600); // nustatyti nuoseklųjį prievadą išėjimui ) void loop() ( Wire .requestFrom( 2, 6);// pateikti 6 baitus iš nurodyto įrenginio #2 while(Wire.available()) // galima išsiųsti mažiau nei prašomas įrenginys (char c = Wire.read(); // priimti baitas kaip serijos simbolis .print (c // wrap the symbol ) delay(500);

    Wire.setClock()

    apibūdinimas

    Keičia I2C magistralės ryšio laikrodžio dažnį. I2C įrenginiai neturi minimalaus veikimo laikrodžio dažnio, kuris paprastai yra 100 kHz.

    Sintaksė

    Wire.setClock(clockFrequency)

    Parametrai

    clockFrequency: laikrodžio signalo dažnio reikšmė (hercais). Priimtos vertės yra 100 000 (standartinis režimas) ir 400 000 (švediškas režimas). Kiekvienas procesorius taip pat palaiko 10 000 (mažos spartos režimas), 1 000 000 (didelės spartos plius režimas) ir 3 400 000 (didelės spartos režimas). Norėdami įsitikinti, kad palaikomas reikalingas režimas, eikite į konkretaus procesoriaus dokumentaciją.

    Prasmė to, kas apsiverčia

    Wire.onReceive()

    apibūdinimas

    Registruoja funkciją, kuri bus iškviesta, kai įrenginys gaus perdavimą iš pagrindinio įrenginio.

    Sintaksė

    Wire.onReceive (tvarkytojas)

    Parametrai

    tvarkytojas: funkcija, kuri bus iškviesta įrenginiui gavus duomenis; Turite priimti vieną int parametrą (iš pagrindinio kompiuterio nuskaitytų baitų skaičių) ir nieko nesukti, tada:

    void myHandler(int numBytes)

    Prasmė to, kas apsiverčia

    užpakalis

    #įtraukti void setup() ( Wire.begin(8); // prisijungti prie i2c magistralės adresu #8 Wire.onReceive(receiveEvent); // užregistruoti pojutiklį Serial.begin(9600); // konfigūruoti nuoseklųjį prievadą, kad būtų rodomas ) void loop() ( delay(100); ) // funkcija, kuri iš karto išeis, kai bus gauti duomenys iš pagrindinio įrenginio // ši funkcija užregistruota kaip duomenų tvarkytoja, watch setup() void ReceiveEvent(int howMany) ( while (1< Wire.available()) // пройтись по всем до последнего { char c = Wire.read(); // принять байт как символ Serial.print(c); // напечатать символ } int x = Wire.read(); // принять байт как целое число Serial.println(x); // напечатать число }

    Wire.onRequest()

    apibūdinimas

    Registruoja funkciją, kuri bus iškviesta, kai pagrindinis įrenginys paprašys duomenų iš nurodyto įrenginio.

    Sintaksė

    Wire.onRequest (tvarkytojas)

    Parametrai

    tvarkytojas: funkcija, kurią reikia iškviesti, ji nepriima parametrų ir nieko nepasuka, todėl:

    anuliuoti myHandler()

    Prasmė to, kas apsiverčia

    užpakalis

    Arduino plokštės, kuri veikia kaip įrenginys, kodas:

    #įtraukti void setup() ( Wire.begin(8); // prisijungti prie i2c magistralės adresu #8 Wire.onRequest(requestEvent); // užregistruoti užklausų procesorių ) void loop() ( delay(100); ) // funkcija, Kai tik pagrindinis // užklausos duomenys // ši funkcija užregistruojama kaip apklausos teikėja, žr. setup() void requestEvent() ( Wire.write("labas"); // siųsti pranešimus )