Как мне печатать одно и то же значение повторно? - PullRequest
0 голосов
/ 18 марта 2019

Я могу отобразить t на экране, но каждый раз, когда цикл повторяется, текущее значение t добавляется к предыдущему значению перед печатью.Это означает, что он печатает 9,18,27,36 ... Как мне избежать этого?Мне нужно, чтобы он отображал 9 постоянно, пока код повторяется.

int d,i,p,s,t,arr[30];
float hp = 0;
float arr2[30];
void setup(){
  Serial.begin(9600);
}
void loop(){
    for (d = 0; d < 360; d++){
          if (sin(d*(PI/180))+1 + sin(d*(2*PI/180))+1> sin((d-1)*(PI/180))+1 
+ sin((d-1)*(2*PI/180))+1 && sin(d*(PI/180))+1 + sin(d*(2*PI/180))+1 > 
sin((d+1)*(PI/180))+1 + sin((d+1)*(2*PI/180))+1){
         arr2[i++] = sin(d*(PI/180))+1 + sin(d*(2*PI/180))+1;
        }
      }
for (p = 0;p <30; p++){
  if(arr2[p]!=0){
    if (arr2[p]>hp){
    hp = arr2[p];  
    }  
  } 
}
for (d = 0; d < 3600; d++){
      if (sin(d*(PI/180))+1 + sin(d*(2*PI/180))+1 >= hp){
         arr[s++] = d;
        }
      }
 for (s = 0; s < 30; s++){
  if (arr[s]!=0){
    t++;
   }
  } 
  Serial.println(t);
}

1 Ответ

1 голос
/ 18 марта 2019

Общий совет:

Определите переменные с наименьшей возможной областью действия.В вашем случае, если нет причин делать глобальные переменные t и d, не делайте их глобальными переменными.Заставьте их функционировать как локальные переменные.

Измените ваш код на:

void loop(){
   int t = 0;
   int d = 0;

   ...

   Serial.println(t);
}

Это решит вашу непосредственную проблему и, что более важно, ваш код станет чище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...