Pętla for nie dziala poprawnie - początkujący

0

Witam, ostatnio zacząłem bawić się w C#, a dokładniej arduino, i na starcie mam problem z pętlą w moim 'małym programie'. Generalnie sprawa wygląda tak, że pętla zamiast wykonać jakieś polecenie kilka razy wykonuje je w nieskończoność.
Całość kodu nie jest chyba istotna jeżeli tylko pętla coś świruje.

 
for (int a=0; a<2; a++)
 {
   
    Serial.println("Podaj dlugosc pierwszego boku: ");
  } 

Pozdrawiam serdecznie, wybaczcie za tak banalne pytanie, ale według mnie jest z nią wszystko ok ;)
PS. Nie wiem czy na dobre forum trafiłem, ale w końcu arduino to też C#, więc mam nadzieję, że nie robi to różnicy.

0

masz warunek zly w petli

http://fasadin.4programmers.net/2016/03/4-pierwsze-programy.html
to nie wazne ze to c++ zasada dzialan petli sa takie same. Czytaj od 4.4.2

edit przed edycja miales znak rownosci tam w warunku. Obecnie ten kod ktory masz wydaje sie poprawny

0

Wybacz, próbowałem właśnie edytować jakoś ten pierwszy, ale (chyba) poprawny warunek, i powychodzily jakies dziwne twory. Pierwotnie warunkiem było a<2, ale też wykonuje się w nieskończoność.

1

jak widzisz tutaj http://ideone.com/298zBr Twoj warunek petli jest dobry.
Bez wiekszych szczegolow ciezko cokolwiek stwierdzic.

0

Generalnie program ma obliczać pole prostokąta po wpisaniu długości boków. Jest jeszcze w ogóle niedokończony, gryzę się dopiero z początkową pętlą, wydaje mi się, że do początku komentarza jest chyba ok, to co w komentarzu ma jeszcze bardzo dużo (przynajmniej dla mnie) do dopracowania. Warunek znów inny, ale dalej chodzi o to samo.

String odebraneDane = ""; //Pusty ciąg odebranych danych
String odebraneDane2 = ""; 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  for (int a=0; a<1; a++)
 {
      Serial.println("Podaj dlugosc pierwszego boku: ");
  }
   if(Serial.available() > 0) { //Czy Arduino odebralo dane
    odebraneDane = Serial.readStringUntil('\n'); //Jeśli tak, to odczytaj je do znaku końca linii i zapisz w zmiennej odebraneDane
   Serial.print("Bok a ma dlugosc: ");
   Serial.print(String(odebraneDane));
   }

}
   /* if(Serial.available() > 0) {
      odebraneDane2 = Serial.readStringUntil('\n');
      Serial.println(odebraneDane);
    }
 int wynik = prostoPole(odebraneDane.toInt(), odebraneDane2.toInt());
    Serial.println(wynik); //Wyświetl komunikat
}
     
    
   
 
int prostoPole(int a, int b) {
  int wynik = 0;
  wynik = a * b;
  
  return wynik;
} */ 
0

Klamerki masz chyba źle, w pętli for jest tylko jedna instrukcja Serial.printl, a powinno byc wiecej:)

Tak na marginesie, to nie widze tutaj za duzego sensu stosowania jakiejkolwik petli - no chyb, ze chodzi o nauke. I jesli korzystasz z visuala, to poleca skrot Ctrl+K+D (przy standardowym setupie c#)

0

Witam,

Trochę nie rozumiem dlaczego w dziale o .NET pytasz się jak coś zrobić w arduino.

Pozdrawiam,

mr-owl

0

Bo wydawało mi się (błędnie?), że arduino IDE jest bardzo zbliżony do C# :)

0

Witam,

Można doinstalować http://www.visualmicro.com/ by używać Visual Studio jako edytor (i tak wymagane jest Arduino IDE) ale składnia i biblioteki wyglądają inaczej.

Zobacz może przykład ze strony http://www.toptechboy.com/arduino/lesson-12-simple-and-easy-way-to-read-strings-ints-and-floats-over-arduino-serial-port/

Pozdrawiam,

mr-owl

1 użytkowników online, w tym zalogowanych: 0, gości: 1