Jinsi ya kutumia I2C Scanner na Digispark kupata anwani ya I2C | Robojax
Mafunzo haya yanaonyesha jinsi ya kutumia skena ya I2C na bodi ya maendeleo ya Digispark kutambua anwani za I2C za vifaa vilivyounganishwa. Kujua anwani ya I2C ni muhimu sana kwa kuwasiliana na sensorer na moduli mbalimbali kwa kutumia itifaki ya I2C. Ujuzi huu ni muhimu kwa miradi mingi. Kwa mfano, unaweza kutumia mbinu hii kwa:
- Kuunganisha sensorer nyingi za I2C katika mradi mmoja, kama kituo cha ufuatiliaji wa mazingira.
- Kutatua matatizo ya mawasiliano ya I2C kwa kuthibitisha anwani ya kifaa kisichofanya kazi vizuri.
- Kutambua haraka anwani ya I2C ya sensorer au moduli mpya zilizonunuliwa.
Mbinu hii ni muhimu hasa kwa vifaa ambavyo anwani zao za I2C hazijaandikwa wazi.
Vifaa/Sehemu
Ili kufuata mafunzo haya, utahitaji vifaa vifuatavyo:
- Bodi ya maendeleo ya Digispark (ama toleo la USB au Micro USB)
- Vifaa vya I2C (sensorer, moduli, n.k.) ambavyo unataka kutambua anwani zake
- Nyaya za kuunganishia
Mwongozo wa Uunganishaji
Mchakato wa uunganishaji unahusisha kuunganisha nyaya za SDA na SCL kutoka kwenye Digispark yako kwenye pini zinazolingana kwenye vifaa vyako vya I2C (katika video dakika 00:53). Pini ya SDA ya Digispark kwa kawaida ni pini ya dijiti 0, na pini ya SCL ni pini ya dijiti 1 (katika video dakika 01:05). Hakikisha pini za VCC na GND za vifaa vyako vya I2C zimeunganishwa kwa usahihi kwenye pini za 5V na GND za Digispark mtawalia (katika video dakika 01:34). Uunganishaji ni sawa kwa aina mbalimbali za Digispark (katika video dakika 01:44).
%%WIRING%%
Maelezo ya Msimbo
Msimbo wa Arduino uliotolewa unatumia maktaba ya Wire kuchanganua vifaa vya I2C. Mantiki kuu iko ndani ya kazi ya loop() (katika video dakika 02:38). Msimbo unapitia anwani zinazowezekana za I2C (1 hadi 127) na kujaribu kuwasiliana na kila anwani kwa kutumia Wire.beginTransmission(address) na Wire.endTransmission(). Ikiwa mawasiliano yatafanikiwa (error == 0), msimbo unachapisha anwani kwenye kichunguzi cha serial. Sehemu inayoweza kubadilishwa ni kiwango cha baud ya serial, ambacho kimewekwa kuwa 9600 kwenye mstari wa Serial.begin(9600). Unaweza kubadilisha thamani hii ikibidi, lakini hakikisha inalingana na kiwango cha baud cha kichunguzi chako cha serial.
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600); // Mstari huu unaweka kiwango cha baud ya serial.
while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop() {
// ... (msimbo uliosalia) ...
}
Mradi/Demonstration ya Moja kwa Moja
Video inaonyesha mchakato wa kutambua anwani za I2C kwa vifaa kadhaa (katika video dakika 03:46, 04:14, 05:17). Mafunzo yanaonyesha jinsi ya kupakia msimbo kwenye Digispark, kuunganisha vifaa vya I2C, na kuona anwani zilizochapishwa kwenye kichunguzi cha serial (katika video dakika 03:11). Video inasisitiza kwamba matokeo ya serial yataonekana kwenye dirisha lolote linalofanya kazi, kama Notepad au Microsoft Word (katika video dakika 04:47). Inasisitiza umuhimu wa kuunganisha kifaa baada ya mchakato wa kupakia kuanza, ndani ya dirisha la sekunde 60 (katika video dakika 03:27, 04:22, 05:34).
Sura
- [00:00] Utangulizi na Muhtasari wa Mradi
- [00:24] Maelezo ya Anwani ya I2C
- [00:53] Maelekezo ya Uunganishaji
- [01:48] Usanidi wa Programu na Usakinishaji
- [02:35] Mchakato wa Kupakia Msimbo
- [03:11] Ugunduzi wa Anwani ya Kifaa cha Kwanza
- [04:06] Ugunduzi wa Anwani ya Kifaa cha Pili
- [05:15] Ugunduzi wa Anwani ya Kifaa cha Tatu
- [05:58] Hitimisho
// --------------------------------------
//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
}
Tänker att du kanske behöver
-
AliExpressPurchase Digispark Attiny85 from AliExpresss.click.aliexpress.com
Resurser och referenser
-
Extern.
Filer📁
Andra filer
-
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
