Собирал для своего компьютера, дабы меньше шумел. Вот схема и фото. Скетч Код (Text): #include <Wire.h> #include <LiquidCrystal_I2C.h> volatile int val; volatile int val1; void rpm() { val++; } void rpm1() { val1++; } LiquidCrystal_I2C lcd(0x3f, 16, 2); void setup() { Serial.begin(9600); attachInterrupt(0, rpm, CHANGE); attachInterrupt(1, rpm1, CHANGE); lcd.init(); lcd.backlight(); lcd.print("System Fan"); } void loop() { val = 0; // сбрасываем счетчик и ждем. val1 = 0; delay(500); // так как прерывание CHANGE, срабатывает два раза // то и считываем каждые пол секунды. lcd.setCursor(0, 0); lcd.print("Fan 1 "); lcd.print((val * 60) / 2); lcd.print(" rpm"); lcd.print(" "); lcd.setCursor(0, 1); lcd.print("Fan 2 "); lcd.print((val1 * 60) / 2); lcd.print(" rpm"); lcd.print(" "); }
Молодец. Но комментариев в скетче почти нету, для тех кто хочет повторить и особенно для новичков. Вот к примеру как в вики. Из этого следует что у тебя оно каждые пол секунды срабатывает. Переведи обороты в секунду и посчитай сколько раз сработает прерывание. От сюда исходя можно сделать прерывание по заднему или переднему фронту будет реже срабатывать. А пол секунды это просто выводится на экран(обновляется). ps\ А продолжение будет.