Robofun 機器人論壇

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

請問如何增加arduino的傳輸速度

[複製鏈接]
跳轉到指定樓層
1#
發表於 2014-10-17 12:59:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大家好
我用arduino來傳輸LED的數位訊號但是速度到1K就上不去了
arduino得極限不只是這樣吧
電路方面我單獨測試過可到Mega bps的速度
可以看看arduino程式有什麼問題嗎?

#define analogInPin 0 //類比輸入訊號腳位
int sensorValue = 0;

//發射端:


void setup(){
Serial.begin(57600);
pinMode(11, OUTPUT);

}

void loop(){
  int t;
  t=1000;
  char C;
    if(Serial.available()>0) {
      Serial.print("TX=");
      C = Serial.read();   //讀取電腦經由串列埠傳送的資料
      digitalWrite(11,HIGH); delayMicroseconds(t); //開始輸出
      //Serial.print(1);
      Serial.println(C);     //將收到的資料再回傳給電腦
      //Serial.println(c,HEX);
     // Serial.println(c,BIN);

      Serial.print((C>>7)&0x01,BIN);
      digitalWrite(11,(C>>7)&0x01); delayMicroseconds(t);
      Serial.print((C>>6)&0x01,BIN);
      digitalWrite(11,(C>>6)&0x01);delayMicroseconds(t);
      Serial.print((C>>5)&0x01,BIN);
      digitalWrite(11,(C>>5)&0x01);delayMicroseconds(t);
      Serial.print((C>>4)&0x01,BIN);
      digitalWrite(11,(C>>4)&0x01);delayMicroseconds(t);
      Serial.print((C>>3)&0x01,BIN);
      digitalWrite(11,(C>>3)&0x01);delayMicroseconds(t);
      Serial.print((C>>2)&0x01,BIN);
      digitalWrite(11,(C>>2)&0x01);delayMicroseconds(t);
      Serial.print((C>>1)&0x01,BIN);
      digitalWrite(11,(C>>1)&0x01);delayMicroseconds(t);
      Serial.println((C)&0x01,BIN);
      digitalWrite(11,(C)&0x01);delayMicroseconds(t);
      digitalWrite(11, LOW);  delayMicroseconds(t);

    }

//接收端:


  //讀取接腳的類比訊號數值
  sensorValue = analogRead(analogInPin);
  int a,b,c,d,e,f,g,h,i;
  char j;
// sensorValue =  sensorValue/1023*5;

if ( sensorValue > 800){
  delayMicroseconds(t);
  delayMicroseconds(1);
// delayMicroseconds(2);
    a=b=c=d=e=f=g=h=i=0;
    //01
   sensorValue = analogRead(analogInPin);
   if (sensorValue > 800){Serial.print(1); delayMicroseconds(t);a=128;}
    else{Serial.print(0); delayMicroseconds(t);a=0;}
  //  Serial.println(sensorValue);
  //02
  sensorValue = analogRead(analogInPin);
  if (sensorValue > 800){Serial.print(1); delayMicroseconds(t);b=64;}
    else{Serial.print(0); delayMicroseconds(t);b=0;}
  //  Serial.println(sensorValue);
  //03
  sensorValue = analogRead(analogInPin);
  if (sensorValue > 800){Serial.print(1); delayMicroseconds(t);c=32;}
    else{Serial.print(0); delayMicroseconds(t);c=0;}
  //  Serial.println(sensorValue);
  //04
  sensorValue = analogRead(analogInPin);
  if (sensorValue > 800){Serial.print(1); delayMicroseconds(t);d=16;}
    else{Serial.print(0); delayMicroseconds(t);d=0;}
  //  Serial.println(sensorValue);
//05
  sensorValue = analogRead(analogInPin);
  if (sensorValue > 800){Serial.print(1); delayMicroseconds(t);e=8;}
    else{Serial.print(0); delayMicroseconds(t);e=0;}
  //  Serial.println(sensorValue);
//06
  sensorValue = analogRead(analogInPin);
  if (sensorValue > 800){Serial.print(1); delayMicroseconds(t);f=4;}
    else{Serial.print(0); delayMicroseconds(t);f=0;}
  //  Serial.println(sensorValue);
//07
  sensorValue = analogRead(analogInPin);
  if (sensorValue > 800){Serial.print(1); delayMicroseconds(t);g=2;}
    else{Serial.print(0); delayMicroseconds(t);g=0;}
  //  Serial.println(sensorValue);
//08
  sensorValue = analogRead(analogInPin);
  if (sensorValue > 800){Serial.println(1); delayMicroseconds(t);h=1;}
    else{Serial.println(0); delayMicroseconds(t);h=0;}
  //  Serial.println(sensorValue);

  i=a+b+c+d+e+f+g+h;
  j=i;
   Serial.print("RX=");
  Serial.println(j);
// Serial.println("-------------");
}

}
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-1-31 12:49 , Processed in 0.128141 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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