Извините, но по-моему, это вы путаете, В analogRead(0) идет обращение к А0.А что это за ересь?
Вы устанавливаете цифровой gpio0 на выход и в то же время пытаетесь туда что-то вывести и прочитать как аналоговый вход?
Извините, но по-моему, это вы путаете, В analogRead(0) идет обращение к А0.А что это за ересь?
Вы устанавливаете цифровой gpio0 на выход и в то же время пытаетесь туда что-то вывести и прочитать как аналоговый вход?
Если у вас нет вопросов, то не надо было открывать тему. Уж извините. А если спрашиваете, то давайте уж все данные, и схему, и код.Вопросов по подключению потенциометра к esp у меня нет. На крайние ноги 3,3 В, со средней на А0. На плате присутствует делитель напряжения, если вы к этому.
Да, по названию точки доступа можно догадаться) Напольный газовый котел. Работало и на обычной серве, но сгорела внутри платка управления, когда повысил напряжение в попытке избавиться от дребезга. Решил переделать, использовал оставшиеся запчасти (шестерни, потенциометр), и микромотор-редуктор вместо движка, чтобы повысить момент.Судя по константам, вы собрались управлять котлом? Тогда никаких нерешённых моментов быть не должно в принципе.
вызов analogRead(0) аналогичен analogRead(A0), так что здесь ошибки нет.А что это за ересь?
Вы устанавливаете цифровой gpio0 на выход и в то же время пытаетесь туда что-то вывести и прочитать как аналоговый вход?
Если у вас нет вопросов, то не надо было открывать тему. Уж извините. А если спрашиваете, то давайте уж все данные, и схему, и код.
У меня вопрос так и не снят. Как и куда подключен потенциометр я не знаю, а гадать не обучен. Может коллеги умеют гадать?
Я не злюсь, просто надо все данные предоставлять.Посмотреть вложение 11764
Есть другие варианты подключения? Мне кажется, верна ваша версия, что дело в библиотеке. Вы не злитесь, пожалуйста, но я не спросил помочь разобраться с нуля, а спрашивал может кто УЖЕ сталкивался с чем-то подобным. Поэтому подробных данных и не привел. А на библиотеку и не подумал, потому что пользовался ею, и вроде проблем не было. Большое спасибо за помощь
С NodeMCU v2 картинку не нашел, у нее прямо рядом со входом 2 резистора, читал диапазон у голой esp до 1В. У меня все корректно работает.Я не злюсь, просто надо все данные предоставлять.
А где тут делитель? У аналогового входа есть вполне конкретный диапазон рабочих напряжений, точно не помню, но от 0 до 1,5В кажется. У вас будет от 0 до 3,3В - и что вы получите?
С библиотекой тоже не всё так просто, не должно изменение значений в loop влиять на режим точки доступа никак. Хотя может спецы по RemoteXY подскажут что там наверчено.
Т.е. от сигнала на входе не зависит, а зависит от кода в их библиотеке. Вот мне как то стрёмно было бы доверять им котёл. Мониторинг то ладно, но управление... Но дело ваше.Сходил на форум RemoteXY. Там пишут, что проблема для esp известная и нужно снижать частоту опроса аналогового входа. Типа реализация точки доступа программная и как-то конфликтует с опросом аналога. Буду пробовать.
Нет. Там это обсуждается не в привязке к их библиотеке, это касается реализации точки доступа в самой esp8266Т.е. от сигнала на входе не зависит, а зависит от кода в их библиотеке. Вот мне как то стрёмно было бы доверять им котёл. Мониторинг то ладно, но управление... Но дело ваше.
Зачем вам опрашивать аналоговый вход в режиме точки доступа? Это вспомогательный режим, как я понимаю. Если этот опрос реализован в той библиотеке и вы не можете его отключить, то как раз она и при чёмНет. Там это обсуждается не в привязке к их библиотеке, это касается реализации точки доступа в самой esp8266
В итоговом изделии RemoteXY не будет. Оно так, на этапе тестирования погонять напрямую механизм, что-то отладить. Ардуино не пользовался, в своих домашних проектах сразу начал использовать Esp. Вот вроде порог вхождения невысокий, но постоянно наступаешь на какие-то грабли, что действительно сильно снижает доверие к надежности конечного изделия.Зачем вам опрашивать аналоговый вход в режиме точки доступа? Это вспомогательный режим, как я понимаю. Если этот опрос реализован в той библиотеке и вы не можете его отключить, то как раз она и при чём
Загрубив считывания данных с аналогового входа вы получите меньшее число отсчётов положения потенциометра.
Вы строку раскомментировали? У меня вообще ничего в Wifi окружении не появляется.Залил ваш код в свою NodeMCU, на А0 подал 3,3В, точку доступа Kotel2 вижу, подключение проходит, но ip не получает.
Попробуйте так. У меня всё появилось и подключилось, только на страницу 192.168.4.1 не заходит, но может и не должноВ итоговом изделии RemoteXY не будет. Оно так, на этапе тестирования погонять напрямую механизм, что-то отладить. Ардуино не пользовался, в своих домашних проектах сразу начал использовать Esp. Вот вроде порог вхождения невысокий, но постоянно наступаешь на какие-то грабли, что действительно сильно снижает доверие к надежности конечного изделия.
Вы строку раскомментировали? У меня вообще ничего в Wifi окружении не появляется.
#define REMOTEXY_MODE__ESP8266WIFI_LIB_POINT
#include <ESP8266WiFi.h>
#include <RemoteXY.h>
int Servo_Set, pol;
static esp8266::polledTimeout::periodicMs checkSensor( 500 );
extern "C" {
#include "user_interface.h";
}
#define REMOTEXY_WIFI_SSID "Kotel2"
#define REMOTEXY_WIFI_PASSWORD "12345678"
#define REMOTEXY_SERVER_PORT 6377
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] = {255, 2, 0, 0, 0, 12, 0, 13, 13, 1, 7, 53, 21, 21, 20, 5, 2, 26, 2};
struct {
int16_t edit_1;
unsigned char connect_flag;
} RemoteXY;
#pragma pack(pop)
void setup() {
Serial.begin(115200);
RemoteXY_Init ();
pinMode(0, OUTPUT);
digitalWrite(0, 0);
}
void loop() {
RemoteXY_Handler ();
Servo_Set = (RemoteXY.edit_1);
if ( checkSensor ) {
pol = map(analogRead(0), 0, 1023, -20, 187);
Serial.println(pol);
}
if ((Servo_Set - pol) > 0) {
analogWrite(5, 1023);
digitalWrite(0, 0);
} else if ((Servo_Set - pol) < 0) {
analogWrite(5, 1023);
digitalWrite(0, 1);
} else {
analogWrite(5, 0);
digitalWrite(0, 0);
}
}
bool _isTimer(unsigned long startTime, unsigned long period )
{
return millis() - startTime >= period;
}
ДаВы строку раскомментировали?
RemoteXY - это приложение для телефона, веб интерфейс не предусмотрен. У меня заработало через millis. На 20 еще работало, а на 10 точку доступа видно, но сбоит при получении IP адреса. В вашем варианте выдало ошибкуПопробуйте так. У меня всё появилось и подключилось, только на страницу 192.168.4.1 не заходит, но может и не должно
6:6:8: error: 'polledTimeout' in namespace 'esp8266' does not name a type
D:\Arduino\Скетчи\Котел\6\6.ino: In function 'void loop()':
6:32:6: error: 'checkSensor' was not declared in this scope
exit status 1
'polledTimeout' in namespace 'esp8266' does not name a type
#define REMOTEXY_MODE__ESP8266WIFI_LIB_POINT
#include <ESP8266WiFi.h>
#include <RemoteXY.h>
int Servo_Set, pol;
unsigned long myTimer1;
extern "C" {
#include "user_interface.h";
}
#define REMOTEXY_WIFI_SSID "Kotel2"
#define REMOTEXY_WIFI_PASSWORD "12345678"
#define REMOTEXY_SERVER_PORT 6377
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] = {255, 2, 0, 0, 0, 12, 0, 13, 13, 1, 7, 53, 21, 21, 20, 5, 2, 26, 2};
struct {
int16_t edit_1;
unsigned char connect_flag;
} RemoteXY;
#pragma pack(pop)
void setup() {
Serial.begin(115200);
RemoteXY_Init ();
pinMode(0, OUTPUT);
digitalWrite(0, 0);
myTimer1 = millis();
}
void loop() {
RemoteXY_Handler ();
Servo_Set = (RemoteXY.edit_1);
if (millis() - myTimer1 >= 20) {
myTimer1 = millis();
pol = map(analogRead(0), 0, 1023, -20, 187);
Serial.println(pol);
}
if ((Servo_Set - pol) > 0) {
analogWrite(5, 1023);
digitalWrite(0, 0);
} else if ((Servo_Set - pol) < 0) {
analogWrite(5, 1023);
digitalWrite(0, 1);
} else {
analogWrite(5, 0);
digitalWrite(0, 0);
}
}
bool _isTimer(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}
либо делайте на millis() - это тоже самое, но вид в профильЧто нужно сделать, чтобы ее не было?
Обновил ядро. Заработало. Думаю вопрос закрыт. Спасибо за помощь.либо делайте на millis() - это тоже самое, но вид в профиль