Одометр
- Войдите на сайт для отправки комментариев
Сб, 23/07/2016 - 10:09
Имеется вот такой код, нужно посчитать кол-во оборотов колёса. Этот код всегда возвращает 1. Почему так?
While (digitalRead(btn) == HIGH); dst++;
Имеется вот такой код, нужно посчитать кол-во оборотов колёса. Этот код всегда возвращает 1. Почему так?
While (digitalRead(btn) == HIGH); dst++;
Потому что точка с запятой в конце первой строки. И он вообще компилироваться не должен - while с большой буквы написано.
В коде с маленькой, это здесь, я так написал. А в целом что может быть не так в 2 строчках? dst это должно быть int или что-то другое?
В коде с маленькой, это здесь, я так написал. А в целом что может быть не так в 2 строчках? dst это должно быть int или что-то другое?
Я вам написал - уберите точку с запятой в конце первой строки. У вас из-за этой точки с запятой отсутствует тело цикла, которое будет выполняться при совпадении по условию.
выводит различные числа, от -32854 до 12856
Приведённый Вами скетч не может ничего никуда выводить, если желаете помощи/советов/предметного разговора - выкладывайте скетч полностью.
В коде с маленькой, это здесь, я так написал.
Вы издеваетесь? Люди тратят время на поиск ошибок в бреде, который Вы "здесь так написали"?
Код выкладывается
а) полностью
б) копи-пастом, а не ручным переписыванием.
Не кусайтесь. Ребенок же.
Денчик, если тело цикла состоит из одного только dst++, то этот самый цикл начинает крутиться со страшной скоростью и переменная тупо переполняется неизвестное количество раз, пока не случится выполнение условия выхода из цикла. Можно скзать, что при выходе из цикла переменная имеет случайное значение.
Дополню предыдущего оратора: чтобы написать корректно работающий код, надо точно знать, что именно хочется сделать/получить. Без всех необходимых вводных - результат может быть ХЗ.
const int pin = 2; int k = 0; void setup() { // put your setup code here, to run once: pinMode(pin, INPUT_PULLUP); Serial.begin(9600); } void loop() { // put your main code here, to run repeated while (digitalRead(pin)==HIGH) k++ ; Serial.println(k); }void loop() { while(digitalRead(pin) == HIGH); // на этом цикле все будет стоять, пока не приедет магнит k++; // если мы тут, то магнит приехал, увеличиваем счетчик Serial.println(k); // выводим значение delay(50); // ждем, пока магнит уедет }Спасибо, работает