Search Code

ڈیجی اسپارک کے ساتھ I2C اسکینر استعمال کرنے کا طریقہ تاکہ I2C ایڈریس معلوم کیا جا سکے | روبوجیکس

ڈیجی اسپارک کے ساتھ I2C اسکینر استعمال کرنے کا طریقہ تاکہ I2C ایڈریس معلوم کیا جا سکے | روبوجیکس

یہ سبق ڈیجی اسپارک ڈیولپمنٹ بورڈ کے ساتھ I2C اسکینر استعمال کرنے کا طریقہ ظاہر کرتا ہے تاکہ منسلک آلات کے I2C پتے معلوم کیے جا سکیں۔ I2C پتہ جاننا مختلف سینسرز اور ماڈیولز کے ساتھ I2C پروٹوکول کے ذریعے بات چیت کے لیے ضروری ہے۔ یہ مہارت وسیع پیمانے کے منصوبوں کے لیے اہم ہے۔ مثال کے طور پر، آپ اس تکنیک کو استعمال کر سکتے ہیں:

  • ایک ہی منصوبے میں متعدد I2C سینسرز کو ضم کرنے کے لیے، جیسے ماحولیاتی نگرانی اسٹیشن۔
  • خراب ڈیوائس کا پتہ تصدیق کرکے I2C مواصلاتی مسائل کو حل کرنے کے لیے۔
  • نئے حاصل کردہ سینسرز یا ماڈیولز کا I2C پتہ فوری طور پر شناخت کرنے کے لیے۔

یہ طریقہ خاص طور پر ان آلات کے لیے مفید ہے جن کا I2C پتہ واضح طور پر درج نہیں ہوتا۔

ہارڈویئر/اجزاء

اس سبق پر عمل کرنے کے لیے، آپ کو درج ذیل اجزاء کی ضرورت ہوگی:

  • ڈیجی اسپارک ڈیولپمنٹ بورڈ (یا تو USB یا مائیکرو USB ورژن)
  • I2C آلات (سینسرز، ماڈیولز، وغیرہ) جن کے پتے آپ شناخت کرنا چاہتے ہیں
  • کنیکٹنگ تاریں

وائرنگ گائیڈ

وائرنگ کے عمل میں آپ کے ڈیجی اسپارک سے SDA اور SCL لائنوں کو آپ کے I2C آلات کے متعلقہ پنوں سے جوڑنا شامل ہے (ویڈیو میں 00:53 پر)۔ ڈیجی اسپارک کا SDA پن عام طور پر ڈیجیٹل پن 0 ہوتا ہے، اور SCL پن ڈیجیٹل پن 1 ہوتا ہے (ویڈیو میں 01:05 پر)۔ یقینی بنائیں کہ آپ کے I2C آلات کے VCC اور GND پن بالترتیب ڈیجی اسپارک کے 5V اور GND پنوں سے درست طریقے سے جڑے ہوئے ہیں (ویڈیو میں 01:34 پر)۔ وائرنگ مختلف ڈیجی اسپارک ماڈلز کے لیے یکساں ہے (ویڈیو میں 01:44 پر)۔

%%WIRING%%

کوڈ کی وضاحت

فراہم کردہ Arduino کوڈ I2C آلات کو اسکین کرنے کے لیے Wire لائبریری استعمال کرتا ہے۔ بنیادی منطق loop() فنکشن کے اندر ہے (ویڈیو میں 02:38 پر)۔ کوڈ ممکنہ I2C پتوں (1 سے 127) کے ذریعے گزرتا ہے اور Wire.beginTransmission(address) اور Wire.endTransmission() کا استعمال کرکے ہر پتے کے ساتھ مواصلات کی کوشش کرتا ہے۔ اگر مواصلات کامیاب ہوتی ہے (error == 0)، تو کوڈ سیریل مانیٹر پر پتہ پرنٹ کرتا ہے۔ قابل ترتیب حصہ بنیادی طور پر سیریل باؤڈ ریٹ ہے، جو Serial.begin(9600) لائن میں 9600 پر سیٹ ہے۔ اگر ضرورت ہو تو آپ اس قدر کو تبدیل کر سکتے ہیں، لیکن یقینی بنائیں کہ یہ آپ کے سیریل مانیٹر کے باؤڈ ریٹ سے مماثل ہے۔


#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(9600); // یہ لائن سیریل باؤڈ ریٹ سیٹ کرتی ہے۔
  while (!Serial);
  Serial.println("\nI2C Scanner");
}

void loop() {
  // ... (باقی کوڈ) ...
}

لائیو پروجیکٹ/ڈیموسٹریشن

ویڈیو کئی آلات کے I2C پتے شناخت کرنے کا عمل ظاہر کرتی ہے (ویڈیو میں 03:46، 04:14، 05:17 پر)۔ سبق دکھاتا ہے کہ ڈیجی اسپارک پر کوڈ کیسے اپ لوڈ کیا جائے، I2C آلات کو کیسے جوڑا جائے، اور سیریل مانیٹر پر پرنٹ شدہ پتوں کا مشاہدہ کیسے کیا جائے (ویڈیو میں 03:11 پر)۔ ویڈیو نمایاں کرتی ہے کہ سیریل آؤٹ پٹ کسی بھی فعال ونڈو میں ظاہر ہوگا، جیسے نوٹ پیڈ یا مائیکروسافٹ ورڈ (ویڈیو میں 04:47 پر)۔ یہ اپ لوڈ کے عمل کے شروع ہونے کے بعد، 60 سیکنڈ کی ونڈو کے اندر ڈیوائس کو جوڑنے کی اہمیت پر زور دیتی ہے (ویڈیو میں 03:27، 04:22، 05:34 پر)۔

ابواب

  • [00:00] تعارف اور پروجیکٹ کا جائزہ
  • [00:24] I2C پتے کی وضاحت
  • [00:53] وائرنگ ہدایات
  • [01:48] سافٹ ویئر سیٹ اپ اور انسٹالیشن
  • [02:35] کوڈ اپ لوڈ کا عمل
  • [03:11] پہلے ڈیوائس کے پتے کی دریافت
  • [04:06] دوسرے ڈیوائس کے پتے کی دریافت
  • [05:15] تیسرے ڈیوائس کے پتے کی دریافت
  • [05:58] نتیجہ
179-Arduino code for an I2C scanner
زبان: C++
// --------------------------------------
//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
}

آپ کو جن چیزوں کی ضرورت ہو سکتی ہے

وسائل اور حوالہ جات

فائلیں📁

دیگر فائلیں

  • Digistump Drivers
    Driver package for Digistump boards, including the Digispark. Contains USB drivers required to program Digistump development boards from the Arduino IDE.
    Digistump.Drivers.zip