Yadda ake amfani da I2C Scanner tare da Digispark don nemo adireshin I2C | Robojax
Wannan koyarwar tana nuna yadda ake amfani da na'urar I2C scanner tare da Digispark development board don gano adiresoshin I2C na na'urorin da aka haɗa. Sanin adireshin I2C yana da mahimmanci don sadarwa da na'urori masu auna daban-daban da moduloli ta amfani da tsarin I2C. Wannan fasaha tana da mahimmanci ga ayyuka da yawa. Misali, zaka iya amfani da wannan dabara don:
- Haɗa na'urori masu auna I2C da yawa a cikin aiki guda, kamar tashar kula da muhalli.
- Gyara matsalolin sadarwar I2C ta hanyar tabbatar da adireshin na'urar da ba ta aiki ba.
- Gano adireshin I2C na sabbin na'urori masu auna ko moduloli da sauri.
Wannan hanyar tana da amfani musamman ga na'urorin da ba su da adireshin I2C da aka rubuta a fili.
Kayan Aiki/Abubuwan Haɗi
Don bin wannan koyarwar, zaka buƙaci waɗannan abubuwan:
- Digispark development board (ko USB ko Micro USB version)
- Na'urorin I2C (na'urori masu auna, moduloli, da sauransu) waɗanda kake son gano adiresoshinsu
- Wayoyin haɗi
Jagorar Haɗin Waya
Tsarin haɗin waya ya ƙunshi haɗa layukan SDA da SCL daga Digispark zuwa fil ɗin da suka dace a kan na'urorin I2C (a cikin bidiyo a 00:53). Fil ɗin SDA na Digispark yawanci shine fil ɗin dijital 0, kuma fil ɗin SCL shine fil ɗin dijital 1 (a cikin bidiyo a 01:05). Tabbatar cewa fil ɗin VCC da GND na na'urorin I2C an haɗa su daidai da fil ɗin 5V da GND na Digispark bi da bi (a cikin bidiyo a 01:34). Haɗin waya yana kama da haka ga nau'ikan Digispark daban-daban (a cikin bidiyo a 01:44).
%%WIRING%%
Bayanin Lambar
Lambar Arduino da aka bayar tana amfani da Wire library don bincika na'urorin I2C. Babban tsarin yana cikin aikin loop() (a cikin bidiyo a 02:38). Lambar tana zagayawa ta cikin adiresoshin I2C masu yuwuwa (1 zuwa 127) kuma tana ƙoƙarin sadarwa da kowane adireshi ta amfani da Wire.beginTransmission(address) da Wire.endTransmission(). Idan sadarwa ta yi nasara (error == 0), lambar tana buga adireshin zuwa serial monitor. Abin da za a iya daidaita shi shine yawan serial baud rate, wanda aka saita zuwa 9600 a cikin layin Serial.begin(9600). Zaka iya canza wannan ƙimar idan an buƙata, amma tabbatar ya dace da baud rate na serial monitor ɗinka.
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600); // Wannan layin yana saita serial baud rate.
while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop() {
// ... (sauran lambar) ...
}
Aiki/Nunawa Kai Tsaye
Bidiyon yana nuna tsarin gano adiresoshin I2C don na'urori da yawa (a cikin bidiyo a 03:46, 04:14, 05:17). Koyarwar tana nuna yadda ake loda lambar zuwa Digispark, haɗa na'urorin I2C, da lura da adiresoshin da aka buga akan serial monitor (a cikin bidiyo a 03:11). Bidiyon yana nuna cewa fitowar serial zai bayyana a kowane taga mai aiki, kamar Notepad ko Microsoft Word (a cikin bidiyo a 04:47). Yana jaddada mahimmancin haɗa na'urar bayan an fara tsarin lodawa, a cikin taga na 60 seconds (a cikin bidiyo a 03:27, 04:22, 05:34).
Babuka
- [00:00] Gabatarwa da Bayanin Aiki
- [00:24] Bayanin Adireshin I2C
- [00:53] Umarnin Haɗin Waya
- [01:48] Saitin Software da Shigarwa
- [02:35] Tsarin Loda Lambar
- [03:11] Gano Adireshin Na'urar Farko
- [04:06] Gano Adireshin Na'urar Na Biyu
- [05:15] Gano Adireshin Na'urar Na Uku
- [05:58] Ƙarshe
// --------------------------------------
//http://playground.arduino.cc/Main/I2cScanner
// i2c_scanner
//
// Version 1
// This program (or code that looks like it)
// can be found in many places.
// For example on the Arduino.cc forum.
// The original author is not known.
// Version 2, June 2012, Using Arduino 1.0.1
// Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26, 2013
// V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
// by Arduino.cc user Krodal.
// Changes by louarnold removed.
// Scanning addresses changed from 0...127 to 1...119,
// according to the i2c scanner by Nick Gammon
// http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
// As version 4, but address scans now to 127.
// A sensor seems to use address 120.
// Version 6, November 27, 2015.
// Added waiting for the Leonardo serial communication.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit addresses might not be seen properly.
// Watch Video explaining I2C address: https://www.youtube.com/watch?v=bqMMIbmYJS0
//
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("
I2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found
");
else
Serial.println("done
");
delay(5000); // wait 5 seconds for next scan
}
Abin da zaka iya bukata
-
AliExpressPurchase Digispark Attiny85 from AliExpresss.click.aliexpress.com
Albarkatun da kuma shafukan da za a duba
Fayiloli📁
Sauran fayiloli
-
Digistump DriversDriver package for Digistump boards, including the Digispark. Contains USB drivers required to program Digistump development boards from the Arduino IDE.
Digistump.Drivers.zip
