60 nap alatt Arduino #28 - I2C busz általában
60 nap alatt Arduino #28 - I2C busz általában
Az I2C protokoll alapalkalmazása, általános irányelvek.
A 28. leckében leírt I2C szkenner (első pillanatra) bonyolultnak tűnik.
Megkíséreltem annak alapján, de a 29. leckében ismertetett parancsok alkalmazásával egy egyszerűbb változatot írni.
Remekül működik, az EXT1 panelen 3 I2C eszközt talált: 0x48, 0x50 és 0x51 címeken!
Megkíséreltem annak alapján, de a 29. leckében ismertetett parancsok alkalmazásával egy egyszerűbb változatot írni.
Kód: Egész kijelölése
/*----------------------------------------------------------------
Projekt: AVR-DUINO/Shieldboard Ext1
Fájlnév: I2C_SCANNER.PDE
------------------------------------------------------------------
*/
#include <Wire.h>
int counter, data;
void setup() {
// a ledpin kivezetést kimenetként konfigurálja
pinMode(13, OUTPUT);
// ledpin kivezetés magasba állítása (háttérvilágítás kikapcsolása)
digitalWrite(13, LOW);
// soros port inic
Serial.begin(9600);
Serial.println();
Serial.println();
Serial.println("I2CScanner ready!");
Serial.println("starting scanning of I2C bus from 1 to 127");
Serial.println("------------------------------------------");
Serial.println();
Wire.begin();
}
void loop() {
for (counter=1; counter<128; counter++) {
Wire.requestFrom(counter,1);
Serial.print("addr: ");
if (counter<16) Serial.print("0");
Serial.print(counter,HEX);
if (Wire.available()) {
Serial.print(" found!");
}
else {
Serial.print(" ");
}
Serial.print( (counter%4) ? "\t":"\n");
delay(1);
}
while(1) {
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(300);
}
}
És az I2C szkanner futtatásának eredménye:
A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu
A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu
Gyakran előfordul hogy 5V on működő mikrokontrollert szeretnénk egy 3,3V-os I2C eszközt csatlakoztatni, ilyenkor nem árt shift level áramkört alkalmazni.
http://www.rcpilot.hu/users/1827/15882/ ... 449289.jpg
http://www.rcpilot.hu/users/1827/15882/ ... 449289.jpg
Máshoz lehet jó, I2C-hez nem kell, 5V-ra kell kötni a buszt.GPeti írta:Gyakran előfordul hogy 5V on működő mikrokontrollert szeretnénk egy 3,3V-os I2C eszközt csatlakoztatni, ilyenkor nem árt shift level áramkört alkalmazni.
ld. 1995-ös magyar Philips I2C leírás, 21. ábra.
ugyanitt 10.0:
A 1,5 és 3 voltos fix bemeneti jelszintű I2C eszközök mind rendelkezhetnek megfelelő saját tápfeszültséggel. A felhúzó ellenállásokat 5V+/-10%-os tápfeszültségre kell kötni
Re: 60 nap alatt Arduino #28 - I2C busz általában
Most egy kicsit elakadtam, nem csak a szavam.
A tanfolyamos program már a fordítóban elakad, van benne egy rész amivel nem tud mit kezdeni :
..." Serial.print(" ");
}
Serial.print( (counter%4) ? "\t":"\n");
&n
bsp; delay(1);
}
while(1) {"
Amennyiben ezt eltávolítom akkor lefordul, és feltölthető, de a 43-as cím után a futás megáll (lefagy) a szkennelésben. szegoj programja hasonlóan viselkedik, az is ugyanott áll meg.
Lehetséges , hogy szegény EXT1 shildem beteg? ( az arduino Uno-mon shild nélkül szépen végig megy a szken).
Van valakinek véleménye javaslata?
(Arduino Uno R3 Ext1 shild, Arduino 1.0.6 verzival próbáltam)
A tanfolyamos program már a fordítóban elakad, van benne egy rész amivel nem tud mit kezdeni :
..." Serial.print(" ");
}
Serial.print( (counter%4) ? "\t":"\n");
&n
bsp; delay(1);
}
while(1) {"
Amennyiben ezt eltávolítom akkor lefordul, és feltölthető, de a 43-as cím után a futás megáll (lefagy) a szkennelésben. szegoj programja hasonlóan viselkedik, az is ugyanott áll meg.
Lehetséges , hogy szegény EXT1 shildem beteg? ( az arduino Uno-mon shild nélkül szépen végig megy a szken).
Van valakinek véleménye javaslata?
(Arduino Uno R3 Ext1 shild, Arduino 1.0.6 verzival próbáltam)
Re: 60 nap alatt Arduino #28 - I2C busz általában
Kellene a teljes programkód, ill képernyőkép hogy hol akad el....
Re: 60 nap alatt Arduino #28 - I2C busz általában
a kód :
Kód: Egész kijelölése
/* I2Cscan EXT1
I2CScanner minta
60 nap alatt arduino tanfolyam
(c) TavIR http://www.tavir.hu
*/
#include <Wire.h>
int counter, data;
void setup() {
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
Serial.begin(9600);
Serial.println();
Serial.println();
Serial.println("I2CScanner ready!");
Serial.println();
Wire.begin();
}
void loop() {
for (counter=1; counter<128; counter++) {
Wire.requestFrom(counter,1);
Serial.print("addr: ");
if (counter<16) Serial.print("0");
Serial.print(counter,HEX);
if (Wire.available()) {
Serial.print(" found!");
}
else {
Serial.print(" ");
}
Serial.print( (counter%4) ? "\t":"\n");
// az alábbi 2 sor benne van a lecke programjában, kivettem.
// &n
// bsp;
delay(1);
}
while(1) {
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(300);
}
}
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Re: 60 nap alatt Arduino #28 - I2C busz általában
A lekérdezés megakadásának ellenére Macsek órás programja (32-es lecke) nagyon kedvesen működik, ír és olvas is.
Re: 60 nap alatt Arduino #28 - I2C busz általában
A cím eszköz nem válaszol vagy pedig hibás az eszköz.
Tipp: valamelyik felhúzó-ellenállás (SCL, SDA) elengedett, megnyúlt...
Tipp: valamelyik felhúzó-ellenállás (SCL, SDA) elengedett, megnyúlt...