Страница 9 из 51

Тестирование версии 9.0.

Добавлено: 26 апр 2024, 21:48
lufthaus
Здравствуйте, при попытки подключения Raspberry Pi Pico W через встроенный модуль, WIFI не работает ни режиме точки доступа, ни в режиме клиента (пробовал и с вытащенным блоком о состоянии сети), при этом прошивка загружается, но плата зависает и определяется как неизвестное устройство , помогает только перезагрузка с нажатой кнопкой boot, после этого можно заново загружать прошивки.
Так же пробовал вывести в комп-порт температуру с встроенного датичка, он же на одном из 4-х аналоговых входов находится, со всех четырех входов выводятся нули. При загрузке примера из интернета температура в комп порт выводится. На плате предусмотрен Bluetooth, но пока не реализован в программе.
Спасибо за развитие программы и что добавляете поддержку новых плат.

Тестирование версии 9.0.

Добавлено: 27 апр 2024, 09:30
ecoins
lufthaus писал(а): 26 апр 2024, 21:48 Здравствуйте, при попытки подключения Raspberry Pi Pico W через встроенный модуль,
Дополнительно можно посмотреть здесь
viewtopic.php?f=247&t=8171

Тестирование версии 9.0.

Добавлено: 27 апр 2024, 14:39
lufthaus
ecoins писал(а): 27 апр 2024, 09:30
lufthaus писал(а): 26 апр 2024, 21:48 Здравствуйте, при попытки подключения Raspberry Pi Pico W через встроенный модуль,
Дополнительно можно посмотреть здесь
viewtopic.php?f=247&t=8171
Разобравшись более детально, оказалось, что я заказ под видом Raspberry Pi Pico W плату с другим wifi модулем на esp8285, а на оригинальной плате установлен модуль CYW43439, от это видимо и все проблемы.

Тестирование версии 9.0.

Добавлено: 29 апр 2024, 06:08
Ardudue
Нет блоков EEPROM?.... сохранить, читать из EEPROM.

Тестирование версии 9.0.

Добавлено: 29 апр 2024, 08:36
Ander
Ardudue писал(а): 29 апр 2024, 06:08 Нет блоков EEPROM?.... сохранить, читать из EEPROM.
Сохранение теперь внутри самих переменных.

Тестирование версии 9.0.

Добавлено: 29 апр 2024, 10:18
Ardudue
Ander писал(а): 29 апр 2024, 08:36 Сохранение теперь внутри самих переменных.
а читать как?

Тестирование версии 9.0.

Добавлено: 29 апр 2024, 10:27
Phazz
[ref]Ardudue[/ref], как обычную переменную

Тестирование версии 9.0.

Добавлено: 29 апр 2024, 12:20
Ardudue

Тестирование версии 9.0.

Добавлено: 29 апр 2024, 13:29
ecoins
Ardudue писал(а): 29 апр 2024, 12:20 возможно ли для ESP32 реализовать настройки диапазона аналогового входа?
Можете уточнить вопрос, более подробно?
С уважением, ecoins.

Тестирование версии 9.0.

Добавлено: 29 апр 2024, 13:56
Ardudue
ecoins писал(а): 29 апр 2024, 13:29 Можете уточнить вопрос, более подробно?
я же сслылку дал на тему...
AstroGraf писал(а): 28 мар 2024, 15:35 Требуется измерять аналоговый сигнал в диапазоне 0.5 - 1.2В, причем от 2-х источников одновременно. Выбрал контроллер ESP32, у него много аналоговых 12-битных входов в диапазоне 0-3.3В. В процессе изучения обнаружил что имеется возможность менять измеряемый диапазон:
Если посмотреть техническую документацию на ESP32, то в ней указано, что при напряжении VDD_A = 3.3V:

0dB ослабление (ADC_ATTEN_DB_0) дает диапазон до 1.1V.
2.5dB ослабление (ADC_ATTEN_DB_2_5) дает диапазон до 1.5V.
6dB ослабление (ADC_ATTEN_DB_6) дает диапазон до 2.2V.
11dB ослабление (ADC_ATTEN_DB_11) дает диапазон до 3.9V.
По факту, если при ADC_ATTEN_DB_11 замерять напряжение, то уже при величине порядка 2.6 V на 12-ти битах АЦП начинает выдавать предельные 4095.

Из-за характеристики АЦП наиболее точные результаты измерений получаются в более узком диапазоне, чем заявлено в документации. На начальном и конечном участке более или менее линейная характеристика АЦП изгибается и становится более пологой, поэтому измерения очень неточные. В документации указаны рекомендуемые диапазоны измерений:

0dB ослабление(ADC_ATTEN_DB_0) — от 100 до 950mV.
2.5dB ослабление (ADC_ATTEN_DB_2_5) от 100 до 1250mV.
6dB ослабление (ADC_ATTEN_DB_6) от 150 до 1750mV.
11dB ослабление (ADC_ATTEN_DB_11) от 150 до 2450mV.
В документации есть примечание, что при ослаблении в 11dB максимальное напряжение ограничено VDD_A, а не указанным ранее 3.9 V.
Имеется ли в FlProg возможность менять эти настройки?

Тестирование версии 9.0.

Добавлено: 29 апр 2024, 14:46
Phazz
А зачем это? Точность АЦП у есп32 и так не очень. А тут вообще будет никакая. Расширение диапазона решается двумя резисторами

Тестирование версии 9.0.

Добавлено: 29 апр 2024, 15:04
ecoins
Ardudue писал(а): 29 апр 2024, 13:56 Имеется ли в FlProg возможность менять эти настройки?
Пока нет.
Технически возможно.
Можно реализовать через пользовательский блок.
Неплохая альтернатива (там где это приемлемо) ADS1115 - 16 разрядов.

Тестирование версии 9.0.

Добавлено: 29 апр 2024, 15:11
slsl
А когда ждать очередной подправленной бэтты?

Тестирование версии 9.0.

Добавлено: 29 апр 2024, 18:41
NordKavkaz
Вот бы 32х разрядную версию...

Тестирование версии 9.0.

Добавлено: 30 апр 2024, 11:43
georgsp
NordKavkaz писал(а): 29 апр 2024, 18:41 Вот бы 32х разрядную версию...
Нафига? :shok:

Тестирование версии 9.0.

Добавлено: 30 апр 2024, 20:32
Serhio44
А можно вернуть вход фазового сдвига в стандартном блоке микросхемы расширения PCA9685?
в версии 7.3.8. такое присутствует. В последующих версиях уже нет. А есть необходимость...

точнее на AVR работает, а на ESP нет

Тестирование версии 9.0.

Добавлено: 01 май 2024, 03:41
asvhmao
Ander писал(а): 29 апр 2024, 08:36 Сохранение теперь внутри самих переменных.
Phazz писал(а): 29 апр 2024, 10:27 [ref]Ardudue[/ref], как обычную переменную
В моём случае, просто вывод my_var соденить с переменной *EEPROM_Set* (записываем), а второй значёк переменной *EEPROM_Set* соединить с выводом Set (читаем) и всё?
А то пробовал переменную памяти EEPROM_Set (один значёк с разрешением записи, второй простой) соединять с переменными входа Set и выхода var, компилятор ардуины мне фигу показал.
3fqo5zz9go.jpg

Тестирование версии 9.0.

Добавлено: 01 май 2024, 17:10
asvhmao
Нипанятна.
Если просто делаю переменную, всё работает (соответственно пока питание есть). Когда ставлю галочку "сохранить в EEPROM", из кода эта переменная удаляется.
Сейчас снова скачиваю и обновлю программу, может с ней что нетак.
Хотя странно, на резисторе работало, на энкодере не хотит.

[spoiler]

#include "flprogUtilites.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "STM32encoder.h"
LiquidCrystal_I2C _lcd1(0x27, 16, 2);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;

bool en_enc;
int16_t Set;
bool en_Set;
int16_t Reset;
bool en_Reset;
int16_t pos_enc;
int16_t my_var;
bool Short_press;
bool Long_press;
STM32encoder enc(TIM2);
int16_t myVar= 0;
bool _gtv1;
bool _gtv2;
int16_t _gtv4 = 0;
int16_t _disp2oldLength = 0;
int16_t _disp1oldLength = 0;


void setup()
{


Wire.begin();
delay(10);
_lcd1.init();
_lcd1.backlight();
enc.bind(&myVar, 1, -20, 100);
enc.setButton(PA2);


}
void loop()
{


if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}





//Плата:1
en_enc = !(0);
Set = _gtv4;
en_Set = _gtv1;
Reset = 0;
en_Reset = 0;

if(en_enc) {
Short_press = 0;
Long_press = 0;

switch(enc.button()){
case BTN_EVT_CLICK:
Short_press = 1;
break;
case BTN_EVT_LONG:
Long_press = 1;
break;
}

if (en_Set) {
myVar = Set;
my_var = myVar;
}

if (en_Reset) {
myVar = Reset;
my_var = myVar;
}



if (enc.isUpdated())
{
pos_enc = enc.pos();
my_var = myVar;
}
}




_gtv2 = Long_press;
_gtv1 = Short_press;
if (_gtv2) {
_gtv4 = my_var;
}
if (!(0)) {
_dispTempLength1 = (((String(my_var, DEC)))).length();
if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print(((String(my_var, DEC))));
} else {
if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
if (!(0)) {
_dispTempLength1 = (((String(_gtv4, DEC)))).length();
if (_disp2oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(0, 1);
_lcd1.print(((String(_gtv4, DEC))));
} else {
if (_disp2oldLength > 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}

}


[/spoiler]

[spoiler]#include "flprogUtilites.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "STM32encoder.h"
LiquidCrystal_I2C _lcd1(0x27, 16, 2);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
bool en_enc;
int16_t Set;
bool en_Set;
int16_t Reset;
bool en_Reset;
int16_t pos_enc;
int16_t my_var;
bool Short_press;
bool Long_press;
STM32encoder enc(TIM2);
int16_t myVar= 0;
bool _gtv1;
bool _gtv2;
int16_t _disp2oldLength = 0;
int16_t _disp1oldLength = 0;
void setup()
{
Wire.begin();
delay(10);
_lcd1.init();
_lcd1.backlight();
enc.bind(&myVar, 1, -20, 100);
enc.setButton(PA2);
}
void loop()
{
if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}
//Плата:1
en_enc = !(0);
Set = ;
en_Set = _gtv1;
Reset = 0;
en_Reset = 0;
if(en_enc) {
Short_press = 0;
Long_press = 0;

switch(enc.button()){
case BTN_EVT_CLICK:
Short_press = 1;
break;
case BTN_EVT_LONG:
Long_press = 1;
break;
}
if (en_Set) {
myVar = Set;
my_var = myVar;
}
if (en_Reset) {
myVar = Reset;
my_var = myVar;
}
if (enc.isUpdated())
{
pos_enc = enc.pos();
my_var = myVar;
}
}
_gtv2 = Long_press;
_gtv1 = Short_press;
if (_gtv2) {
}
if (!(0)) {
_dispTempLength1 = (((String(my_var, DEC)))).length();
if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print(((String(my_var, DEC))));
} else {
if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
if (!(0)) {
_dispTempLength1 = (((String(, DEC)))).length();
if (_disp2oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(0, 1);
_lcd1.print(((String(, DEC))));
} else {
if (_disp2oldLength > 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}


}
[/spoiler]
Энкодер_001.flp
====================================================================================================

Скачал 9 программу, открыл прежний файл, снова фиг-вам (индейская народная изба).
Открыл проект с резистором, который исправный, собрал в нём, всё прекрасно заработало.
Собрал проект с ноля, тоже всё замечательно.
Делаю вывод - если что-то не так, то желательно проект собирать с чистого листа. Периодически нажимая "глазик", контролируя этим код.

[spoiler]#include "flprogUtilites.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "STM32encoder.h"
#include "flprogInternalEEPROM.h"
FLProgInternalEEPROM InternalEEPROM_41185707(3, 230);
LiquidCrystal_I2C _lcd1(0x27, 16, 2);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
bool en_enc;
int16_t Set;
bool en_Set;
int16_t Reset;
bool en_Reset;
int16_t pos_enc;
int16_t my_var;
bool Short_press;
bool Long_press;
STM32encoder enc(TIM2);
int16_t myVar= 0;
bool _gtv2;
int16_t _disp1oldLength = 0;
int16_t _disp2oldLength = 0;
void setup()
{
Wire.begin();
delay(10);
InternalEEPROM_41185707.setIntegerStartValue(1, 0);
InternalEEPROM_41185707.setSkippingEvents(0);
InternalEEPROM_41185707.begin();
_lcd1.init();
_lcd1.backlight();
enc.bind(&myVar, 1, -20, 100);
enc.setButton(PA2);
}
void loop()
{
InternalEEPROM_41185707.pool();
if (_isNeedClearDisp1)
{
_lcd1.clear();
_isNeedClearDisp1= 0;
}
//Плата:1
if (!(0))
{
_dispTempLength1 = (((String(((InternalEEPROM_41185707.readInteger(1))), DEC)))).length();
if (_disp2oldLength > _dispTempLength1)
{
_isNeedClearDisp1 = 1;
}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(0, 1);
_lcd1.print(((String(((InternalEEPROM_41185707.readInteger(1))), DEC))));
}
else
{
if (_disp2oldLength > 0)
{
_isNeedClearDisp1 = 1;
_disp2oldLength = 0;
}
}
en_enc = !(0);
Set = ((InternalEEPROM_41185707.readInteger(1)));
en_Set = _gtv2;
Reset = 0;
en_Reset = 0;
if(en_enc)
{
Short_press = 0;
Long_press = 0;
switch(enc.button())
{
case BTN_EVT_CLICK:
Short_press = 1;
break;
case BTN_EVT_LONG:
Long_press = 1;
break;
}
if (en_Set)
{
myVar = Set;
my_var = myVar;
}
if (en_Reset)
{
myVar = Reset;
my_var = myVar;
}
if (enc.isUpdated())
{
pos_enc = enc.pos();
my_var = myVar;
}
}
_gtv2 = Short_press;
if (Long_press)
{
InternalEEPROM_41185707.saveInteger(1, ((my_var)));
}
if (!(0))
{
_dispTempLength1 = (((String(my_var, DEC)))).length();
if (_disp1oldLength > _dispTempLength1)
{
_isNeedClearDisp1 = 1;
}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print(((String(my_var, DEC))));
}
else
{
if (_disp1oldLength > 0)
{
_isNeedClearDisp1 = 1;
_disp1oldLength = 0;
}
}
}[/spoiler]
Энкодер_004.flp
Добавлю. ecoins прав, проект был создан в 9 версии, потом по игрался в 8 версии и продолжил снова в 9 версии. При создании проектов это надо учитывать.

Тестирование версии 9.0.

Добавлено: 02 май 2024, 03:30
ecoins
asvhmao писал(а): 01 май 2024, 17:10 Делаю вывод - если что-то не так, то желательно проект собирать с чистого листа. Периодически нажимая "глазик", контролируя этим код.
Наблюдение точное, так и есть.
Разработчик вроде бы добавил возможность использования старых проектов - но это пока только тестируется.

Тестирование версии 9.0.

Добавлено: 02 май 2024, 09:38
Mazur
а как подключится к своей странице
пишит не получается получить доступ к странице
8266.flp