I2C是由philips公司發展的通訊協定,使用兩條訊號線(SDA,SCL)再加一條地線,就可以串接將各種周邊裝置串接在一起,其最大的特色就是簡單容易實作,因此許多微控制器與周邊設備都採用I2C作為通訊。
支援I2C的裝置非常多,比較有名的例如記憶晶片EEPROM 24C64、溫濕度感應器SHT75、或是PCF8574A等,以下就以PCF8574A實驗,由Netduino經由I2C通訊控制連接於PCF8574A的8個LED,產生霹靂燈的效果。下圖是PCF8574A接腳說明。
線路圖如下
程式如下
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
namespace PCF8574A_test02
{
public class Program
{
public static void Main()
{
I2CDevice.Configuration PCF8574A = new I2CDevice.Configuration(0x38, 400); //(address=0x38, ClockRate=400);
I2CDevice MyI2CBus = new I2CDevice(PCF8574A);
I2CDevice.I2CTransaction[] xActions = new I2CDevice.I2CTransaction[1];
Thread.Sleep(1000);
int val = 0x01;
byte[] cmd = new byte[1];
MyI2CBus.Config = PCF8574A;
bool dir = true;
while (true)
{
cmd[0] = (byte)(val ^ 0xffff);
xActions[0] = I2CDevice.CreateWriteTransaction(cmd);
MyI2CBus.Execute(xActions, 1000); // ( , TransactionTimeout )
// 產生霹靂燈效果
if (val >= 0x80) dir = false;
if (val <= 0x01) dir = true;
if (dir)
val <<= 1;
else
val >>= 1;
Thread.Sleep(50);
}
}
}
}
完成後會看到LED產生霹靂燈效果
PCF8574A I2C Netduino霹靂燈測試
沒有留言:
張貼留言