Naravno, evo strukture za članak o tome kako koristiti I2C skener s Arduinom.
I2C ili Inter-Integrated Circuit protokol je važan komunikacijski protokol koji Arduino mikrokontroleri koriste za komunikaciju s različitim senzorima, uređajima za prikaz i drugim mikrokontrolerima. Razumijevanje i korištenje I2C protokola može značajno proširiti mogućnosti vaših Arduino projekata.
Ponekad se može pojaviti potreba za otkrivanjem ili potvrdom I2C adrese uređaja (poput senzora ili displeja) spojenog na vaš Arduino. U ovom slučaju, I2C skener dobro dolazi. Može da identifikuje adrese svih povezanih I2C uređaja - vitalni prvi korak u efikasnom korišćenju I2C komunikacije.
Korištenje I2C skenera
Najpopularniji dostupni I2C skener napisao je Tod E. Kurt, entuzijasta arduina. Pruža brzu i jednostavnu povratnu informaciju o povezanim I2C uređajima na vaš arduino.
#include
void setup ()
{
Wire.begin();
Serial.begin (9600);
Serial.println(“nI2C skener”);
}
void loop ()
{
greška u bajtu, adresa;
int nDevices;
Serial.println(“Skeniranje…”);
nUređaji = 0;
for(address = 1; adresa < 127; adresa++ ) { // Počnite s adresom uređaja da vidite da li postoji odgovor Wire.beginTransmission(address); greška = Wire.endTransmission(); if (greška == 0) { Serial.print("I2C uređaj pronađen na adresi 0x"); if (adresa<16) Serial.print(""); Serial.print(adresa,HEX); Serial.println(" !"); nDevices++; } } if (nDevices == 0) Serial.println("Nije pronađen nijedan I2C uređaj"); else Serial.println("donen"); kašnjenje (2000); } [/code]
Objašnjenje koda
Kod počinje uključivanjem Wire biblioteke koja je ugrađena u Arduino biblioteku dizajniranu za I2C komunikaciju. Pruža funkcije koje pomažu čitanju i pisanju podataka u I2C magistrali.
U funkciji podešavanja, Wire.begin() inicijalizuje I2C sabirnicu i serijska komunikacija se pokreće brzinom od 9600 baudova.
U funkciji petlje, kod skenira svaku adresu na I2C magistrali, pokušavajući uspostaviti komunikaciju pomoću Wire.beginTransmission() i završava komunikaciju sa Wire.endTransmission().
Ako se uređaj pronađe na određenoj adresi, kod I2C skenera ispisuje ovu adresu u serijski monitor. Ako nije pronađen nijedan uređaj, skener ispisuje odgovarajuću poruku. Proces skeniranja se ponavlja svake dvije sekunde.
I2C u Arduino bibliotekama
Wire biblioteka je neophodna za I2C komunikaciju u Arduinu. Ova biblioteka apstrahuje složene operacije uključene u I2C, olakšavajući početnicima i iskusnim koderima da koriste ovaj komunikacioni protokol. Biblioteka Wire je izgrađena na dvije glavne funkcije: Wire.begin() koja se koristi za inicijalizaciju I2C magistrale i Wire.beginTransmission(addr) koja počinje prijenos do uređaja na adresi 'addr'.
Učenje o Arduino bibliotekama kao što je Wire može uvelike poboljšati vaše projekte I2C uređaja. Ovo je posebno tačno jer se razvija sve više i više biblioteka otvorenog koda koje su prilagođene korisniku, koje dodatno pojednostavljuju upotrebu složenih perifernih interfejsa kao što je I2C.
Svaki Arduino projekat napreduje na efikasnom korišćenju dostupnih biblioteka. Za I2C uređaje, razumijevanje Wire biblioteke je ključno. Nadam se da je ovaj pregled i detaljan pogled na I2C kod za skeniranje poboljšao vaše znanje o I2C protokolu i Arduinu.