update mqtt

This commit is contained in:
2022-05-30 19:31:54 +02:00
parent 4f6b71a615
commit 9996ecea44
5 changed files with 183 additions and 73 deletions

View File

@@ -3,5 +3,8 @@
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}

View File

@@ -13,8 +13,6 @@ platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
erropix/ESP32 AnalogWrite@^0.2
Aasim-A/AsyncTimer

View File

@@ -5,17 +5,19 @@
uint64_t lastmillis = 0;
//_led ledarray[] = {
c_led dimFL(DIM_FL, "dim_FL");
c_led dimFR(DIM_FR, "dim_FR");
c_led dimRL(DIM_RL, "dim_RL");
c_led dimRR(DIM_RR, "dim_RR");
c_led blinkFL(BLINK_FL, "blink_FL");
c_led blinkFR(BLINK_FR, "blink_FR");
c_led interiourLed(INTERIOUR, "interiour");
c_led dimFL(DIM_FL, "dim_FL", 0);
c_led dimFR(DIM_FR, "dim_FR", 1);
c_led dimRL(DIM_RL, "dim_RL", 2);
c_led dimRR(DIM_RR, "dim_RR", 3);
c_led blinkFL(BLINK_FL, "blink_FL", 4);
c_led blinkFR(BLINK_FR, "blink_FR", 5);
c_led interiourLed(INTERIOUR, "interiour", 6);
void c_led::begin(void)
{
Serial.printf("LED %s begin", _ledName.c_str());
ledcSetup(_PWMChannel, DIM_FPWM, DIM_RESBITS);
ledcAttachPin(_pin, _PWMChannel);
pinMode(_pin, OUTPUT);
digitalWrite(_pin, false);
_ledstate = false;
@@ -55,22 +57,47 @@ void c_led::init()
//_newstate = true;
}
void c_led::update(void)
{
//Serial.printf("led %s update, state = %s, newstate = %s\n", _ledName.c_str(), ledStateToString(_state).c_str(), String(_newstate).c_str());
switch (_state)
{
case led_off:
{
digitalWrite(_pin, false);
_ledstate = false;
}
break;
case led_dim_on:
void c_led::handle_dim_on(void)
{
if (_newstate)
{
_dimmer = 0;
if (_ledstate)
{
setState(led_on);
}
else
{
_timer = millis();
_newstate = false;
}
}
uint64_t currentmillis = millis();
if (currentmillis - _timer > _dimstepms)
{
_timer = currentmillis;
ledcWrite(_PWMChannel, _dimmer);
_dimmer += _dimstep;
}
if (_dimmer > DIM_MAX)
{
setState(led_on);
_dimmer = DIM_MAX;
}
}
void c_led::handle_dim_off(void)
{
if (_newstate)
{
if (!_ledstate)
{
setState(led_off);
}
else
{
_timer = millis();
_newstate = false;
}
_timer = millis();
_newstate = false;
}
@@ -78,35 +105,107 @@ void c_led::update(void)
if (currentmillis - _timer > _dimstepms)
{
_timer = currentmillis;
analogWrite(_pin, _dimmer, DIM_RES);
_dimmer += _dimstep;
ledcWrite(_PWMChannel, _dimmer);
_dimmer -= _dimstep;
}
if (_dimmer > DIM_RES)
if (_dimmer < _dimstep)
{
setState(led_on);
setState(led_off);
_dimmer = DIM_MIN;
}
}
void c_led::handle_blink(void)
{
_newstate = false;
uint64_t currentmillis = millis();
if (currentmillis - _timer > BLINKSPEED)
{
_ledstate = !_ledstate;
if (_ledstate)
{
_dimmer = DIM_MIN;
}
else
{
_dimmer = DIM_MAX;
}
_timer = currentmillis;
//Serial.printf("led %s update, state = %s\n", _ledName.c_str(), String(_ledstate).c_str());
}
if (_ledstate)
{
if (_dimmer >= DIM_MAX)
{
_dimmer = DIM_MAX;
}
else
{
if (currentmillis - _timer2 > 5)
{
_dimmer += 64;
_timer2 = currentmillis;
}
//Serial.printf("led %s update, dimmer = %u\n", _ledName.c_str(), _dimmer);
}
}
else
{
if (_dimmer <= DIM_STEP)
{
_dimmer = DIM_MIN;
}
else
{
//Serial.printf("led %s update, dimmer = %u\n", _ledName.c_str(), _dimmer);
if (currentmillis - _timer2 > 5)
{
_dimmer -= 64;
_timer2 = currentmillis;
}
}
}
ledcWrite(_PWMChannel, _dimmer);
}
void c_led::update(void)
{
if (_newstate)
{
Serial.printf("led %s update, state = %s\n", _ledName.c_str(), ledStateToString(_state).c_str());
}
switch (_state)
{
case led_off:
{
//digitalWrite(_pin, false);
_ledstate = false;
ledcWrite(_PWMChannel, DIM_MIN);
_newstate = false;
}
break;
case led_dim_on:
{
handle_dim_on();
}
break;
case led_on:
{
digitalWrite(_pin, true);
//digitalWrite(_pin, true);
ledcWrite(_PWMChannel, DIM_MAX);
_newstate = false;
_ledstate = true;
}
break;
case led_dim_off:
{
handle_dim_off();
}
break;
case led_blink:
{
uint64_t currentmillis = millis();
if (currentmillis - _timer > BLINKSPEED)
{
//Serial.printf("%s timer expired\n", _ledName.c_str());
_ledstate = !_ledstate;
digitalWrite(_pin, _ledstate);
_timer = currentmillis;
}
handle_blink();
}
break;
default:
@@ -122,16 +221,16 @@ void c_led::toggle(void)
{
case led_on:
setState(led_off);
setState(led_dim_off);
break;
case led_dim_on:
setState(led_off);
setState(led_dim_off);
break;
case led_off:
setState(led_on);
setState(led_dim_on);
break;
case led_dim_off:
setState(led_on);
setState(led_dim_on);
break;
case led_blink:
setState(noChange);
@@ -155,10 +254,10 @@ void initLeds(void)
analogWriteResolution(10);
dimFL.setState(led_on);
dimFR.setState(led_on);
dimRL.setState(led_on);
dimRR.setState(led_on);
dimFL.setState(led_dim_on);
dimFR.setState(led_dim_on);
dimRL.setState(led_dim_on);
dimRR.setState(led_dim_on);
blinkFR.setState(led_blink);
blinkFL.setState(led_blink);
interiourLed.setState(led_on);
@@ -202,43 +301,43 @@ void setLedPattern(e_ledpattern setpattern)
{
case allOff:
{
setLeds(led_off, led_off, led_off, led_off, led_off, led_off, led_off);
setLeds(led_dim_off, led_dim_off, led_dim_off, led_dim_off, led_dim_off, led_dim_off, led_dim_off);
}
break;
case allOn:
{
setLeds(led_on, led_on, led_on, led_on, led_on, led_on, led_on);
setLeds(led_dim_on, led_dim_on, led_dim_on, led_dim_on, led_dim_on, led_dim_on, led_dim_on);
}
break;
case panic:
{
//setLeds(noChange, noChange, noChange, noChange, led_off, led_off, noChange);
setLeds(noChange, noChange, noChange, noChange, led_blink, led_blink, noChange);
setLeds(noChange, noChange, led_blink, led_blink, led_blink, led_blink, noChange);
}
break;
case night:
{
setLeds(led_on, led_on, led_on, led_on, noChange, noChange, led_on);
setLeds(led_dim_on, led_dim_on, led_dim_on, led_dim_on, noChange, noChange, led_dim_on);
}
break;
case turnLeft:
{
setLeds(noChange, noChange, noChange, noChange, led_off, led_blink, noChange);
setLeds(noChange, noChange, noChange, led_blink, led_off, led_blink, noChange);
}
break;
case turnRight:
{
setLeds(noChange, noChange, noChange, noChange, led_blink, led_off, noChange);
setLeds(noChange, noChange, led_blink, noChange, led_blink, led_off, noChange);
}
break;
case interiourOn:
{
setLeds(noChange, noChange, noChange, noChange, noChange, noChange, led_on);
setLeds(noChange, noChange, noChange, noChange, noChange, noChange, led_dim_on);
}
break;
case interiourOff:
{
setLeds(noChange, noChange, noChange, noChange, noChange, noChange, led_off);
setLeds(noChange, noChange, noChange, noChange, noChange, noChange, led_dim_off);
}
break;
default:

View File

@@ -12,8 +12,12 @@
#define INTERIOUR 5 //
#define NUM_LEDS 7
#define DIM_TIME 1000
#define DIM_RES 1024
#define DIM_TIME 3000
#define DIM_RESBITS 10
#define DIM_FPWM 5000
#define DIM_RES (int)(pow(2, DIM_RESBITS) - 1)
#define DIM_MIN 0
#define DIM_MAX (DIM_RES - 1)
#define DIM_STEP 255
#define DIM_STEPMS (DIM_TIME / DIM_STEP)
@@ -59,6 +63,7 @@ class c_led
const uint8_t _pin;
e_ledstate _state;
uint64_t _timer;
uint64_t _timer2;
uint32_t _dimmer;
bool _newstate;
bool _ledstate;
@@ -66,12 +71,17 @@ class c_led
uint32_t _dimstep;
String _ledName;
const int _PWMChannel;
void init();
public:
c_led(uint8_t pin, String name) : _pin(pin)
{
void handle_dim_on( void );
void handle_dim_off(void );
void handle_blink( void );
public:
c_led(uint8_t pin, String name, int PWMChannel) : _pin(pin), _PWMChannel(PWMChannel)
{
_ledName = name;
init();
}

View File

@@ -7,7 +7,7 @@
// Update these with values suitable for your network.
byte mac[] = {0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED};
IPAddress MQTTserver(192, 168, 2, 5);
IPAddress MQTTserver(192, 168, 2, 3);
const char *SSID = "poes";
const char *PWD = "Rijnstraat214";