সুচিপত্র:
- ধাপ 1: ওভারভিউ
- ধাপ 2: আপনার কি প্রয়োজন / লিঙ্ক
- ধাপ 3: সার্কিট ডায়াগ্রাম
- ধাপ 4: প্রোগ্রামিং - I
- ধাপ 5: প্রোগ্রামিং - II
- ধাপ 6: ভিডিও
ভিডিও: MCP-23008 এর প্রয়োগ রিলে ইন্টারফেস (I2C) ব্যবহার করে :: 6 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:00
হ্যালো
শুভেচ্ছা রইল.. !!
আমি (সোমাংশু চৌধুরী) Dcube প্রযুক্তি উদ্যোগের পক্ষ থেকে Arduino ন্যানো এবং MCP23008 ব্যবহার করে I2C প্রোটোকলের মাধ্যমে রিলে নিয়ন্ত্রণ করতে যাচ্ছি।
ধাপ 1: ওভারভিউ
- MCP23X08 ডিভাইস 8-বিট, সাধারণ উদ্দেশ্য, I2C বাস বা SPI অ্যাপ্লিকেশনের জন্য সমান্তরাল I/O সম্প্রসারণ প্রদান করে।
- MCP23X08 ইনপুট, আউটপুট এবং পোলারিটি নির্বাচনের জন্য একাধিক 8-বিট কনফিগারেশন রেজিস্টার নিয়ে গঠিত। সিস্টেম মাস্টার I/O কনফিগারেশন বিট লিখে ইনপুট বা আউটপুট হিসাবে I/OS সক্ষম করতে পারে। প্রতিটি ইনপুট বা আউটপুটের ডেটা সংশ্লিষ্ট ইনপুট বা আউটপুট রেজিস্টারে রাখা হয়। ইনপুট পোর্ট রেজিস্টারের পোলারিটি পোলারিটি ইনভার্সন রেজিস্টারের সাথে উল্টানো যায়। সমস্ত রেজিস্টার সিস্টেম মাস্টার দ্বারা পড়া যাবে।
- ডেটাশীট লিঙ্ক:
ধাপ 2: আপনার কি প্রয়োজন / লিঙ্ক
1. আরডুইনো ন্যানো লিঙ্ক:
2. Arduino ন্যানো লিঙ্কের জন্য শিল্ড:
3. ইউএসবি কেবল টাইপ এ থেকে মাইক্রো টাইপ বি 6 ফুট লম্বা
4. I²C কেবল লিঙ্ক:
5. আটটি SPDT I²C নিয়ন্ত্রিত রিলে
6. অ্যাডাপ্টার লিঙ্ক:
ধাপ 3: সার্কিট ডায়াগ্রাম
ধাপ 4: প্রোগ্রামিং - I
- এই কোডে, আমি ফাংশন প্রোগ্রামিং প্যারাডাইম ব্যবহার করি
- আমি ফাংশন সংজ্ঞা এবং ফাংশন কলিংয়ের জন্য বিভিন্ন ট্যাব ব্যবহার করেছি
ট্যাব q এর অধীনে কোড:
// সহজ ফাংশন কলিং কোড
#অন্তর্ভুক্ত অকার্যকর সেটআপ ()
{
// MCP23008 এর I2C ঠিকানা
#MCP_ADDR 0x20 নির্ধারণ করুন
// I2C বাসে মাস্টার হিসেবে যোগ দিন
Wire.begin ();
// সিরিয়াল যোগাযোগ শুরু করুন এবং বড রেট সেট করুন
Serial.begin (9600);
// I2C বাসে প্রদত্ত ডিভাইস দিয়ে ট্রান্সমিশন শুরু করুন
Wire.beginTransmission (MCP_ADDR);
// IODIR নির্বাচন করুন - I/O নির্দেশ নিবন্ধন নিবন্ধন
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.requestFrom (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.requestFrom (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.requestFrom (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.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// পর্দায় আউটপুট
Serial.print ("GPIO মান:");
Serial.println (GPIO, BIN);
}
ট্যাবের অধীনে কোড q3: // এই কোডটি বোর্ডে রিলে 3 চালু এবং বন্ধ করতে হবে
অকার্যকর a3_on ()
{
// সংক্রমণ শুরু
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
বিলম্ব (1800);
Wire.requestFrom (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.requestFrom (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.requestFrom (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.requestFrom (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.requestFrom (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.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// পর্দায় আউটপুট
Serial.print ("GPIO মান:");
Serial.println (GPIO, BIN);
}
ট্যাবের অধীনে কোড q6: // এই কোডটি বোর্ডে রিলে 6 চালু এবং বন্ধ করতে হবে
অকার্যকর a6_on ()
{
// সংক্রমণ শুরু
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
বিলম্ব (1800);
Wire.requestFrom (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.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// পর্দায় আউটপুট
Serial.print ("GPIO মান:");
Serial.println (GPIO, BIN);
}
ট্যাবের অধীনে কোড q7: // এই কোডটি বোর্ডে রিলে 7 চালু এবং বন্ধ করতে হবে
অকার্যকর a7_on () {
// সংক্রমণ শুরু
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
বিলম্ব (1800);
Wire.requestFrom (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.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// পর্দায় আউটপুট
Serial.print ("GPIO মান:");
Serial.println (GPIO, BIN);
}
ট্যাবের অধীনে কোড q8: // এই কোডটি বোর্ডে রিলে 8 চালু এবং বন্ধ করতে হয়
অকার্যকর a8_on () {
// সংক্রমণ শুরু
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
বিলম্ব (1800);
Wire.requestFrom (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.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// পর্দায় আউটপুট
Serial.print ("GPIO মান:");
Serial.println (GPIO, BIN);
}
ধাপ 6: ভিডিও
আরও চাওয়ার জন্য নির্দ্বিধায় আমাদের সাইটে যান:
www.dcubetechnologies.com
প্রস্তাবিত:
I2C সেন্সর ইন্টারফেস দিয়ে শুরু করা ?? - ESP32s ব্যবহার করে আপনার MMA8451 ইন্টারফেস করুন: 8 টি ধাপ
I2C সেন্সর ইন্টারফেস দিয়ে শুরু করা ?? - ESP32 গুলি ব্যবহার করে আপনার MMA8451 ইন্টারফেস করুন: এই টিউটোরিয়ালে, আপনি নিয়ামক (Arduino, ESP32, ESP8266, ESP12 NodeMCU) এর সাথে কিভাবে কাজ শুরু করবেন, সংযুক্ত করবেন এবং I2C ডিভাইস (অ্যাকসিলেরোমিটার) পাবেন সে সম্পর্কে সব শিখবেন।
হিউম্যান-কম্পিউটার ইন্টারফেস: ইএমজি ব্যবহার করে কব্জি মুভমেন্ট দ্বারা একটি গ্রিপার (কিরিগামি দ্বারা তৈরি) ফাংশন: 7 ধাপ
হিউম্যান-কম্পিউটার ইন্টারফেস: ইএমজি ব্যবহার করে কব্জি আন্দোলন দ্বারা একটি গ্রিপার (কিরিগামি দ্বারা তৈরি) ফাংশন: সুতরাং এটি একটি মানব-কম্পিউটার ইন্টারফেসে আমার প্রথম চেষ্টা ছিল পাইথন এবং arduino মাধ্যমে এবং একটি অরিগামি ভিত্তিক gripper actuated
SCARA রোবট: Foward এবং Inverse Kinematics সম্পর্কে শেখা !!! (প্লট টুইস্ট প্রসেসিং ব্যবহার করে ARDUINO তে রিয়েল টাইম ইন্টারফেস তৈরি করতে শিখুন !!!!): 5 টি ধাপ (ছবি সহ)
SCARA রোবট: Foward এবং Inverse Kinematics সম্পর্কে শেখা !!! (প্লট টুইস্ট প্রসেসিং ব্যবহার করে ARDUINO তে রিয়েল টাইম ইন্টারফেস কিভাবে তৈরি করতে হয় তা শিখুন !!!!): একটি SCARA রোবট শিল্প জগতে একটি খুব জনপ্রিয় মেশিন। নামটি সিলেক্টিভ কমপ্ল্যান্ট অ্যাসেম্বলি রোবট আর্ম বা সিলেক্টিভ কমপ্ল্যান্ট আর্টিকুলেটেড রোবট আর্ম উভয়ের জন্য দাঁড়িয়েছে। এটি মূলত তিনটি ডিগ্রী স্বাধীনতা রোবট, প্রথম দুটি ডিসপ্লে
I2C / IIC LCD ডিসপ্লে - Arduino এর সাথে SPI থেকে IIC মডিউল ব্যবহার করে I2C LCD ডিসপ্লেতে একটি SPI LCD ব্যবহার করুন: 5 টি ধাপ
I2C / IIC LCD ডিসপ্লে | Arduino এর সাথে SPI থেকে IIC মডিউল ব্যবহার করে I2C LCD ডিসপ্লেতে একটি SPI LCD ব্যবহার করুন: হাই বন্ধুরা যেহেতু একটি স্বাভাবিক SPI LCD 1602 এর সাথে সংযোগ করার জন্য অনেকগুলি তার রয়েছে তাই এটিকে arduino দিয়ে ইন্টারফেস করা খুব কঠিন কিন্তু বাজারে একটি মডিউল পাওয়া যায় যা এসপিআই ডিসপ্লেকে আইআইসি ডিসপ্লেতে রূপান্তর করুন যাতে আপনাকে কেবল 4 টি তারের সংযোগ করতে হবে
ইএসপি 32 ফোর রিলে বোর্ডের সাথে নেক্সশন ডিসপ্লে ইন্টারফেস: 7 টি ধাপ
ইএসপি 32 ফোর রিলে বোর্ডের সাথে নেক্সশন ডিসপ্লে ইন্টারফেস: এই নির্দেশাবলীতে আমরা এসপি 32 ফোর রিলে বোর্ডে 5 "নেক্সশন ডিসপ্লে ইন্টারফেস করতে যাচ্ছি। বোর্ডটি এমকিউটিটি প্রোটোকল দ্বারা নিয়ন্ত্রিত হয়। বোর্ডের দুটি উপায় নিয়ন্ত্রণ বৈশিষ্ট্য রয়েছে। এটি mqtt এবং টাচ স্ক্রিন উভয় দ্বারা নিয়ন্ত্রিত হতে পারে। টাচ স্ক্রিন