Ключевое ?лово

vk

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Железо для умного дома

ТЕМА: Конструктор кода в конструкторе прошивки ESP8266

Конструктор кода в конструкторе прошивки ESP8266 07 Март 2019 21:03 #24174

  • Maikl9999
  • Maikl9999 аватар
  • Не в сети
  • Новый участник
  • Сообщений: 12
  • Спасибо получено: 1
  • Репутация: 0
Я не нашёл переменную для вывода расхода на "сегодня", это моя близорукость или её нет в природе?
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 08 Март 2019 07:56 #24175

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7195
  • Спасибо получено: 1114
  • Репутация: 194
pcf_count1-pcf_countpre[0]

невозможно создать документацию, где описать все переменные и функции в проекте, тут очень много всего
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.
Спасибо сказали: Maikl9999

Конструктор кода в конструкторе прошивки ESP8266 01 Май 2019 15:41 #24458

  • kocik799
  • kocik799 аватар
  • Не в сети
  • Новый участник
  • Сообщений: 13
  • Репутация: 0
Всем привет, пытаюсь добавить этот код на esp8266 rtos:
// Реализация энкодера через прерывания.
// Фильтрация дребезга контактов аппаратная.
// GPIO12 для кнопки энкодера
// GPIO13 для поворотного диска (CLK)
// GPIO14 для поворотного диска (DATA)

#define GPIO_INPUT_IO_0     12 
#define GPIO_INPUT_IO_1     13 
#define GPIO_INPUT_PIN_SEL  ((1ULL<<GPIO_INPUT_IO_0) | (1ULL<<GPIO_INPUT_IO_1))
#define ESP_INTR_FLAG_DEFAULT 0

// обработчики прерываний обязательно до первого упоминания в коде
static void IRAM_ATTR push_isr_handler() // обработчик прерывания кнопки
{
  valdes[0]++;
}

static void IRAM_ATTR rotare_isr_handler() // обработчик прерывания поворотного диска
{
  if(digitalRead(14)){valdes[1]--;}
  else{valdes[1]++;}
}

void startfunc(){ // выполняется один раз при старте модуля.
  valdes[0]=0;
  valdes[1]=0;
  // первое обновление дисплея
  char data[30];
  os_sprintf(data,"Push: %d",valdes[0]);
  LCD_print(0,data);
  os_sprintf(data,"Rotare: %d",valdes[1]);
  LCD_print(1,data);
  // настройка режимов GPIO
  gpio_config_t io_conf;
  // отключаем прерывания
  io_conf.intr_type = GPIO_PIN_INTR_DISABLE;
  // срабатывание прерывания по фронту
  io_conf.intr_type = GPIO_PIN_INTR_POSEDGE;
  // выбираем GPIO21 и GPIO22
  io_conf.pin_bit_mask = GPIO_INPUT_PIN_SEL;
  // режим выбранных портов на вход
  io_conf.mode = GPIO_MODE_INPUT;
  // включение внутренней подтяжки GPIO к питанию
  // io_conf.pull_up_en = 1;
  gpio_config(&io_conf);

  // изменение выбранного GPIO на срабатывание по спаду
  // gpio_set_intr_type(GPIO_INPUT_IO_0, GPIO_INTR_NEGEDGE);

  // инициализация сервиса прерывания GPIO
  gpio_install_isr_service(ESP_INTR_FLAG_DEFAULT);
  // добавляем срабатывание прерывания для GPIO21
  gpio_isr_handler_add(GPIO_INPUT_IO_0, push_isr_handler, NULL);
  // добавляем срабатывание прерывания для GPIO22
   gpio_isr_handler_add(GPIO_INPUT_IO_1, rotare_isr_handler, NULL);
}

void timerfunc(uint32_t  timersrc) {  // выполнение кода каждую 1 секунду
  // локальные нестираемые переменные
  static int32_t push = 0;
  static int32_t rotare = 0;
  // если нажимали кнопку энкодера, то изменения на дисплей
  if(push!=valdes[0]){
    char data[30];
    os_sprintf(data,"Push: %d",valdes[0]);
    LCD_print(0,data);
  }
  // если крутили энкодер, то изменения на дисплей
  if(rotare!=valdes[1]){
    char data[30];
    os_sprintf(data,"Rotare: %d",valdes[1]);
    LCD_print(1,data);
  }



  if(timersrc%30==0){ // выполнение кода каждые 30 секунд
    
  }
  // задержка функции timerfunc()
  vTaskDelay(500 / portTICK_PERIOD_MS); 
}

void webfunc(char *pbuf) { // вывод данных на главной модуля
  // можно увидеть и на вебморде, но не динамично
  os_sprintf(HTTPBUFF,"Push: %d<br>",valdes[0]);
  os_sprintf(HTTPBUFF,"Rotare: %d<br>",valdes[1]);
}
Компиляция не проходит, выдает ошибку :

В коде не силен совсем. Помогите, очу энкодер прикрутить для управления термостатом
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 28 Май 2019 12:41 #24530

  • progit
  • progit аватар
  • Не в сети
  • Захожу иногда
  • Сообщений: 44
  • Спасибо получено: 1
  • Репутация: 1
Подскажите переменную для конструктора кода, в которой бы было событие прерывания (Например: gpioint2) на подобии той, что есть в опции Interpreter -_INTx_ .

На модуле ESP8266 (Sonoff) есть аппаратная кнопка на gpio0. Нужно в конструкторе кода отловить событие прерывания при нажатии этой кнопки.
В документации такой переменной нет, кроме этого уже пробовал по всякому. Ставил на вход, digitalRead(0) также не помогло.

Заранее благодарю.
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 28 Май 2019 20:27 #24531

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7195
  • Спасибо получено: 1114
  • Репутация: 194
в Interpreter нет такого, как и там и тут это делается по таймеру , например в 50мс
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 12 Июнь 2019 00:19 #24565

  • tolyan23
  • tolyan23 аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 84
  • Спасибо получено: 6
  • Репутация: 0
Здравствуйте. Существует возможность из конструктора кода каким-то образом принудительно отправить данные на сервер (в моем случае Majordomo)? Тоесть я настраиваю отправку на сервер раз в 5 минут но при определенном событии которое я определяю в конструкторе кода (например одна переменная стала больше другой) данные отправляются сразу
Администратор запретил публиковать записи гостям.
Модераторы: FlyRouter
Время создания страницы: 0.162 секунд

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.