millis()
- Войдите на сайт для отправки комментариев
Ср, 20/07/2016 - 16:34
Имеется вот такой код:
// задаем константы const int buttonPin = 2; // номер входа, подключенный к кнопке const int ledPin = 13; // номер выхода светодиода // переменные int buttonState = 0; // переменная для хранения состояния кнопки int t1; int t2; void setup() { Serial.begin(9600); // инициализируем пин, подключенный к светодиоду, как выход pinMode(ledPin, OUTPUT); // инициализируем пин, подключенный к кнопке, как вход pinMode(buttonPin, INPUT); } void loop(){ // считываем значения с входа кнопки buttonState = digitalRead(buttonPin); // проверяем нажата ли кнопка // если нажата, то buttonState будет HIGH: if (buttonState == HIGH) { // включаем светодиод t1 = millis(); } delay(70); if (buttonState == HIGH) { // включаем светодиод t2 = millis(); } long counter = t2 - t1; if (counter > 0 ) { digitalWrite(ledPin, HIGH); } //Serial.print(counter); }
И почему-то светодиод не загорается, а Serial Monitor молчит.
Serial Monitor молчит, потому что в скетче нет ни одного Serial.print(); или Serial.println();
И не int t1, t2, а unsigned long. И не long counter - а unsigned long counter. Изучите тип возвращаемого функцией millis значения, плз.
DIYMan, раз уж мы потратились на 4 дополнительных байта для t1 и t2, нужно бы компенсировать за счет buttonState, ledPin и buttonPin :)
DIYMan, раз уж мы потратились на 4 дополнительных байта для t1 и t2, нужно бы компенсировать за счет buttonState, ledPin и buttonPin :)
За живое что ли задело? Подъ@бка не засчитана :) Единственное, с чем согласен, так это с тем, что для counter unsigned long избыточно, остальное - только правки авторского скетча, т.к. не совпадали типы.
Как можно заметить - это только правки, я тут не вываливал с хером наперевес готовое "суперкрутое" решение, как любят некоторые. Вот если вывалю такое же г. - тогда и спрОсите.
Исправленый мной вариант