Тахометр на Arduino, что не так?

Тема в разделе "Arduino & Shields", создана пользователем ilyoon, 11 окт 2016.

  1. ilyoon

    ilyoon Нуб

    Решил сделать тахометр на карбюратор и выводить показания на 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);  //задержка для стабильности
    }
    [​IMG]
    Для проверки замыкал/размыкал 5V на 2 выход. Еще начинающий ардуинщик, может проблема где-то на поверхности?
    P.s на схеме сегментный индикатор т.к олед на том сайте не было)
    Обороты собираюсь считывать с катушки зажигания (т.к установленна контактная сисетма зажигания), для этого надо делить показания на 2.Подключать буду через делитель напряжения вот такой:
    [​IMG]
     
    Последнее редактирование: 11 окт 2016
  2. rkit

    rkit Гуру

    1. Висящие в воздухе контакты подключаются не просто так.
    http://wiki.amperka.ru/конспект-arduino:кнопка

    2.
    Переменные, используемые в прерываниях. должны быть объявлены как volatile.
     
    Tomasina нравится это.