جدول المحتويات:
- الخطوة 1: نظرة عامة
- الخطوة 2: ما تحتاجه / الروابط
- الخطوة 3: مخطط الدائرة
- الخطوة 4: البرمجة - I
- الخطوة 5: البرمجة - II
- الخطوة 6: الفيديو
فيديو: تطبيق MCP-23008 باستخدام واجهة الترحيل (I2C) :: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
أهلا
تحية طيبة.. !!
أنا (Somanshu Choudhary) نيابة عن مشاريع Dcube التقنية التي ستتحكم في المرحلات عبر بروتوكول I2C باستخدام Arduino nano و MCP23008.
الخطوة 1: نظرة عامة
- يوفر الجهاز MCP23X08 توسعة 8 بت ، للأغراض العامة ، متوازية للإدخال / الإخراج لتطبيقات ناقل I2C أو SPI.
- يتكون MCP23X08 من عدة سجلات تكوين 8 بت لتحديد الإدخال والإخراج والقطبية. يمكن لسيد النظام تمكين الإدخال / الإخراج إما كمدخلات أو مخرجات عن طريق كتابة بتات تكوين الإدخال / الإخراج. يتم الاحتفاظ بالبيانات الخاصة بكل إدخال أو إخراج في سجل الإدخال أو الإخراج المقابل. يمكن عكس قطبية سجل منفذ الإدخال باستخدام سجل انعكاس القطبية. يمكن قراءة جميع السجلات بواسطة مدير النظام.
- رابط كتيب البيانات:
الخطوة 2: ما تحتاجه / الروابط
1. Arduino Nano LINK:
2-درع اردوينو نانو لينك:
3.كابل USB من النوع A إلى Micro Type B بطول 6 أقدام
4. I²C كابل LINK:
5. ثمانية مرحلات تحكم SPDT I²C
6.رابط المحول:
الخطوة 3: مخطط الدائرة
الخطوة 4: البرمجة - I
- في هذا الكود ، أستخدم نموذج برمجة الوظائف
- لقد استخدمت علامات تبويب مختلفة لتعريف الوظائف واستدعاء الوظيفة
رمز تحت علامة التبويب q:
// رمز استدعاء وظيفة بسيطة
# تضمين إعداد باطل ()
{
// عنوان I2C من MCP23008
#define MCP_ADDR 0x20
// انضم إلى I2C Bus كسيد
Wire.begin () ؛
// بدء الاتصال التسلسلي وتعيين معدل الباود
Serial.begin (9600) ؛
// ابدأ الإرسال بجهاز معين على ناقل I2C
Wire.beginTransmission (MCP_ADDR) ؛
// حدد IODIR - I / O DIRECTION REGISTER Register
Wire.write (0x00) ؛
// حدد العملية المطلوبة (الإخراج)
Wire.write (0x00) ؛
// حدد سجل التكوين
Wire.write (0x05) ؛
// حدد العملية المطلوبة
Wire.write (0x0E) ؛
// نهاية الإرسال
Wire.endTransmission () ؛
}
حلقة فارغة()
{
a1_on () ؛
تأخير (1000) ؛
a1_off () ؛
تأخير (1000) ؛
a2_on () ،
تأخير (1000) ؛
a2_off () ،
تأخير (1000) ؛
a3_on () ،
تأخير (1000) ؛
a3_off () ،
تأخير (1000) ؛
a4_on () ،
تأخير (1000) ؛
a4_off () ،
تأخير (1000) ؛
a5_on () ،
تأخير (1000) ؛
a5_off () ؛
تأخير (1000) ؛
a6_on () ،
تأخير (1000) ؛
a6_off () ؛
تأخير (1000) ؛
a7_on () ،
تأخير (1000) ؛
a7_off () ؛
تأخير (1000) ؛
a8_on () ،
تأخير (1000) ؛
a8_off () ،
}
الكود تحت علامة التبويب q1:
// هذا الرمز هو تشغيل وإيقاف التتابع 1 على متن الطائرة
باطل a1_on () {
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x01) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
باطل a1_off ()
{
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x00) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
الكود تحت علامة التبويب q2:
// هذا الرمز هو تشغيل وإيقاف التتابع 2 على متن الطائرة
باطل a2_on () {
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x02) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
باطل a2_off ()
{
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x00) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
CODE UNDER TAB q3: // هذا الرمز لتشغيل وإيقاف التتابع 3 على متن الطائرة
باطل a3_on ()
{
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x04) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
باطل a3_off ()
{
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x00) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
الخطوة 5: البرمجة - II
الكود تحت علامة التبويب q4:
// هذا الرمز هو تشغيل وإيقاف التتابع 4 على متن الطائرة
باطل a4_on ()
{
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x08) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
a4_off باطل ()
{
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x00) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
الكود تحت علامة التبويب q5:
// هذا الرمز هو تشغيل وإيقاف التتابع 5 على متن الطائرة
باطل a5_on ()
{
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x10) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
باطل a5_off ()
{
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x00) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
CODE UNDER TAB q6: // هذا الرمز لتشغيل وإيقاف التتابع 6 على متن الطائرة
باطل a6_on ()
{
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x20) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
a6_off باطل ()
{
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x00) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
CODE UNDER TAB q7: // هذا الرمز لتشغيل وإيقاف التتابع 7 على متن الطائرة
a7_on باطل () {
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x40) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
a7_off باطل ()
{
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x00) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
CODE UNDER TAB q8: // هذا الرمز لتشغيل وإيقاف التتابع 8 على متن الطائرة
باطل a8_on () {
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x80) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
a8_off باطل ()
{
// ابدأ الإرسال
Wire.beginTransmission (MCP_ADDR) ؛
Wire.write (0x09) ؛
Wire.write (0x00) ؛
تأخير (1800) ؛
Wire.request From (MCP_ADDR، 1) ؛
int GPIO = Wire.read () ؛
Wire.endTransmission () ؛
// إخراج إلى الشاشة
Serial.print ("قيمة GPIO:") ؛
Serial.println (GPIO ، BIN) ؛
}
الخطوة 6: الفيديو
لمزيد من الاستفسارات لا تتردد في زيارة موقعنا:
www.dcubetechnologies.com
موصى به:
نظام المراقبة المرئية القائم على LoRa للزراعة Iot - تصميم تطبيق ذو واجهة باستخدام Firebase & Angular: 10 خطوات
نظام المراقبة المرئية القائم على LoRa للزراعة Iot | تصميم تطبيق ذو واجهة باستخدام Firebase & Angular: في الفصل السابق ، تحدثنا عن كيفية عمل المستشعرات مع وحدة loRa لملء قاعدة بيانات Firebase Realtime ، ورأينا الرسم التخطيطي عالي المستوى حول كيفية عمل مشروعنا بالكامل. في هذا الفصل سنتحدث عن كيف يمكننا
كيفية التحكم في الترحيل باستخدام Arduino: 7 خطوات
كيفية التحكم في مرحل مع Arduino: المرحلات هي أفضل طريقة للتحكم في أجهزتك لأنها تتمتع بمقاومة أقل بين جهات الاتصال الخاصة بها ويمكن استخدامها في العديد من الحالات مثل تشغيل وإيقاف أجهزة التيار المتردد (التيار المتردد) مثل الأضواء والتلفزيون والمصابيح والعديد من الأجهزة الأخرى. إنها
الشروع في العمل مع واجهة مستشعر I2C ؟؟ - قم بتوصيل MMA8451 باستخدام ESP32s: 8 خطوات
الشروع في العمل مع واجهة مستشعر I2C ؟؟ - واجهة MMA8451 الخاصة بك باستخدام ESP32s: في هذا البرنامج التعليمي ، ستتعلم كل شيء عن كيفية بدء تشغيل جهاز I2C (مقياس التسارع) وتوصيله والحصول عليه مع وحدة التحكم (Arduino ، ESP32 ، ESP8266 ، ESP12 NodeMCU)
أتمتة المنزل باستخدام Raspberry Pi باستخدام لوحة الترحيل: 7 خطوات
أتمتة المنزل باستخدام Raspberry Pi باستخدام لوحة الترحيل: يريد عدد كبير من الأشخاص راحة كبيرة ولكن بأسعار معقولة. نشعر بالكسل لإضاءة المنازل كل مساء عند غروب الشمس وفي صباح اليوم التالي ، وإطفاء الأنوار مرة أخرى أو تشغيل / إيقاف تشغيل مكيف الهواء / المروحة / المدافئ كما كانت
كيفية توصيل تطبيق Android بـ AWS IOT وفهم واجهة برمجة تطبيقات التعرف على الصوت: 3 خطوات
كيفية توصيل تطبيق Android بـ AWS IOT وفهم واجهة برمجة تطبيقات التعرف على الصوت: يعلم هذا البرنامج التعليمي المستخدم كيفية توصيل تطبيق Android بخادم AWS IOT وفهم واجهة برمجة تطبيقات التعرف على الصوت التي تتحكم في ماكينة القهوة. يتحكم التطبيق في ماكينة القهوة من خلال Alexa خدمة الصوت ، ج