Решил сделать тахометр на карбюратор и выводить показания на OLED I2C 128х64. Перечитал много форумов и из нескольких примеров сделал скетч, но что-то я делаю не так. Ибо то выводится всякая белиберда, то вообще нечего. Вот скетч: Код (C++): #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); unsigned long lastflash; int RPM; void setup() { Serial.begin(9600); //открыть порт display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64) attachInterrupt(0,sens,RISING); //подключить прерывание на 2 пин при повышении сигнала } void sens() { RPM=60/((float)(micros()-lastflash)/1000000); //расчет lastflash=micros(); //запомнить время последнего оборота } void loop() { if ((micros()-lastflash)>1000000){ //если сигнала нет больше секунды RPM=0; //считаем что RPM 0 } display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0, 0); display.print(RPM); display.display(); delay(50); //задержка для стабильности } Спойлер: Cхема Arduino Для проверки замыкал/размыкал 5V на 2 выход. Еще начинающий ардуинщик, может проблема где-то на поверхности? P.s на схеме сегментный индикатор т.к олед на том сайте не было) Обороты собираюсь считывать с катушки зажигания (т.к установленна контактная сисетма зажигания), для этого надо делить показания на 2.Подключать буду через делитель напряжения вот такой: Спойлер: Схема
1. Висящие в воздухе контакты подключаются не просто так. http://wiki.amperka.ru/конспект-arduino:кнопка 2. Переменные, используемые в прерываниях. должны быть объявлены как volatile.