Contents ...
udn網路城邦
ARDUINO I2C BUS LED DIMMING SHIELD
2012/07/06 16:35
瀏覽500
迴響0
推薦1
引用0

ARDUINO I2C BUS LED DIMMING SHIELD

單色LED漸亮與漸暗實驗,沒用腳架...抖抖抖...尷尬

程式範例 1-1(IDE 1.0.1)


#include <Wire.h>

unsigned char i;

void setup()
{ 
  
}

void loop()
{
  for(i=0; i<255; i++)
  {
    SetLed();
    delay(10);
  }
  for(i=255; i>0; i--)
  {
    SetLed();
    delay(10);
  }
}

void SetLed(void)
{
  Wire.begin();
  Wire.beginTransmission(0x61);
  Wire.write(0x12);
  Wire.write(0);
  Wire.write(i);
  Wire.write(0);
  Wire.write(255-i);
  Wire.write(0xAA);
  Wire.write(0xAA);
  Wire.write(0xFF);
  Wire.write(0xFF);
  Wire.endTransmission();
}
驅動七段顯示器實驗
程式範例 2-1(IDE 1.0.1)
 
#include <Wire.h>

// 0 - 9
unsigned int LED_NUM[] = {0x0555, 0x0014, 0x1145, 0x1055, 0x1414, 0x1451, 0x1550, 0x0015, 0x1555, 0x1415};

unsigned char i;

void setup()
{ 

}

void loop()
{
  for(i=0; i<100; i++)
  {
    SetLedNum(i);
    delay(200);
  }
}

void SetLedNum(unsigned char NUM)
{
  unsigned char LED, a, b;
  
  Wire.begin();
  Wire.beginTransmission(0x61);
  Wire.write(0x16);
  
  // DS1
  a = NUM %10;
  LED = LED_NUM[a] & 0xFF;
  Wire.write(LED);
  LED = LED_NUM[a] >> 8 & 0xFF;
  Wire.write(LED);
 
  // DS2
  b = NUM / 10;
  LED = LED_NUM[b] & 0xFF;
  Wire.write(LED);
  LED = LED_NUM[b] >> 8 & 0xFF;
  Wire.write(LED);
  
  Wire.endTransmission();
}
RGB全彩LED實驗,綠色被相機濾掉...
尷尬
程式範例 3-1(IDE 1.0.1)
 
#include <Wire.h>

void setup()
{
}

void loop()
{
  LedOnTest();
}

void LedOnTest(void)
{
  //All LED turn RED
  Wire.begin();
  Wire.beginTransmission(0x60);
  Wire.write(0x16);
   
  Wire.write(0x41);
  Wire.write(0x10);
  Wire.write(0x04);
  Wire.write(0x01);
  Wire.endTransmission();
  
  delay(1000);
  //All LED turn GREEN
  Wire.begin();
  Wire.beginTransmission(0x60);
  Wire.write(0x16);
   
  Wire.write(0x04);
  Wire.write(0x41);
  Wire.write(0x10);
  Wire.write(0x04);
  Wire.endTransmission();
  
  delay(1000);
  //All LED turn BLUE
  Wire.begin();
  Wire.beginTransmission(0x60);
  Wire.write(0x16);
   
  Wire.write(0x10);
  Wire.write(0x04);
  Wire.write(0x41);
  Wire.write(0x10);
  Wire.endTransmission();
  
  delay(1000);
  
  //All LED turn YELLOW (RED + GREEN)
  Wire.begin();
  Wire.beginTransmission(0x60);
  Wire.write(0x16);
   
  Wire.write(0x41 | 0x04);
  Wire.write(0x10 | 0x41);
  Wire.write(0x04 | 0x10);
  Wire.write(0x01 | 0x04);
  Wire.endTransmission();
  
  delay(1000);

  //All LED turn MAGENTA (RED + BLUE)
  Wire.begin();
  Wire.beginTransmission(0x60);
  Wire.write(0x16);
   
  Wire.write(0x41 | 0x10);
  Wire.write(0x10 | 0x04);
  Wire.write(0x04 | 0x41);
  Wire.write(0x01 | 0x10);
  Wire.endTransmission();
  
  delay(1000);

  //All LED turn AQUAMARINE (GREEN + BLUE)
  Wire.begin();
  Wire.beginTransmission(0x60);
  Wire.write(0x16);
   
  Wire.write(0x04 | 0x10);
  Wire.write(0x41 | 0x04);
  Wire.write(0x10 | 0x41);
  Wire.write(0x04 | 0x10);
  Wire.endTransmission();

  delay(1000);
  
  //All LED turn WHITE (RED + GREEN + BLUE)
  Wire.begin();
  Wire.beginTransmission(0x60);
  Wire.write(0x16);
   
  Wire.write(0x41 | 0x04 | 0x10);
  Wire.write(0x10 | 0x41 | 0x04);
  Wire.write(0x04 | 0x10 | 0x41);
  Wire.write(0x01 | 0x04 | 0x10);
  Wire.endTransmission();

  delay(1000);
}
程式範例 3-2(IDE 1.0.1)

#include <Wire.h>

unsigned char i;

void setup()
{ 
  
}

void loop()
{
  for(i=0; i<255; i++)
  {
    SetLed();
    delay(10);
  }
  
  for(i=255; i>0; i--)
  {
    SetLed();
    delay(10);
  }
}

void SetLed(void)
{
  Wire.begin();
  Wire.beginTransmission(0x60);
  Wire.write(0x12);
  
  Wire.write(0);
  Wire.write(i);
  
  Wire.write(0);
  Wire.write(255-i);
  
  Wire.write(0x02);
  Wire.write(0x02);
  Wire.write(0x2A);
  Wire.write(0x22);
  Wire.endTransmission();
}

購買處1

購買處2

有誰推薦more
全站分類:知識學習 科學百科
自訂分類:ARDUINO (AVR)
上一則: ARDUINO 簡易波形產生器
你可能會有興趣的文章:
發表迴響

會員登入