Search Code

Sida loo isticmaalo I2C Scanner-ka ee Digispark si loo helo ciwaanka I2C | Robojax

Sida loo isticmaalo I2C Scanner-ka ee Digispark si loo helo ciwaanka I2C | Robojax

Tilmaantan waxay muujinaysaa sida loo isticmaalo scanner-ka I2C oo leh guddiga horumarinta Digispark si loo aqoonsado ciwaanada I2C ee qalabka ku xiran. Ogaanshaha ciwaanka I2C waa muhiimad weyn xagga isgaarsiinta dareemayaasha iyo modules-ka kala duwan ee isticmaalaya habka I2C. Xirfaddan waxay lama huraan u tahay mashruucyo kala duwan. Tusaale ahaan, waxaad u isticmaali kartaa farsamadan si aad:

  • Ku daridda dareemayaal badan oo I2C ah hal mashruuc, sida xarun kormeerka deegaanka.
  • Xallinta dhibaatooyinka isgaarsiinta I2C adoo hubinaya ciwaanka qalabka khaldan.
  • Si dhakhso leh u aqoonsashada ciwaanka I2C ee dareemayaasha ama modules-ka cusub ee la helay.

Habkani wuxuu si gaar ah faa'iido ugu leeyahay qalabka aan si cad ugu qornayn ciwaankooda I2C.

Qalabka/Hardware

Si aad u raacdid tilmaantan, waxaad u baahan doontaa qalabkan soo socda:

  • Guddiga horumarinta Digispark (nooca USB ama Micro USB)
  • Qalabka I2C (dareemayaasha, modules-ka, iwm.) kuwaas oo aad rabto inaad aqoonsato ciwaankooda
  • Fiilooyinka isku xirka

Hagaha Xirista

Habka xirista wuxuu ku lug leeyahay ku xirista khadadka SDA iyo SCL ee Digispark-kaaga ee kuwa u dhigma ee qalabkaaga I2C (fiidiyowga 00:53). Bintiga SDA ee Digispark waa sida caadiga ah bintiga dhijitaalka ah 0, bintiga SCL-na waa bintiga dhijitaalka ah 1 (fiidiyowga 01:05). Hubi in bintiimaha VCC iyo GND ee qalabkaaga I2C si sax ah loogu xiro bintiimaha 5V iyo GND ee Digispark-ka siday u kala horreeyaan (fiidiyowga 01:34). Xiristu waxay la mid tahay noocyada kala duwan ee Digispark (fiidiyowga 01:44).

%%WIRING%%

Sharaxaadda Koodhka

Koodhka Arduino ee la bixiyay wuxuu isticmaalaa maktabadda Wire si uu u baaro qalabka I2C. Macquulka asaasiga ah wuxuu ku dhex jiraa shaqada loop() (fiidiyowga 02:38). Koodhku wuxuu ku wareegayaa ciwaanada I2C ee suurtagalka ah (1 ilaa 127) wuxuuna isku dayaa inuu la xiriiro ciwaan kasta adoo isticmaalaya Wire.beginTransmission(address) iyo Wire.endTransmission(). Haddii isgaarsiintu guulaysato (error == 0), koodhku wuxuu daabacaa ciwaanka kormeerka taxanaha ah. Qaybta la hagaajin karo waxay inta badan tahay heerka baud-ka taxanaha ah, kaas oo lagu dejiyay 9600 ee xariiqda Serial.begin(9600). Waxaad beddeli kartaa qiimahan haddii loo baahdo, laakiin hubi inuu la mid yahay heerka baud-ka kormeerkaaga taxanaha ah.


#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(9600); // Xariiqdani waxay dejisaa heerka baud-ka taxanaha ah.
  while (!Serial);
  Serial.println("\nI2C Scanner");
}

void loop() {
  // ... (intaa ka hadhay koodhka) ...
}

Mashruuca/Bandhigga Tooska ah

Fiidiyowgu wuxuu muujinayaa habka aqoonsashada ciwaanada I2C ee qalabka kala duwan (fiidiyowga 03:46, 04:14, 05:17). Tilmaantu waxay muujinaysaa sida loo geliyo koodhka Digispark-ka, loo xiro qalabka I2C, loona fiiriyo ciwaanada lagu daabacay kormeerka taxanaha ah (fiidiyowga 03:11). Fiidiyowgu wuxuu muujinayaa in wax soo saarka taxanaha ah uu ka soo bixi doono daaqad kasta oo firfircoon, sida Notepad ama Microsoft Word (fiidiyowga 04:47). Wuxuu xooga saarayaa muhiimadda ku xirista qalabka ka dib marka habka gelinta uu bilaabmo, gudaha 60-ilbidhiqsi (fiidiyowga 03:27, 04:22, 05:34).

Cutubyada

  • [00:00] Hordhac iyo Dulmarka Mashruuca
  • [00:24] Sharaxaadda Ciwaanka I2C
  • [00:53] Tilmaamaha Xirista
  • [01:48] Dejinta iyo Rakibaadda Software-ka
  • [02:35] Habka Gelinta Koodhka
  • [03:11] Helista Ciwaanka Qalabka Koowaad
  • [04:06] Helista Ciwaanka Qalabka Labaad
  • [05:15] Helista Ciwaanka Qalabka Saddexaad
  • [05:58] Gabagabo
179-Arduino code for an I2C scanner
Luqadda: 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
}

Waad u baahan tahay

Kheyraadka & Tixraacyada

Faylasha📁

Faylal kale

  • 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