AVR biblioteka, skirta darbui su I2C magistrale ir PCF8583 realaus laiko laikrodžiu. Servo variklių ir žingsninių variklių bibliotekos

Man reikėjo sukurti laikrodį, pagrįstą mikroschema, turinčia I 2 C sąsają. RTC lustas, vadinamasis. "realaus laiko laikrodis" PCF8583.

Mikroschemos viduje yra: laikrodis, žadintuvas, laikmatis, kalendorius (kreivė) ir 240 baitų RAM, kur galite įrašyti bet kokią norimą informaciją. RAM yra labai naudingas dalykas, skirtingai nei „flash“ atmintis, RAM neturi jokių apribojimų perrašymo ciklų skaičiui, o kai kuriuos duomenis ir nustatymus galite išsaugoti joje taip dažnai, kaip norite.

Tačiau buvo viena problema - aš tikrai nenorėjau rašyti kodo, todėl nusprendžiau rasti paruoštą kodą internete. Kaip vėliau paaiškėjo, jį rasti teko „savarankiškai“. Atsisiunčiau darbo su I 2 C pavyzdį, pataisiau jį ir paleidau mikrovaldiklį. Nepavyko. Aš pradėjau dirbti su kodu, ieškodamas priežasties, kodėl jis neveikia... ir buvau pasibaisėjęs!! Kai kuriais atvejais įrašymas buvo vykdomas iš karto visam prievadui, o ne tam tikriems bitams. Taigi, jei prie prievado pridėsite ką nors kita, pavyzdžiui, ekraną, greičiausiai jis neveiks. Be to, duomenų nuskaitymas magistralėje buvo įdiegtas neteisingai (nesugeneravus priėmimo pabaigos sąlygos arba tiesiog be NACK). Bet tai pusė problemos. Pagrindinė problema yra kitokia. Dažnai kodo autorius prievadui nustato loginį „1“, o kaip žinome, I 2 C magistralė valdoma „traukiant“ SDA ir SCL kaiščius prie bendro laido. O logiškas „1“ ant magistralės savo ruožtu susidaro traukiant maitinimo šaltinį į pliusą su 4,7 kiloomų rezistoriais. Taigi, jei mikrovaldiklio išvestis nustatyta į loginį „1“, o pagalbinis įrenginys „traukia“ šią išvestį į bendrą laidą, rezultatas bus „bang-bang“. trumpas sujungimas. Man tai labai nepatiko, todėl nusprendžiau išradinėti savo dviratį ir parašyti savo biblioteką, tiksliau, net 2 bibliotekas: vieną, skirtą darbui su I 2 C magistrale, o kitą tiesiogiai darbui su PCF8583 realiuoju laiku. laikrodis. Taip, beje, kodas parašytas .

Norėdami prijungti I 2 C biblioteką prie projekto, turite ją įtraukti per include, kaip parodyta paveikslėlyje, ir nukopijuoti biblioteką į projekto aplanką.

Po to turite atidaryti failą „i2c.h“ ir nurodyti mikrovaldiklio, kuris veiks kaip I 2 C magistralė, kaiščius. Pagal numatytuosius nustatymus magistralė sukonfigūruota PC0 (SCL) ir PC1 (SDA). ). O sąranka atliekama čia:

Tai viskas, sujungėme I2C biblioteką, sukonfigūravome kojeles ir biblioteka paruošta naudoti. Naudojimo pavyzdys:

I2c_init(); // Inicijuoti I2C magistralę i2c_start_cond(); //paleisti magistralę i2c_send_byte (0xA0); // įrenginio, kuris kabo magistralėje, adresas i2c_send_byte (0x10); // duomenų baitas, įrašytas į įrenginį i2c_send_byte (0x10); // kitas duomenų baitas, kurį įrašome į įrenginį i2c_stop_cond(); // sustabdyti padangas

Pasibaigus sustabdymo sąlygai, galime patikrinti, ar su I 2 C magistrale viskas gerai. Norėdami tai padaryti, turime perskaityti kintamąjį „i2c_frame_error“. Jei viskas normalu, tada bus 0. Jei vienas iš magistralės kontaktų nėra „pritrauktas“ prie maitinimo šaltinio, o loginis „1“ neįdiegtas magistrale, tada biblioteka sukuria klaidą ir įrašo 1 skaičius kintamajam „i2c_frame_error“ Nuskaitykite kintamąjį „i2c_frame_error“ po sustabdymo sąlygos. Žemiau esančiame paveikslėlyje parodysiu, kaip veikia klaidų valdymas:

Dabar prijunkite PCF8583 realaus laiko laikrodžių biblioteką. Norėdami tai padaryti, turite atlikti tuos pačius veiksmus. Nukopijuokime failą "PCF8583.h" į projekto aplanką ir įtraukite jį į įtraukimą, kaip nuotraukoje:

Paruošta. Prijungta PCF8583 realaus laiko laikrodžių biblioteka. Tam nereikia jokių nustatymų, todėl iš lusto galite iš karto pradėti skaityti laiką ir datą. Atkreipkite dėmesį, kad PCF8583 biblioteka veikia naudojant I2C biblioteką, todėl jei norime dirbti su PCF8583, turime sujungti abi bibliotekas!

Bibliotekos naudojimo pavyzdys (rašymo ir skaitymo laikas ir data):

// Inicijuoti I2C magistralę i2c_init(); // Paruoškite rašymo į PCF8583 lustą laiką ir datą PCF_hour=23; // 23 valandos PCF_min=59; // 59 minutės PCF_day=31; // 31 diena PCF_month=12; // 12 mėn. – gruodis PCF_year=0; // metai (0 – ne keliamieji metai) PCF_savaitės diena=6; // 6-oji savaitės diena (sekmadienis) // Įrašykite laiką ir datą į PCF8583 lustą PCF_write_hh_mm_ss(); // Skaitykite laiką ir datą iš PCF8583 lusto PCF_read_hh_mm_ss(); Darbo su RAM (rašymas ir skaitymas) pavyzdys: // Paruoškite 5 baitus rašymui į PCF8583 lustą PCF_data_ram_1=255; // 1 baitas PCF_data_ram_2=255; // 2 baitas PCF_data_ram_3=255; // 3 baitas PCF_data_ram_4=255; // 4 baitas PCF_data_ram_5=255; // 5 baitas // Įrašykite 5 baitus į PCF8583 lustą PCF_write_ram(); // Skaityti 5 baitus iš PCF8583 lusto PCF_read_ram();

Skaityti iš mikroschemos dar lengviau – tiesiog iškvieskite funkcijąPCF_ skaityti_ hh_ mm_ ss() po to laikas ir data bus rodomi kintamuosiuose, iš kur juos tiesiog paimsite. Norėdami nuskaityti RAM, atitinkamai naudojame funkcijąPCF_ skaityti_ avinas() po to renkame duomenis kintamaisiaisPCF_ duomenis_ avinas_ N

Čia yra kintamųjų sąrašas, kur ir kas saugoma:

// laikas ir data PCF_valanda=0; // laikas, valandos (nuo 0 iki 23, apsauga nuo perpildymo rašant ir skaitant) PCF_min=0; // laikas, minutės (nuo 0 iki 59, apsauga nuo perpildymo rašant ir skaitant) PCF_sec=0; // laikas, sekundės (tik skaityti, rašant atstatyti į 00) PCF_day=0; // diena (nuo 1 iki 31, apsauga nuo perpildymo rašant ir skaitant) PCF_weekday=0 // savaitės diena (0-pirmadienis; 6-sekmadienis, apsauga nuo perpildymo rašant ir skaitant) PCF_month=0; // mėnuo (nuo 1 iki 12, apsauga nuo perpildymo rašant ir skaitant) PCF_year=0; // metai (0-šuolis; 1,2,3-nešuolis, apsauga nuo perpildymo rašant ir skaitant) // RAM PCF_data_ram_1; // Duomenys (PCF8583 RAM), 1 baitas PCF_data_ram_2; // Duomenys (PCF8583 RAM), 2 baitas PCF_data_ram_3; // Duomenys (PCF8583 RAM), 3 baitas PCF_data_ram_4; // Duomenys (PCF8583 RAM), 4 baitas PCF_data_ram_5; // Duomenys (PCF8583 RAM), 5 baitas

Dabar papasakosiu apie apsaugą nuo perpildymo. Tarkime, pamiršome prijungti mikroschemą. Perskaitykime duomenis iš mikroschemos, ir... bus nuskaitytas baitas 11111111, arba skaičius 255. Reikalas tas, kad I 2 C magistralė yra paremta 2 traukimo rezistoriais, todėl jie mums duoda loginius „vienus“. jei mikroschema neprijungta. Norėdami apsisaugoti nuo tokių atvejų, PCF8583 bibliotekoje padariau apsaugą nuo perpildymo, kuri užtikrina, kad laikrodis jums nerodytų 62 valandos 81 minutės... Perpildymo buvimą galima stebėti perskaičius „PCF_overflow“ kintamąjį. Jei jis yra 0, tada perpildymo klaidų nebuvo. Jei jame yra 1 ar daugiau, yra perpildymo klaidų. Po datos ir laiko skaitymo funkcijos turite perskaityti kintamąjį „PCF_overflow“.PCF_ skaityti_ hh_ mm_ ss()

Aiškumo dėlei pridedamas AVR Studio 6 projektas, skirtas ATmega32. Galite perkompiliuoti bet kuriam AVR. Projekte taip pat prijungiau ekraną vizualiniam valdymui. Įjungus maitinimą, mikrovaldiklis nustato 23 valandas 59 minutes, gruodžio 31 d., sekmadienį. O po minutės tampa 00 valandos 00 minučių, sausio 1 d., pirmadienis.

Dabar aš jums pasakysiu, kodėl aš kalbėjau apie „kreivą“ šios mikroschemos kalendorių. Reikalas tas, kad mikroschema nežino, kaip išsaugoti einamuosius kalendorinius metus, o saugo tik keliamųjų metų vėliavėlę. Trumpai tariant:
0 – keliamieji metai
1 – ne keliamieji metai
2 – ne keliamieji metai
3 – ne keliamieji metai

Ir taip toliau cikle 0-1-2-3-0-1-2-3-0...

Apskritai, norėdami sukurti įprastą kalendorių, turite įdiegti programinę įrangą ir metų taupymą, pavyzdžiui, tame pačiame RAM PCF8583, bet tai nėra patogu. Ir pagrindinis dalykas yra tai, kad jei grandinė bus išjungta, deja, niekas neperrašys atminties...

Taip pat straipsnio pabaigoje pridedu trumpą video reportažą. Galiu pasakyti, kad esu pradedantysis programuoti, nors programuoju jau 3 metus (po truputį), griežtai nevertinkite kodo, jei yra papildymų ar pastabų, rašykite, pataisysime. Sėkmės visiems gaminant!

Radioelementų sąrašas

Paskyrimas Tipas Denominacija Kiekis PastabaParduotuvėMano užrašų knygelė
MK AVR 8 bitų

ATmega32

1 Į užrašų knygelę
Realaus laiko laikrodis (RTC)

PCF8583

1 Į užrašų knygelę
LCD ekranasWH16021

Šiame straipsnyje pabandėme vienoje vietoje surinkti nuorodas į visas populiariausias Arduino bibliotekas, taip pat parengėme populiariausių bibliotekų rinkinį. Anksčiau ar vėliau bet kuris Arduino vartotojas susiduria su būtinybe naudotis viena ar kita biblioteka. Juk naudojant paruoštą kodą labai sutrumpėja programavimo laikas. Tikimės, kad vienoje vietoje surinkta ir su atsisiuntimo nuorodomis bei trumpais naudojimo pavyzdžiais pateikta informacija apie populiarias bibliotekas jums padės jūsų projektuose.

Arduino biblioteka yra savotiška programos kodas, saugomi ne eskize, o išorinius failus, kurį galima prijungti prie jūsų projekto. Bibliotekoje yra įvairių metodų ir duomenų struktūros, reikalingos darbui su jutikliais, indikatoriais, moduliais ir kitais komponentais supaprastinti. Paruoštų programų naudojimas labai supaprastina darbą su projektais, nes galite sutelkti dėmesį į pagrindinę logiką, negaišdami laiko daugybei smulkmenų.

Sukurta šiandien puiki suma bibliotekas, kurias galima lengvai rasti ir atsisiųsti iš interneto. Didžioji dauguma bibliotekų yra platinamos nemokama licencija, todėl nereikia ieškoti „piratinių“ versijų. Svarbiausia išmokti.

„Arduino“ standartinės bibliotekos

Susipažinti su bibliotekomis geriau pradėti nuo oficialios svetainės, kurioje galite rasti įspūdingą standartinių modulių sąrašą ir nuorodas į oficialias partnerių bibliotekas.

Integruotų bibliotekų sąrašas (jos yra su Arduino IDE paskirstymu):

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

Bibliotekų pasirinkimas viename archyve

Jei neturite laiko išsamiai daugelio svetainių analizei ir norite atsisiųsti viską, ko reikia darbui išoriniai įrenginiai Arduino viename archyve parengėme 40 populiariausių bibliotekų sąrašą. Tiesiog išpakuokite jo turinį (bibliotekų aplanką) į Arduino aplanką.

Ekranų, indikatorių ir ekranų bibliotekos

I2C biblioteka

Biblioteka, skirta valdyti periferinį įrenginį naudojant I2C protokolą.

Naudojimo pavyzdys:

#ifndef I2C_MASTER_H

#define I2C_MASTER_H

void I2C_init (void) – objekto kūrimas, teisingo magistralės dažnio nustatymas.

uint8_t I2C_start () – ryšio su nauju įrenginiu užmezgimas.

uint8_t I2C_write() – įrašo duomenis į esamą įrenginį.

uint8_t I2C_read_ack() – nuskaitykite baitą iš įrenginio, paprašykite kito baito.

Skystųjų kristalų biblioteka

Standartinė biblioteka, įdiegta Arduino IDE. Sukurtas LCD skystųjų kristalų ekranams valdyti.

Naudojimo pavyzdys:

#įtraukti . Taip pat, kad nepadarytų klaidų rašant, galite prisijungti per meniu Sketch – Import Library – LiquidCrystal.

Klasės konstruktorius yra LiquidCristal(...). Argumentai yra rs, rw, en, do...d7. Pirmieji 3 atitinka RS, RW ir Enable signalo kaiščius. Kaiščiai d atitinka duomenų magistralių, prie kurių prijungtas ekranas, skaičių.

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

void createChar(skaičius, duomenys) – metodas, reikalingas norint sukurti pasirinktinius simbolius.

UTFT biblioteka

Standartinė biblioteka, reikalinga „Arduino“ darbui su TFT ekranais skirtingi tipai. Visi palaikomi ekranai rodomi lydimąjį dokumentą su biblioteka.

Naudojimo pavyzdys:

#įtraukti

UTFT(); – sukurti UTFT egzempliorių.

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

textRus(string st, int x, int y); – išveda eilutę, nurodantį parametrą. Pavyzdžiui, g.textRus("Temperatūra, C", 0, 20);

LedControl biblioteka

Leidžia valdyti septynių segmentų ekranus ir sujungti LED masyvą į vieną matricą.

Naudojimo pavyzdys:

#įtraukti

LedControl lc1= LedControl();

– reikalinga bibliotekai inicijuoti. Turėtų būti sudarytas iš keturių argumentų – kaiščių, prie kurių prijungtas ekranas, skaičius (pirmieji 3 argumentai) ir prijungtų lustų skaičiaus.

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

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

setIntensity() – ryškumo valdymas.

Bibliotekos, skirtos darbui su Arduino data ir laikas

Biblioteka RTClib

Biblioteka, skirta darbui su realiojo laiko laikrodžiu, supaprastinanti sąveiką su Arduino.

Naudojimo pavyzdys:

#įtraukti

RTC_DS1307 RTC; – jutiklio pasirinkimas (šiuo atveju DS1307).

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

dayOfTheWeek() – išveda savaitės dieną. Argumentas nuo 0 iki 6, 0 – sekmadienis.

Timelib biblioteka

Leidžia Arduino gauti informaciją apie datą ir laiką tam tikru momentu.

Naudojimo pavyzdys:

#įtraukti

Laikas(); – sukurti egzempliorių.

setTime(t); – laiko nustatymas. T argumentas yra valanda, minutė, sekundė, diena, mėnuo ir metai.

timeStatus(); – rodo, ar nustatytas laikas.

koreguotiLaikas(reguliavimas); – laiko nustatymas.

Biblioteka Ds1307

Biblioteka patogiai DS1307 laikrodžio sąveikai su Arduino naudojant Wire biblioteką.

Naudojimo pavyzdys:

#įtraukti

klasė DS1307RTC – DS1307 objekto sukūrimas.

SetTime() – laiko nustatymas.

get() – nuskaito RTC, grąžina gautą datą POSIX formatu.

Set(time_t t) – datos įrašymas į RTC

Biblioteka DS 3231

Sukurta valdyti datą ir laiką ds3231 modulyje.

#include „ds3231.h“

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

getTime (); – datos ir laiko skaitymas iš laikrodžio.

setDate(data, pirmadienis, metai); – datos nustatymas.

Arduino sistemos bibliotekos

EEPROM biblioteka

Standartinė biblioteka. Sukurta dirbti su nepastoviąja atmintimi (duomenų įrašymas, skaitymas).

Naudojimo pavyzdys:

#įtraukti

EEPROM.skaityti(); – objekto kūrimas, baito nuskaitymas adresu iš nepastovios atminties.

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

EEPROM.put() – rašo slankiojo kablelio skaičių eilutes.

EEPROM.get() – skaityti eilutes ir slankiojo kablelio skaičius.

Programinės įrangos serijinė biblioteka

Biblioteka, leidžianti įdiegti nuosekliąsias sąsajas iš bet kokių skaitmeninių kontaktų. Taip pat leidžia sukurti kelis nuosekliuosius prievadus, veikiančius iki 115200 bodų greičiu.

#įtraukti

SoftwareSerial mySerial(RX, TX) – objekto kūrimas, argumentai – kontaktai, prie kurių prijungiami RX ir TX.

Serial.begin(); – nustato prievado greitį ryšiui tarp Arduino ir kompiuterio.

mySerial.overflow() – patikrina, ar įvesties buferyje nėra perpildymo.

Matematikos biblioteka

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

Naudojimo pavyzdys:

#įtraukti

Matematika (); – matematikos egzemplioriaus kūrimas.

Serial.print("cos num = "); – grąžina skaičiaus kosinusą.

Serial.println(fmod(double__x, double__y)); – grąžina skaičius modulo.

Planavimo biblioteka

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

Naudojimo pavyzdys:

#įtraukti

Tvarkaraštis; – sukurti egzempliorių.

Scheduler.startLoop() – leidžia pridėti funkciją, kuri bus vykdoma kartu su loop().

result() – leidžia perduoti valdymą kitoms užduotims.

Servo variklių ir žingsninių variklių bibliotekos

Servo biblioteka

Standartinė biblioteka. Būtinas valdant servovariklius ir dažnai naudojamas robotų projektuose su manipuliatoriais.

Naudojimo pavyzdys:

#įtraukti

Servo myservo; – sukurti objektą servovarikliui.

myservo.attach(); – išėjimo, prie kurio prijungtas servovariklis, numeris.

myservo.write(180, 30, true); – judėjimas 180 laipsnių, greitis 30, laukiama judesio pabaigos.

Stepper biblioteka

Būtinas vienpoliams ir dvipoliams žingsniniams varikliams valdyti.

#įtraukti

const int stepsPerRevolution = ; – žingsnių skaičius, per kurį variklis įveikia visą apsisukimą.

Stepper myStepper = Stepper(žingsniai, pin1, pin2) – sukuria klasės egzempliorių su nurodytu žingsnių ir kaiščių skaičiumi, prie kurių prijungtas variklis.

Arduino jutiklių bibliotekos

DHT biblioteka

#įtraukti< DHT.h>

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

dht.begin(); – jutiklio paleidimas.

float t = dht.readTemperature(); – dabartinės temperatūros reikšmės nuskaitymas Celsijaus laipsniais.

Dalaso temperatūros biblioteka

Sukurta dirbti su Dalaso jutikliais. Veikia kartu su OneWire biblioteka.

#įtraukti

Dalaso temperatūros dalaso jutikliai (&oneWire); – OneWire objekto perkėlimas darbui su jutikliu.

įrašyti į registrą.

spausdinimoTemperatūra (jutiklio adresas); – prašymas gauti išmatuotą temperatūros vertę.

Ultragarso biblioteka

Leidžia Arduino dirbti su ultragarsiniu atstumo matavimo jutikliu HC-SR04.

#įtraukti

Ultragarsinis ultragarsas (tig, echo) – objekto deklaravimas, argumentai – Trig contact ir Echo contact.

dist = ultrasonic.distanceRead(); – atstumo iki objekto nustatymas. Argumentas – centimetrai (CM) arba coliai (INC).

Timing() – impulso trukmės nuskaitymas Echo išvestyje, konvertavimas į reikiamą skaičių sistemą.

ADXL345 biblioteka

Sukurta dirbti su ADXL345 akselerometru.

Naudojimo pavyzdys:

#įtraukti

ADXL345_ADDRESS – objekto kūrimas, nurodant jo adresą.

ADXL345_REG_DEVID – įrenginio identifikavimas.

ADXL345_REG_OFSX – poslinkis išilgai X ašies.

ADXL345_REG_BW_RATE – duomenų perdavimo spartos valdymas.

Biblioteka BME280

Sukurta dirbti su temperatūros, drėgmės ir slėgio jutikliu BME280.

Naudojimo pavyzdys:

#įtraukti

BME280_ADDRESS – BME280 objekto sukūrimas, nurodant jo adresą.

begin(uint8_t addr = BME280_ADDRESS); – jutiklio veikimo pradžia.

getTemperature – išmatuotos temperatūros gavimas.

getPressure – išmatuoto slėgio gavimas.

BMP280 biblioteka

Reikalingas darbui su BMP280 atmosferos slėgio jutikliu.

Naudojimo pavyzdys:

#įtraukti

BMP280_CHIPID – egzemplioriaus kūrimas, nurodant jo adresą.

getTemperature(float *temp); – išmatuotos temperatūros gavimas.

getPressure(float *slėgis); – išmatuoto slėgio vertės gavimas.

Biblioteka BMP085

Būtina naudoti su BMP085 slėgio jutikliu.

Naudojimo pavyzdys:

#įtraukti

Adafruit_BMP085 bmp; – sukurti BMP085 egzempliorių.

dps.init(MODE_ULTRA_HIGHRES, 25000, tiesa); – slėgio matavimas, argumentas 25000 – aukštis virš jūros lygio (šiuo atveju 250 m virš jūros lygio).

dps.getPressure(&Slėgis); – slėgio nustatymas.

Pirštų atspaudų biblioteka

Būtina dirbti su pirštų atspaudų skaitytuvu.

Pavyzdysnaudoti:

#įtraukti

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); – piršto objekto deklaravimas. Parametras – nuoroda į objektą darbui su UART, prie kurio prijungtas modulis.

pirštas.begin(); – pirštų atspaudų modulio inicijavimas.

Func_sensor_communication(); – iškviečiamas pirštų atspaudų modulis.

Ryšių bibliotekos

Laidų biblioteka

Būtina dirbti su dviejų laidų I2C sąsaja.

Naudojimo pavyzdys:

#įtraukti

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

Wire.requestFrom() – pagrindinė baitų užklausa iš pagalbinio įrenginio.

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

Irremote biblioteka

Būtina, kad „Arduino“ veiktų su IR imtuvu.

Naudojimo pavyzdys:

#įtraukti

IRrecv irrecv(RECV_PIN); – kaištis, prie kurio prijungtas IR imtuvas.

SetPinAndButton(int ir1,int ir2,int pin) – leidžia sukonfigūruoti konkrečią išvestį, kad suveiktų esant nurodytoms ir1, ir2 reikšmėms.

GSM biblioteka

Reikalingas norint prisijungti per GSM kortelę prie GSM/GRPS tinklo. Su jo pagalba galite įgyvendinti GSM telefono atliekamas operacijas, dirbti su balso skambučiais ir prisijungti prie interneto per GRPS.

Naudojimo pavyzdys:

#įtraukti

GSM GSMAccess – inicijuoja klasės egzempliorių.

gprs.powerOn() – maitinimas įjungtas.

GPRS – interneto ryšio nustatymas.

GSM – radijo modemo valdymas.

RFID biblioteka

Reikalingas norint prijungti Arduino ir RFID modulį.

Naudojimo pavyzdys:

#įtraukti

RFID rfid (SS_PIN, RST_PIN); – RFID egzemplioriaus kūrimas, argumentai – kaiščiai, prie kurių prijungiamas modulis.

rfid.init(); – RFID modulio inicijavimas.

MFRC 522 biblioteka

Reikalingas norint prijungti Arduino ir MFRC522 modulį.

Naudojimo pavyzdys:

#įtraukti

MFRC522 mfrc522 (SS_PIN, RST_PIN); – MFRC522 egzemplioriaus sukūrimas, argumentai, nurodantys išėjimus, prie kurių prijungtas modulis.

mfrc522.PCD_Init(); – MFRC522 inicijavimas.

Ethershield biblioteka

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

Reikalingas norint prijungti Arduino prie vietinis tinklas arba internetu. Biblioteka nebepalaikoma nauja versija Eterinė kortelė. Taip pat yra standartinė biblioteka Ethernet.

Naudojimo pavyzdys:

#include "EtherShield.h"

#įtraukti

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

eteris.begin(dydis Ethernet::buferis, mymac,); – pradžia, argumentai – Mac adresas ir prievado numerį, prie kurio prijungta CS išvestis.

Biblioteka Nrf24l01

Reikalingas darbui su RF24 radijo moduliu.

Naudojimo pavyzdys:

#include „RF24.h“

RF24 – konstruktorius sukuria naują tvarkyklės egzempliorių. Prieš naudodami turite sukurti egzempliorių ir nurodyti kaiščius, prie kurių prijungtas lustas (_cepin: įgalinti modulio kaištį, cspin: pasirinkti modulio kaištį).

Pradėti – lusto veikimo pradžia.

setChannel – RF ryšio kanalai.

setPayloadSize – fiksuoto pervedimo dydžio nustatymas.

getPayloadSize – gauti fiksuotą dydį.

TinyGPS biblioteka

Būtinas norint skaityti GPGGA ir GPRMC pranešimus. Padeda nuskaityti padėtį, datą, laiką, aukštį ir kitus parametrus.

Naudojimo pavyzdys:

#įtraukti

TinyGPS GPS; – sukurti TinyGPS egzempliorių.

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

gps.stats() – statistikos metodas. Nurodo, ar gauti teisingi duomenys, ar ne.

Arduino IDE bibliotekos

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

  • Integruotos yra bibliotekos, kurios iš pradžių įdiegtos Arduino aplinka IDE. Jų nereikia atsisiųsti ar įdiegti papildomai, juos galima naudoti programoje iškart paleidus kūrimo aplinką.
  • Papildomos bibliotekos, kurias turite atsisiųsti ir įdiegti patys. Paprastai tokio tipo biblioteką kuria jutiklių, jutiklių ir kitų komponentų gamintojas, palengvinantis darbą su Arduino.
  • Priklausomos bibliotekos – įdiegtos kaip papildomos bibliotekos asistentas, atskirai nuo jos neveikia.

Labiausiai paprastu būdu dirbant su Arduino bibliotekomis reikia naudoti integruotas Arduino IDE kūrimo aplinkos galimybes. Apie tai kalbėsime atskirame straipsnyje.

Šiame straipsnyje aš jums pasakysiu, kaip naudoti I2C sąsajos modulį LCD ekranui (2x16 / 20x4) valdyti naudojant Arduino. Šis modulis leidžia sumažinti naudojamų valdiklio kaiščių skaičių vietoj 8 arba 4 bitų jungties, reikia tik 2 kontaktų (SDA ir SCL).

Techninės specifikacijos

Ekrano palaikymas: LCD 16×02 / 20×04
Pasirinktinai: kontrasto reguliavimas
Maitinimo įtampa. 5V
Sąsaja: I2C
Matmenys: 54mm x 19mm x 15mm

Bendra informacija apie I2C sąsajos modulį

Kadangi Arduino valdiklių kontaktų skaičius yra ribotas ir dažnai naudojamas įvairūs jutikliai ir jiems baigiasi moduliai, reikia juos issaugoti, šiems atvejams buvo sukurtas šis modulis, kurio pagalba galima realizuoti perdavimą per du kontaktus (SDA ir SCL).

Dabar šiek tiek apie patį modulį, jis pastatytas ant PCF8574T lusto. Rezistoriai R8 (4,7 kOhm) ir R9 (4,7 kOhm) yra būtini norint ištraukti SDA ir SCL linijas. Idealiu atveju, jungiant du ar daugiau įrenginių per I2C magistralę, reikia naudoti tik viename įrenginyje, I. vėliau parašysiu kodėl. Plokštėje yra trys trumpikliai (schema rodo, kad linijos A0, A1, A2 yra prijungtos prie maitinimo šaltinio per rezistorius R4, R5, R6), jie reikalingi įrenginio adresavimui pakeisti, iš viso yra 8 variantai . Adresavimo pakeitimas suteikia galimybę prijungti iki aštuonių įrenginių per IC2 magistralę su PCF8574T lustu, adreso parinktys parodytos paveikslėlyje (numatytasis įrenginio adresas yra 0x27). Modulis taip pat aprūpintas potenciometru R11, kurio pagalba galima keisti LCD ekrano kontrastą.

Modulio prijungimui yra trys kontaktų grupės:

Pirmoji grupė:
SCL: serijinis laikrodis
SDA: duomenų linija (Serial Dфta)
VCC: „+“ galia
GND: "-" maitinimo šaltinis

Antroji grupė:
VSS: "-" galia
VDD: "+" maitinimo šaltinis
BALSAS: kontrasto valdymo kaištis
RS: Registruotis Pasirinkite
RW: skaitymas / rašymas (rašymo režimas, kai prijungtas prie žemės)
E: Įjungti (kritimo švytėjimas)
DB0-DB3: žemi sąsajos bitai
DB4-DB7: sąsajos aukšti bitai
A: „+“ foninio apšvietimo maitinimo šaltinis
K: "-" foninio apšvietimo galia

Trečioji grupė: (pagal numatytuosius nustatymus nustatytas trumpiklis)
VCC:
A iš LCD:

Prisijungimas prie Arduino

Reikalingos dalys:
Arduino UNO R3 x 1 vnt.
LCD ekranas 1602A (2×16, 5V, Mėlyna) x 1 vnt.
Sąsajos modulis I2C, IIC, TWI skirtas LCD x 1 vnt.
DuPont viela, 2,54 mm, 20 cm, F-M (Moteriška - Vyriška) x 1 vnt.
USB kabelis 2,0 A-B x 1 vnt.

Ryšys:
Pirmiausia prie LCD ekrano prilituojame I2C modulį, tada reikia ekraną prijungti prie Arduino UNO. Tam naudosime DuPont laidus, kuriuos sujungsime pagal toliau pateiktą lentelę.

Aiškumo dėlei pateiksiu kitą diagramą.

Norėdami atlikti šį eksperimentą, turite atsisiųsti ir įdiegti „LiquidCrystal_I2C“ biblioteką. Tada nukopijuokite ir įklijuokite šį pavyzdinį kodą į Arduino IDE programos langą ir įkelkite jį į valdiklį.

/* Išbandyta naudojant Arduino IDE 1.6.11 Bandymo data 2016-09-15 */ #įtraukti #įtraukti LiquidCrystal_I2C lcd(0x27,16,2); // Nustatykite ekrano adresą ir dydį void setup() ( lcd.init(); // Inicijuoti lcd lcd.backlight(); // Įjunkite foninį apšvietimą lcd.setCursor(0,0); // Nustatykite žymeklį į 1 eilutės pradžią lcd .print("Sveikas, pasauli" // Spausdinti tekstą lcd.setCursor(0,1) // Nustatyti žymeklį į 2 eilutės pradžią lcd.print("www. robotchip.ru"); // Spausdinti tekstą ) void loop() ( )

Atsisiųsti programą

Jei viską padarėte teisingai, bet ekrane nėra simbolių, pabandykite padidinti kontrastą potenciometru.


Nuorodos
Atsisiųskite LiquidCrystal_I2C biblioteką
PCF8574T lusto dokumentacija
LCD1602A dokumentacija

Pirkite Aliexpress

Dalintis