Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2089|回復: 6
打印 上一主題 下一主題

ascii to bin LED output

[複製鏈接]
跳轉到指定樓層
1#
發表於 2016-5-11 18:17:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
前輩好!例如電腦終端機輸入A (ASCII表查到Hexadecimal是41) 轉成Binary是0100 0001然後 LED燈8顆分別同步顯示結果會變成
滅亮滅滅 滅滅滅亮 這樣!希望可以請教各位前輩!
2#
發表於 2016-5-11 19:44:33 | 只看該作者
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);
3#
 樓主| 發表於 2016-5-11 22:56:55 | 只看該作者
回復 2# 超新手


請問前輩!data跟0x80是指甚麼?
4#
發表於 2016-5-12 08:08:31 | 只看該作者
data 是個變數, 存放你收到的資料
例如從電腦終端機收到的 'A'
你把收到的值, 根據每個 BIT 去判斷要讓 LED 亮或滅
5#
 樓主| 發表於 2016-5-12 10:44:03 | 只看該作者
在請問一下data變數需要變成byte存入嗎?就像這樣byte data = Serial.read();
還有if(data&1)那個1是代表甚麼?
6#
 樓主| 發表於 2016-5-12 10:54:34 | 只看該作者
前輩以下是我的程式 可是顯示出來的燈號有問題...輸入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);
     }
}
7#
 樓主| 發表於 2016-5-12 12:11:42 | 只看該作者
謝謝前輩我寫出來了
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);
     }
}
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-4-20 07:44 , Processed in 0.168430 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表