相關(guān)商品

  • Arduino LED發(fā)光模塊 食人魚燈 白光高亮 數(shù)字模塊 電子積木
  • Arduino LED發(fā)光模塊 黃光高亮 食人魚燈 數(shù)字模塊 電子積木
  • Arduino LED發(fā)光模塊 食人魚燈 藍(lán)色高亮 數(shù)字模塊 電子積木
  • Arduino LED發(fā)光模塊 食人魚燈 綠色高亮 數(shù)字模塊 電子積木
  • Arduino 魔法書 實(shí)現(xiàn)夢(mèng)想的工具和技術(shù)
  • Arduino LED發(fā)光模塊 食人魚燈 紅光高亮 數(shù)字模塊 電子積木
  • Arduino UNO R3 控制器 ATmega328P-PU+ATmega16U2 arduino 原裝進(jìn)口
  • Arduino 可拼接面包板 面包實(shí)驗(yàn)板 可自貼面包板 洞洞實(shí)驗(yàn)板
  • Arduino Mini 面包板 優(yōu)質(zhì)迷你 可自貼面包板 電子積木
  • Arduino Mini可拼接面包板 透明面包板 實(shí)驗(yàn)板 實(shí)驗(yàn)面包板
  • Arduino Mini可拼接面包板 透明面包板 實(shí)驗(yàn)面包板
  • 170孔優(yōu)質(zhì)面包板 電路板 洞洞板 實(shí)驗(yàn)板 可自貼原型擴(kuò)展板
  • 奧松機(jī)器人 Arduino UNO R3 V5.0傳感器擴(kuò)展板 電子積木 正品保障 傳感器套件專配 單片機(jī)開發(fā)
  • Arduino 7彩面包板實(shí)驗(yàn)跳線套裝 智能電子 機(jī)器人配件
  • Arduino 7彩面包板實(shí)驗(yàn)跳線套裝 連接線 盒裝 電子積木
  • Arduino Due ARM控制器 Arduino原裝進(jìn)口 32bit CortexM3
  • LED 發(fā)光二極管 5mm 高亮 紅色 (5只) Arduino互動(dòng)電子元件
  • Arduino Starter Kit Arduino入門套件 意大利中國(guó)代理
  • Arduino Yun Arduino官方原裝 Arduino Yún WiFi Linux
  • Arduino無(wú)線SD擴(kuò)展板 Arduino原裝進(jìn)口
  • Arduino Ethernet w/o PoE Arduino原裝進(jìn)口 arduino網(wǎng)絡(luò)擴(kuò)展板
  • Arduino UNO R3 SMD 控制器 ATmega16U2 開發(fā)版 單片機(jī) sparkfun原裝進(jìn)口
  • PicoBoard互動(dòng)創(chuàng)新板(單板非套件) 傳感器互動(dòng)板 Scratch教學(xué)傳感板
  • PVCBOT零基礎(chǔ)機(jī)器人制作配書套件 小學(xué)生DIY模型科技小制作套裝
  • PVCBOT零基礎(chǔ)機(jī)器人制作教材  DIY機(jī)器人配書套件 科技小制作小發(fā)明
  • PVCBOT零基礎(chǔ)機(jī)器人制作工具包 五金焊接電子模型玩具工具箱套裝
  • ArduPilot 固定翼 飛控 多旋翼 Arduino 控制器 Sparkfun原裝進(jìn)口
  • A-Star 32u4 Mini LV 可編程模塊 ATmega32U4開發(fā)板 pololu原裝
  • A-Star 32U4 Mini ULV 可編程模塊 ATmega32U4開發(fā)板 Pololu原裝
  • Arduino 雙路大功率直流電機(jī)驅(qū)動(dòng)擴(kuò)展板 VNH5019 美國(guó)Pololu原裝
  • Arduino 直流電機(jī)驅(qū)動(dòng)板 MiniMoto DRV8830 IIC/I2C Sparkfun原裝
  • Arduino 機(jī)器人權(quán)威指南 愛上Arduino制作指南
  • Arduino 模擬傳感器 Slider Sensor 直滑電位計(jì) 位置 滑動(dòng)傳感器
  • Arduino Intel Galileo Gen 2 伽利略開發(fā)板 官方授權(quán)
  • 動(dòng)手玩轉(zhuǎn)Arduino套件 愛上Arduino互動(dòng)電子入門套件
  • 動(dòng)手玩轉(zhuǎn) Arduino 愛上 Arduino 互動(dòng)電子入門套件 Arduino必備教材
  • PVCBOT機(jī)器人設(shè)計(jì)與制作套件 DIY機(jī)器人套件升級(jí)版 第二冊(cè)套件 配套書籍
  • 4WD機(jī)器人調(diào)試助手v2.0軟件 智能小車 Arduino 履帶 WiFi藍(lán)牙小車
  • 當(dāng)前位置: 首頁(yè) > 產(chǎn)品評(píng)測(cè) > 【奧松新品】基于Arduino的觸摸式變色臺(tái)燈

    【奧松新品】基于Arduino的觸摸式變色臺(tái)燈

    編輯:Peter2013-09-26 130708050@qq.com 瀏覽次數(shù):1703

    最近小編入手了一塊基于I2C通信方式的觸摸控制板,可以和手中的Arduino控制器配合應(yīng)用,于是小編就想做個(gè)好玩的東西——基于Arduino觸摸式變色臺(tái)燈。

    Arduino

    Arduino是一款便捷靈活、方便上手的開源電子原型平臺(tái),包含硬件(各種型號(hào)的Arduino控制器)和軟件(Arduino IDE)。Arduino能通過各種各樣的傳感器來感知環(huán)境,通過控制燈光、馬達(dá)和其他的裝置來反饋、影響環(huán)境。對(duì)Arduino的編程是利用Arduino編程語(yǔ)言(基于Wiring)和Arduino開發(fā)環(huán)境(based on Processing)來實(shí)現(xiàn)的?;?span style="color:#FF0000;">Arduino的項(xiàng)目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上運(yùn)行的軟件,它們之間進(jìn)行通信來實(shí)現(xiàn)。

    MPR121

    MPR121飛思卡爾公司設(shè)計(jì)研發(fā)的一種電容式觸摸感應(yīng)控制器,具有內(nèi)部情報(bào)功能,可以感受手指對(duì)接收器的觸摸或者接近,從而發(fā)出相應(yīng)的感應(yīng)信號(hào)提供給控制器。MPR121較之前的版本增加了一個(gè)內(nèi)部情報(bào)和飛思卡爾的第二電容檢測(cè)引擎,其次還增強(qiáng)了電極計(jì)數(shù),硬件配置的I2C地址,一個(gè)擴(kuò)大過濾系統(tǒng)和防反跳,完全獨(dú)立電極帶內(nèi)置自動(dòng)配置等功能。該設(shè)備還包括一個(gè)13模擬電極,代表同時(shí)充電的電極連接在一起,允許更大的附近探測(cè)距離和增加傳感區(qū)域。

    下面就看看我們需要的器材都有哪些:

    Arduino控制器,各種類型的都可以,這里我們采用手中現(xiàn)有的Arduino UNO控制器,當(dāng)然了,我們還得有和Arduino配套使用的傳感器擴(kuò)展板。
    Arduino UNOArduino傳感器擴(kuò)展板

    然后就是我們的重要器件了——I2C Touch Sensor和照明用的各色LED了,小編手中正好有紅色、綠色、黃色和白色的,完全可以用于此次的制作了。
    I2CTouch Sensor紅色LED白色LED黃色LED綠色LED

    除了上述的器件,我們還需要一塊面包板和連接線
    面包板面包板跳線

    讓我們現(xiàn)在簡(jiǎn)單的驗(yàn)證一下這個(gè)想法是否可行,首先將各種需要的器件都按照需要使用面包板連接在一起,驗(yàn)證一下代碼是否可行(庫(kù)文件點(diǎn)這里)。

    #include
    #include

    #define MPR121_R    0xB5
    #define MPR121_W    0xB4
    #define MPR121addr  0x5a

    int StateOfTouch1 = 0;
    int StateOfTouch2 = 0;
    int StateOfTouch3 = 0;
    int StateOfTouch4 = 0;
    int irqpin        = 2;
    uint16_t touchstatus;
    volatile int GetTouchSignal = 0;
    unsigned char reg = 0;
    unsigned char status1 =0;
    unsigned char status2 =0;
    long previousMillis = 0;
    long interval = 100;

    void setup()
    {
    Serial.begin(9600);
    DDRC |= 0b00010011;
    PORTC = 0b00110000;
    i2cInit();
    Serial.println("setting device up..");
    delay(100);
    mpr121QuickConfig();
    }

    void loop()
    {
    unsigned char MPR_Query=0;
    unsigned long currentMillis = millis();
    if(currentMillis - previousMillis > interval)
    {
    previousMillis = currentMillis;
    Read_MPR121();
    }
    if (Serial.available()>0)
    {
    Serial.println("Get a command form PC..");
    reg = Serial.read();
    Serial.print("Quiry the Reg of ");
    Serial.println(reg,BIN);
    MPR_Query = mpr121Read(reg);
    Serial.print("the reg is = 0x");
    Serial.println(MPR_Query,HEX);
    }
    delayMicroseconds(1000);
    }

    void Read_MPR121()
    {
    status1=mpr121Read(0x00);
    status2=mpr121Read(0x01);
    CheckStatus();
    }

    void  CheckStatus()
    {
    if ((status1&0x01)==0x01)
    {
    StateOfTouch1 =1;
    }
    else
    {
    if (StateOfTouch1 ==1)
    {
    Serial.println("channel 0 has pressed..");
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
    StateOfTouch1 =0;
    }
    }
    if ((status1&0x02)==0x02)
    {
    StateOfTouch2 =1;
    }
    else
    {
    if (StateOfTouch2 ==1)
    {
    Serial.println("channel 1 has pressed..");
    digitalWrite(10, LOW);
    digitalWrite(11, HIGH);
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
    StateOfTouch2 =0;
    }
    }
    if ((status1&0x04)==0x04)
    {
    StateOfTouch3 =1;
    }
    else
    {
    if (StateOfTouch3 ==1)
    {
    Serial.println("channel 2 has pressed..");
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, HIGH);
    digitalWrite(13, LOW);
    StateOfTouch3 =0;
    }
    }
    if ((status1&0x08)==0x08)
    {
    StateOfTouch4 =1;
    }
    else
    {
    if (StateOfTouch4 ==1)
    {
    Serial.println("channel 3 has pressed..");
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, LOW);
    digitalWrite(13, HIGH);
    StateOfTouch4 =0;
    }
    }
    }

    byte mpr121Read(uint8_t address)
    {
    byte data;
    i2cSendStart();
    i2cWaitForComplete();
    i2cSendByte(MPR121_W);
    i2cWaitForComplete();
    i2cSendByte(address);
    i2cWaitForComplete();
    i2cSendStart();
    i2cSendByte(MPR121_R);
    i2cWaitForComplete();
    i2cReceiveByte(TRUE);
    i2cWaitForComplete();
    data = i2cGetReceivedByte();
    i2cWaitForComplete();
    i2cSendStop();
    cbi(TWCR, TWEN);
    sbi(TWCR, TWEN);
    return data;
    }

    void mpr121Write(unsigned char address, unsigned char data)
    {
    i2cSendStart();
    i2cWaitForComplete();
    i2cSendByte(MPR121_W);
    i2cWaitForComplete();
    i2cSendByte(address);
    i2cWaitForComplete();
    i2cSendByte(data);
    i2cWaitForComplete();
    i2cSendStop();
    }

    void mpr121QuickConfig(void)
    {
    Serial.println("config MPR121..");
    mpr121Write(MHD_R, 0x01);
    mpr121Write(NHD_R, 0x01);
    mpr121Write(NCL_R, 0x00);
    mpr121Write(FDL_R, 0x00);
    mpr121Write(MHD_F, 0x01);
    mpr121Write(NHD_F, 0x01);
    mpr121Write(NCL_F, 0xFF);
    mpr121Write(FDL_F, 0x02);
    mpr121Write(ELE0_T, TOU_THRESH);
    mpr121Write(ELE0_R, REL_THRESH);
    mpr121Write(ELE1_T, TOU_THRESH);
    mpr121Write(ELE1_R, REL_THRESH);
    mpr121Write(ELE2_T, TOU_THRESH);
    mpr121Write(ELE2_R, REL_THRESH);
    mpr121Write(ELE3_T, TOU_THRESH);
    mpr121Write(ELE3_R, REL_THRESH);

    mpr121Write(ATO_CFGU, 0xC9);
    mpr121Write(ATO_CFGL, 0x82);
    mpr121Write(ATO_CFGT,0xb5);
    mpr121Write(ATO_CFG0, 0x1B);
    mpr121Write(ELE_CFG, 0x8c);
    Serial.println("config MPR121 Done!");
    }

    void  checkInterrupt(void)
    {
    int IRQ =0;
    IRQ = digitalRead(irqpin);
    if(IRQ == 0)
    {
    GetTouchSignal=1;
    }
    else
    {
    GetTouchSignal=0;
    }
    }
    相關(guān)聯(lián)接
    Arduino UNO

    Arduino 傳感器擴(kuò)展板

    紅色LED

    面包板

    面包板跳線


    • 用戶評(píng)價(jià)

    匿名用戶
    咨詢內(nèi)容:
    這個(gè)教程不完整啊,起完整版的
    總計(jì) 1 個(gè)記錄,共 1 頁(yè)。 第一頁(yè) 上一頁(yè) 下一頁(yè) 最末頁(yè)
    用戶名: 匿名用戶
    E-mail:
    評(píng)價(jià)等級(jí):
    評(píng)論內(nèi)容:
    驗(yàn)證碼:
    captcha

    Hi,大家好,我是小奧!

    歡迎來到奧松機(jī)器人的世界!

    需要咨詢服務(wù)請(qǐng)點(diǎn)小奧哦!

    • 銷售咨詢: 銷售咨詢
    • 銷售咨詢: 銷售咨詢
    • 技術(shù)支持: 技術(shù)支持
    • 咨詢電話:
      0451-86628691
    Top