Есть вот такой скетч: #include <LiquidCrystal.h> #define CNT_PIN 6 LiquidCrystal lcd(4, 5, 10, 11, 12, 13); byte SEC = 0; byte MIN = 0; unsigned long prMillis = 0; void setup() { pinMode(CNT_PIN, INPUT); lcd.begin(16, 2); } void loop() { int rotation; rotation = analogRead(CNT_PIN); if (rotation > 0){ lcd.setCursor(2,2); lcd.print("XXX"); } else { if (MIN > 59) MIN = 0; if (millis() - prMillis > 1000) { prMillis = millis(); SEC++; } if (SEC > 59) { SEC = 0; MIN++; } lcd.setCursor(2,0); lcd.print(MIN); lcd.print("\xBC\xB8\xBD"); lcd.print(" : "); lcd.print(SEC); lcd.print("ce\xBA "); } } Он выводит на LCD монитор минуты и секунды. Идет отсчет и при появлении напряжения на 6 пине или на А0 (на одном из двух) на экран должен выводиться текст и находиться там, пока напряжение присутствует. После исчезновения U-я секундомер должен начать отсчет обратно с нуля. P.s. Прошу сильно не ругать меня за такой кривой скетч и глупый вопрос, я только недавно начал и приходиться все постигать с нуля, т.к. опыта в программировании не имею совсем.
Код (C): rotation = analogRead(CNT_PIN); if (rotation < 0){ Условие никогда не выполнится, ибо analogRead возвращает результат в диапазоне 0-1023. Более того, в паре младших разрядов АЦП по разным причинам может присутствовать "шум", в результате чего при отсутствии напряжения возвращаемое значение может быть в пределах 0-4.
Мы все учились, это нормально. По коду. Код (C++): rotation = analogRead(CNT_PIN); Будет пытаться прочесть A6 (а есть ли он у Вас, что за плата?). AnalogRead работает только с аналоговыми портами, подробнее тут - http://arduino.ru/Reference/AnalogRead. А Вы хотите считывать с А0 и 6 пин. Тогда analogRead(0) или analogRead(A0); Замените Код (C++): rotation = analogRead(CNT_PIN); if (rotation > 0){ На Код (C++): rotation = analogRead(A0); if (rotation > 0 && digitalRead(CNT_PIN)){ Так к же рекомендую потратить время, на Wiki - http://wiki.amperka.ru/. Я говорю о видео уроках и проектах, это позволит Вам сэкономить время при обучении.