2012年1月8日 星期日

Netduino--I2C控制PCF8574A產生霹靂燈效果

I2C是由philips公司發展的通訊協定,使用兩條訊號線(SDA,SCL)再加一條地線,就可以串接將各種周邊裝置串接在一起,其最大的特色就是簡單容易實作,因此許多微控制器與周邊設備都採用I2C作為通訊。

支援I2C的裝置非常多,比較有名的例如記憶晶片EEPROM 24C64、溫濕度感應器SHT75、或是PCF8574A等,以下就以PCF8574A實驗,由Netduino經由I2C通訊控制連接於PCF8574A的8個LED,產生霹靂燈的效果。下圖是PCF8574A接腳說明。

clip_image002[5]

線路圖如下

clip_image002

程式如下

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霹靂燈測試

沒有留言:

張貼留言