ascii to bin LED output
各位前輩好!小弟之前有寫個程式是用每個 BIT 去判斷要讓 LED 亮或滅!是否可以改成一次就檢查每個bit不需要一個一個檢查!以下是我原始碼int i;
int led[]={2,3,4,5,6,7,8,9};
void setup()
{
Serial.begin(9600);
for(i=0;i<8;i++)
pinMode(led,OUTPUT);
for(i=0;i<8;i++)
digitalWrite(led,HIGH);
}
void loop()
{
if(Serial.available()>0)
{
unsigned char data = Serial.read();
if(data&0x01)
digitalWrite(2,LOW);
else
digitalWrite(2,HIGH);
if(data&0x02)
digitalWrite(3,LOW);
else
digitalWrite(3,HIGH);
if(data&0x04)
digitalWrite(4,LOW);
else
digitalWrite(4,HIGH);
if(data&0x08)
digitalWrite(5,LOW);
else
digitalWrite(5,HIGH);
if(data&0x10)
digitalWrite(6,LOW);
else
digitalWrite(6,HIGH);
if(data&0x20)
digitalWrite(7,LOW);
else
digitalWrite(7,HIGH);
if(data&0x40)
digitalWrite(8,LOW);
else
digitalWrite(8,HIGH);
if(data&0x80)
digitalWrite(9,LOW);
else
digitalWrite(9,HIGH);
}
} 可以改成 for (i=2 to 9), digitalWrite(i,data&(1>>(i-2))); , 但前提是 HIGH 的定義需要為 ''非0" ,LOW 為 0
若是以使用 ATM328 + AVR Studio C 的寫法
PORTB (PB0-PB7)當作輸出腳 , PORTB=UART_Receive() ; 直接將接收到的字元值給 PORTB 就可以了 回復 2# alpha
請問前輩這句話我還是不懂(PORTB (PB0-PB7)當作輸出腳 , PORTB=UART_Receive() ; 直接將接收到的字元值給 PORTB 就可以了)
可以請前輩寫個完整的讓我參考嗎?不好意思小弟剛學微處理機還沒有很熟..... 回復 2# alpha
我是8顆LED 5V接LED陽極 陰極接Arduino的digitalP2~P9 回復 4# jackygwaaa
data=~data 就可以了 回復 3# jackygwaaa
這是 C 語言的寫法 , 不是 ARDUINO 的寫法 , 也許 ARDUINO 有這種寫法 , 只是我不熟 ARDUINO 回復 5# alpha
data=~data ??? 前輩我寫出來後顯示的燈號不正確......
int i;
int led[]={2,3,4,5,6,7,8,9};
void setup()
{
Serial.begin(9600);
for(i=0;i<8;i++)
pinMode(led,OUTPUT);
for(i=0;i<8;i++)
digitalWrite(led,HIGH);
}
void loop()
{
if(Serial.available()>0)
{
unsigned char data = Serial.read();
PORTD = data;
}
} 回復 7# jackygwaaa
因為你的LED 陽極是接 V+,陰極接輸出腳 , 所以當你寫入 '1' 時 ,該輸出腳是高電位, LED 不會亮 , 要寫入'0'才會亮
頁:
[1]