Robofun 機器人論壇

標題: ascii to bin LED output [打印本頁]

作者: jackygwaaa    時間: 2016-5-11 18:17
標題: ascii to bin LED output
前輩好!例如電腦終端機輸入A (ASCII表查到Hexadecimal是41) 轉成Binary是0100 0001然後 LED燈8顆分別同步顯示結果會變成
滅亮滅滅 滅滅滅亮 這樣!希望可以請教各位前輩!
作者: 超新手    時間: 2016-5-11 19:44
if(data&1) digitalwrite(0,High);
else             digitalwrite(0,low);
if(data&2) digitalwrite(1,High);
else             digitalwrite(1,low);
.....
if(data&0x80) digitalwrite(7,High);
else                  digitalwrite(7,low);
作者: jackygwaaa    時間: 2016-5-11 22:56
回復 2# 超新手


請問前輩!data跟0x80是指甚麼?
作者: 超新手    時間: 2016-5-12 08:08
data 是個變數, 存放你收到的資料
例如從電腦終端機收到的 'A'
你把收到的值, 根據每個 BIT 去判斷要讓 LED 亮或滅
作者: jackygwaaa    時間: 2016-5-12 10:44
在請問一下data變數需要變成byte存入嗎?就像這樣byte data = Serial.read();
還有if(data&1)那個1是代表甚麼?
作者: jackygwaaa    時間: 2016-5-12 10:54
前輩以下是我的程式 可是顯示出來的燈號有問題...輸入A因該要滅亮滅滅 滅滅滅亮
可是我的顯示滅亮滅亮滅亮滅亮!
int i;
int led[]={2,3,4,5,6,7,8,9};
int status[]={0,0,0,0,0,0,0,0};
void setup()
{
  Serial.begin(9600);
     for(i=0;i<8;i++)
        pinMode(led[i],OUTPUT);
           for(i=0;i<8;i++)
              digitalWrite(led[i],LOW);
}

void loop()
{
  if(Serial.available()>0)
     {
      byte data = Serial.read();
     
     if(data&1)
       digitalWrite(2,HIGH);
     else            
       digitalWrite(2,LOW);
     if(data&2)
       digitalWrite(3,HIGH);
     else            
       digitalWrite(3,LOW);
     if(data&3)
       digitalWrite(4,HIGH);
     else            
       digitalWrite(4,LOW);
     if(data&4)
       digitalWrite(5,HIGH);
     else            
       digitalWrite(5,LOW);
     if(data&5)
       digitalWrite(6,HIGH);
     else            
       digitalWrite(6,LOW);
     if(data&6)
       digitalWrite(7,HIGH);
     else            
       digitalWrite(7,LOW);
     if(data&7)
       digitalWrite(8,HIGH);
     else            
       digitalWrite(8,LOW);
     if(data&0x80)
       digitalWrite(9,HIGH);
     else            
       digitalWrite(9,LOW);
     }
}
作者: jackygwaaa    時間: 2016-5-12 12:11
謝謝前輩我寫出來了
int i;
int led[]={2,3,4,5,6,7,8,9};
int status[]={0,0,0,0,0,0,0,0};
void setup()
{
  Serial.begin(9600);
     for(i=0;i<8;i++)
        pinMode(led[i],OUTPUT);
           for(i=0;i<8;i++)
              digitalWrite(led[i],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);
     }
}




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2