我正在为我的Arduino 101编写一个莫尔斯代码翻译器/东西,但是在我将我的代码上传到我的arduino之后,它只打印了10个长/短值,当它应该打印大约24个时,它也是当我去重置它似乎没有重置。我也很困惑如何不打印第16行," tock"。 我不确定为什么代码没有完全执行,它在TI微控制器上工作正常(是的,我在切换设备时做了修改)
void setup()
{
Serial.begin(9600);
pinMode(2,INPUT);
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
int timeInterval =100;
int totalTime=0;
int i= 0;
int dataPoints=24;
int dash=3*timeInterval;
int morse[dataPoints];
int gapTime=0;
int gap[dataPoints];
Serial.print("tock");
for (i=1; i<dataPoints; ){
boolean buttonStatus = !digitalRead(2);
if (buttonStatus == HIGH){
totalTime=totalTime+timeInterval;
delay(timeInterval);
}
else{
gapTime=gapTime+timeInterval;
}
delay(timeInterval);
if(buttonStatus==LOW) {
if (totalTime>dash){
gap[i]=gapTime;
Serial.print("Long");
Serial.print(",");
delay(1);
totalTime=0;
morse[i]=1;
i++;
gapTime=0;
}
else if(totalTime>0){
gap[i]=gapTime;
Serial.print("short");
Serial.print(",");
morse[i]=0;
gapTime=0;
delay(1);
totalTime=0;
i++;}
else{
delay(1);
}
}
}
Serial.println(morse[0]);
Serial.println(gap[0]);
Serial.println(morse[1]);
Serial.println(gap[1]);
Serial.println(morse[2]);
Serial.println(gap[2]);
Serial.println(morse[3]);
Serial.println(gap[3]);
Serial.println(morse[4]);
Serial.println(gap[4]);
Serial.println(morse[5]);
Serial.println(gap[5]);
Serial.println(morse[6]);
Serial.println(gap[6]);
Serial.println(morse[7]);
Serial.println(gap[7]);
Serial.println(morse[8]);
Serial.println(gap[8]);
Serial.println(morse[9]);
Serial.println(gap[9]);
Serial.println(morse[10]);
Serial.println(gap[10]);
Serial.println(morse[11]);
Serial.println(gap[11]);
Serial.println(morse[12]);
Serial.println(gap[12]);
Serial.println(morse[13]);
Serial.println(gap[13]);
Serial.println(morse[14]);
Serial.println(gap[14]);
Serial.println(morse[15]);
Serial.println(gap[15]);
Serial.println(morse[16]);
Serial.println(gap[17]);
Serial.println(morse[18]);
Serial.println(gap[18]);
Serial.println(morse[19]);
Serial.println(gap[19]);
Serial.println(morse[20]);
Serial.println(gap[20]);
Serial.println(morse[21]);
Serial.println(gap[21]);
Serial.println(morse[22]);
Serial.println(gap[22]);
Serial.println(morse[23]);
Serial.println(gap[23]);
Serial.println(morse[24]);
Serial.println(gap[24]);
int unit=5*timeInterval+1;
for (i=1; i<(dataPoints-1);i++){
if (morse[i]==0&& gap[i+1]<unit && morse[i+1]==0 && gap[i+2]<unit && morse[i+2]==0 && gap[i+3]>unit){
Serial.print("S");
}if (morse[i]==1&& gap[i+1]<unit && morse[i+1]==1 && gap[i+2]<unit && morse[i+2]==1 && gap[i+3]>unit){
Serial.print("O");
}
if (morse[i]==1 && gap[i+1]<unit && morse[i+1]==0 && gap[i+2]<unit && morse[i+2]==0 && gap[i+3]>unit){
Serial.print("D");
}
if (morse[i]==0&& gap[i+1]<unit && morse[i+1]==1 && gap[i+2]<unit && morse[i+2]==0 && gap[i+3]>unit){
Serial.print("R");
}
else{}
}
}
void loop()
{
}