Посчитать количество оборотов кулера от ПК на esp8266

Тема в разделе "ESP8266, ESP32", создана пользователем Danil_2002, 24 июл 2019.

  1. Danil_2002

    Danil_2002 Гик

    Доброго времени суток!

    Нужно контролировать скорость вращения двух кулеров на esp8266. Написал небольшую программу для arduino uno:

    Код (C++):

    volatile int val_X1 = 0;
    volatile int val_X2 = 0;
    void rpm_1()
    {
      val_X1++;
    }
    void rpm_2()
    {
      val_X2++;
    }
    void setup() {
      Serial.begin(115200);
      attachInterrupt(0, rpm_1, CHANGE);
      attachInterrupt(1, rpm_2, CHANGE);
    }

    void loop() {
      val_X1 = 0;
      val_X2 = 0;
      delay(500);
      Serial.print("value X1: ");
      Serial.println((val_X1*60)/2);
      Serial.print("value X2: ");
      Serial.println((val_X2*60)/2);

    }
    Он работает

    Пытаюсь сделать это с esp8266(конкретно в wemos d1)

    Код (C++):

    volatile int val_X1 = 0;
    volatile int val_X2 = 0;

    const byte X1 = D2;

    void rpm_1()
    {
      val_X1++;
    }
    void setup() {
      Serial.begin(115200);
      attachInterrupt(digitalPinToInterrupt(X1),rpm_1, CHANGE);
    }

    void loop() {
      val_X1 = 0;
      val_X2 = 0;
      delay(500);
      Serial.print("value X1: ");
      Serial.println((val_X1*60)/2);
      Serial.print("value X2: ");
      Serial.println((val_X2*60)/2);

    }
    С wemos d1 не работает.

    Вот что получаю:
    На форумах читал что такая проблема может возникать при программировании esp8266 в Arduino IDE, якобы нужно использовать специальную среду для этого. Я редко использую esp и поэтому решил спросить опытных людей, правда ли это? Может я сам где то ошибся в коде?
     
    Последнее редактирование модератором: 24 июл 2019
  2. Airbus

    Airbus Радиохулиган Модератор

    Оно и не будет на другом железе кроме УНО/НАНО работать.Даже на Меге.Почему?Обьясню если расскажете что за блок кода такой и как он работает?
    attachInterrupt(digitalPinToInterrupt(X1),rpm_1, CHANGE);
     
  3. Danil_2002

    Danil_2002 Гик

    attachInterrupt(pin, function, change) - функция, которая задает внешнее прерывание. Для уно это номер пина либо 2, либо 3. function обработчик прерывания.
     
  4. Danil_2002

    Danil_2002 Гик

    Просто хотите верьте или нет, но в статье про esp так делали прерывание по нажатию кнопки
     
  5. Airbus

    Airbus Радиохулиган Модератор

    Браво!И поэтому Вы считаете что прерывания работают одинаково на всех микроконтроллерах?
     
    Последнее редактирование: 24 июл 2019
  6. Airbus

    Airbus Радиохулиган Модератор

    А так?
    Код (C++):
    volatile int val_X1 = 0;

    const byte X1 = 2;

    void rpm_1()
    {
      val_X1++;
    }
    void setup() {
      Serial.begin(115200);
      attachInterrupt(digitalPinToInterrupt(X1),rpm_1, CHANGE);
    }

    void loop() {
      val_X1 = 0;
      delay(500);
      Serial.print("value X1: ");
      Serial.println((val_X1*60)/2);
     
    У меня скомпилилось
     
    Последнее редактирование: 24 июл 2019
  7. Danil_2002

    Danil_2002 Гик

  8. Airbus

    Airbus Радиохулиган Модератор

    Вы ЭТО имеете ввиду?
     
  9. Airbus

    Airbus Радиохулиган Модератор

    Да всё правильно сразу не понял-тупанул.Но всё равно есть особенности.
     
  10. Danil_2002

    Danil_2002 Гик

    Нет, просто на форуме читал что Arduino IDE это больше любительская среда программирования и она якобы иногда может всякие фокусы вытворять(не мои слова)
     
  11. Danil_2002

    Danil_2002 Гик

    Всякое бывает
     
  12. Airbus

    Airbus Радиохулиган Модератор

    может.У меня стоит две 1.6.5. считается что самая надёжная но фокусы преподносит.И 1.8.5. на момент установки была самая новая щас есть новее.Так вот одна может код забраковать а вторая скомпилить.так и живём.А ещё есть боле ранние 1.5.х или 1.0.х так одни других на дух не переносят.Такая вот Си кросплатформенность.Мне в основном IDE для esp надо.Для Меги8/328 я и на Кодвижн напишу если надо.Но некоторые приятные плюшки нравятся.
     
    Последнее редактирование: 24 июл 2019
  13. Danil_2002

    Danil_2002 Гик

    Окей, попробую скачать другие версии Arduino IDE с ними по экспериментировать
     
  14. Airbus

    Airbus Радиохулиган Модератор

    У вас какая щас?Есть плагин для esp?
     
  15. Danil_2002

    Danil_2002 Гик

    У меня 1.8.5, скачал 1.6.5 на ней тоже не работает. Плагин стоит
     
  16. Airbus

    Airbus Радиохулиган Модератор

    А тот код что я поправил-скомпилился на 1-8-5?(пост#6)У меня да.В железе проверть не могу пока.Плагины для esp установили?(пост#8)
     
  17. Danil_2002

    Danil_2002 Гик

    Сейчас проверю, я проглядел сообщение
     
  18. Danil_2002

    Danil_2002 Гик

    У меня тоже скомпилировалось, но в мониторе порта все тоже
     
  19. NikitOS

    NikitOS Король шутов Администратор

    А это только для этого кода, или для всего?
     
  20. Danil_2002

    Danil_2002 Гик

    Если вы имеете в ввиду работают ли другие программы для esp, то они работают. Именно этот скейтч с прерываниями проблемный.