สารบัญ:
- ขั้นตอนที่ 1: ภาพรวม
- ขั้นตอนที่ 2: สิ่งที่คุณต้องการ / ลิงค์
- ขั้นตอนที่ 3: แผนภาพวงจร
- ขั้นตอนที่ 4: การเขียนโปรแกรม - I
- ขั้นตอนที่ 5: การเขียนโปรแกรม - II
- ขั้นตอนที่ 6: วิดีโอ
วีดีโอ: การประยุกต์ใช้ MCP-23008 โดยใช้อินเทอร์เฟซรีเลย์ (I2C):: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
สวัสดี
สวัสดี..!!
ฉัน (Somanshu Choudhary) ในนามของการลงทุนด้านเทคโนโลยีของ Dcube จะควบคุมรีเลย์ผ่านโปรโตคอล I2C โดยใช้ Arduino nano และ MCP23008
ขั้นตอนที่ 1: ภาพรวม
- อุปกรณ์ MCP23X08 มีการขยาย I/O แบบขนานสำหรับใช้งานทั่วไปแบบ 8 บิตสำหรับ I2C บัสหรือแอปพลิเคชัน SPI
- MCP23X08 ประกอบด้วยรีจิสเตอร์การกำหนดค่า 8 บิตหลายรายการสำหรับการเลือกอินพุต เอาต์พุต และขั้ว ต้นแบบของระบบสามารถเปิดใช้งาน I/O เป็นอินพุตหรือเอาต์พุตโดยการเขียนบิตการกำหนดค่า I/O ข้อมูลสำหรับอินพุตหรือเอาต์พุตแต่ละรายการจะถูกเก็บไว้ในการลงทะเบียนอินพุตหรือเอาต์พุตที่เกี่ยวข้อง ขั้วของการลงทะเบียนพอร์ตอินพุตสามารถกลับด้านได้ด้วยการลงทะเบียนการกลับขั้วของขั้ว มาสเตอร์ระบบสามารถอ่านการลงทะเบียนทั้งหมดได้
- ลิงค์ DATASHEET:
ขั้นตอนที่ 2: สิ่งที่คุณต้องการ / ลิงค์
1. Arduino Nano ลิงค์:
2.ชิลด์สำหรับ Arduino Nano ลิงค์:
3.สาย USB Type A ถึง Micro Type B ยาว 6 ฟุต
4. I²Cเคเบิ้ลลิงค์:
5. รีเลย์ควบคุม SPDT I²C แปดตัว
6. ลิงค์อะแดปเตอร์:
ขั้นตอนที่ 3: แผนภาพวงจร
ขั้นตอนที่ 4: การเขียนโปรแกรม - I
- ในโค้ดนี้ ฉันใช้ Function Programming Paradigm
- ฉันใช้แท็บต่างๆ สำหรับการกำหนดฟังก์ชันและการเรียกใช้ฟังก์ชัน
รหัสใต้แท็บ q:
// รหัสเรียกฟังก์ชันอย่างง่าย
#include การตั้งค่าเป็นโมฆะ ()
{
// ที่อยู่ 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);
// เลือก CONFIGURATION register
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 Relay กับ Arduino IDE: 5 ขั้นตอน
I2C Relay พบ Arduino IDE: ฉันสั่งรีเลย์บอร์ดที่ดี แต่ไม่มีคำสั่ง ArduinoIDE แค่ Raspberry Pi e.o ฉันพบวิธีใช้งานกับ Arduino และต้องการแชร์เพื่อให้คุณประหยัดเวลาได้ ตัวอย่าง RaspberryPi ดั้งเดิม: wiki.52pi.com/index.php/DockerPi_4_Channel_R
เครื่องวัดอุณหภูมิพร้อมจอ LCD DHT11 และ I2C 20x4: 6 ขั้นตอน
เครื่องวัดอุณหภูมิด้วย DHT11 และ I2C 20x4 LCD: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีสร้างตัวตรวจสอบอุณหภูมิอย่างง่ายโดยใช้เซ็นเซอร์ DHT11 และ I2C LCD ดูวิดีโอ
จอ LCD I2C / IIC - ใช้ SPI LCD กับจอแสดงผล LCD I2C โดยใช้โมดูล SPI เป็น IIC กับ Arduino: 5 ขั้นตอน
จอ LCD I2C / IIC | ใช้ SPI LCD กับจอแสดงผล LCD I2C โดยใช้โมดูล SPI เป็น IIC กับ Arduino: สวัสดีทุกคน เนื่องจาก SPI LCD 1602 ปกติมีสายเชื่อมต่อมากเกินไป ดังนั้นจึงยากมากที่จะเชื่อมต่อกับ Arduino แต่มีโมดูลเดียวในตลาดที่สามารถทำได้ แปลงจอแสดงผล SPI เป็นจอแสดงผล IIC ดังนั้นคุณต้องเชื่อมต่อเพียง 4 สายเท่านั้น
จอ LCD I2C / IIC - แปลง SPI LCD เป็นจอแสดงผล LCD I2C: 5 ขั้นตอน
จอ LCD I2C / IIC | แปลง SPI LCD เป็น I2C LCD Display: การใช้จอแสดงผล spi lcd จำเป็นต้องมีการเชื่อมต่อมากเกินไป ซึ่งทำได้ยากมาก ดังนั้นฉันจึงพบโมดูลที่สามารถแปลง i2c lcd เป็น spi lcd ได้ ดังนั้นมาเริ่มกันเลย
ตัวอักษร LCD I2c Adapter (ตัวอย่างการเชื่อมต่อ I2c): 12 ขั้นตอน (พร้อมรูปภาพ)
อะแดปเตอร์ LCD I2c ของตัวละคร (ตัวอย่างการเชื่อมต่อ I2c): ฉันกำลังสร้างสคีมาการเชื่อมต่อสำหรับอะแดปเตอร์แสดงอักขระ i2c ตรวจสอบการอัปเดตในไซต์ของฉัน ตอนนี้ฉันเพิ่ม olso สคีมาการเชื่อมต่อสายไฟเพื่อใช้ไลบรารีดั้งเดิมไม่ใช่ส้อมของฉัน ไลบรารี LiquidCrystal Arduino สำหรับจอ LCD แบบตัวอักษร โปรเจ็กต์แบบแยก