controls werken, wifi ook
This commit is contained in:
parent
5c8f5c894c
commit
067f76f71f
@ -41,7 +41,10 @@ board_build.f_cpu = 80000000L
|
|||||||
board = dfrobot_beetle_esp32c3
|
board = dfrobot_beetle_esp32c3
|
||||||
platform = espressif32
|
platform = espressif32
|
||||||
framework = arduino
|
framework = arduino
|
||||||
monitor_speed = 460800
|
monitor_speed = 115200
|
||||||
|
monitor_filters =
|
||||||
|
esp32_exception_decoder
|
||||||
|
time
|
||||||
lib_deps =
|
lib_deps =
|
||||||
fastled/FastLED@^3.7.0
|
fastled/FastLED@^3.7.0
|
||||||
knolleary/PubSubClient@^2.8
|
knolleary/PubSubClient@^2.8
|
||||||
|
|||||||
@ -7,10 +7,16 @@ uint8_t controlPins[] = {
|
|||||||
PIN_KEY,
|
PIN_KEY,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uint16_t thresholds[] = {
|
||||||
|
2048,
|
||||||
|
1000,
|
||||||
|
3072,
|
||||||
|
};
|
||||||
|
|
||||||
uint16_t prevState[3];
|
uint16_t prevState[3];
|
||||||
|
|
||||||
|
uint8_t controlPinCount = sizeof(controlPins) / sizeof(controlPins[0]);
|
||||||
|
|
||||||
auto lastChange = micros();
|
auto lastChange = micros();
|
||||||
uint8_t pinChanges[128];
|
uint8_t pinChanges[128];
|
||||||
uint8_t pinChangeIndex = 0;
|
uint8_t pinChangeIndex = 0;
|
||||||
@ -39,28 +45,31 @@ void Controls_loop(void *pvParameters){
|
|||||||
lastChange = 0;
|
lastChange = 0;
|
||||||
|
|
||||||
while(true){
|
while(true){
|
||||||
for(uint8_t a=0; a<sizeof(controlPins); a++){
|
for(uint8_t a=0; a<controlPinCount; a++){
|
||||||
auto pin = controlPins[a];
|
auto pin = controlPins[a];
|
||||||
auto currentValueAnalog = analogRead(pin);
|
auto currentValueAnalog = analogRead(pin);
|
||||||
auto currentValue = currentValueAnalog > 3072;
|
auto currentValue = currentValueAnalog > thresholds[a];
|
||||||
auto prevValue = prevState[a];
|
auto prevValue = prevState[a];
|
||||||
|
|
||||||
if(CONTROLS_DEBUG){
|
if(CONTROLS_DEBUG > 200){
|
||||||
Serial.printf("Pin %d: %d->%d (%d)\n", pin, prevValue, currentValue, currentValueAnalog);
|
Serial.printf("Pin %d: %d->%d (%d)\n", pin, prevValue, currentValue, currentValueAnalog);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if(abs(currentValue - prevValue) > 100){
|
// if(abs(currentValue - prevValue) > 100){
|
||||||
if(currentValue != prevValue){
|
if(currentValue != prevValue){
|
||||||
|
if(CONTROLS_DEBUG > 100){
|
||||||
|
Serial.printf("Change on pin %d: %d -> %d (%d)\n", pin, prevValue, currentValue, currentValueAnalog);
|
||||||
|
}
|
||||||
if(pin == PIN_KEY){
|
if(pin == PIN_KEY){
|
||||||
if(currentValue){
|
if(currentValue){
|
||||||
auto duration = micros() - lastKey;
|
auto duration = micros() - lastKey;
|
||||||
if(duration > KEY_DURATION_MS * 1000){
|
if(duration > KEY_DURATION_MS * 1000){
|
||||||
if(CONTROLS_DEBUG){
|
if(CONTROLS_DEBUG > 10){
|
||||||
Serial.printf("Key: %d\n", duration);
|
Serial.printf("Key: %d\n", duration);
|
||||||
}
|
}
|
||||||
Controls_send_event({Key, (int)duration});
|
Controls_send_event({Key, (int)duration});
|
||||||
}else{
|
}else{
|
||||||
if(CONTROLS_DEBUG){
|
if(CONTROLS_DEBUG > 20){
|
||||||
Serial.println("Too short");
|
Serial.println("Too short");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -89,7 +98,7 @@ void Controls_loop(void *pvParameters){
|
|||||||
pinChanges[base + 3] == PIN_B
|
pinChanges[base + 3] == PIN_B
|
||||||
){
|
){
|
||||||
|
|
||||||
if(CONTROLS_DEBUG){
|
if(CONTROLS_DEBUG > 10){
|
||||||
Serial.println("Dir A");
|
Serial.println("Dir A");
|
||||||
}
|
}
|
||||||
Controls_send_event({Counterclockwise, NULL});
|
Controls_send_event({Counterclockwise, NULL});
|
||||||
@ -100,13 +109,14 @@ void Controls_loop(void *pvParameters){
|
|||||||
pinChanges[base + 3] == PIN_A
|
pinChanges[base + 3] == PIN_A
|
||||||
){
|
){
|
||||||
|
|
||||||
if(CONTROLS_DEBUG){
|
if(CONTROLS_DEBUG > 10){
|
||||||
Serial.println("Dir B");
|
Serial.println("Dir B");
|
||||||
}
|
}
|
||||||
Controls_send_event({Clockwise, NULL});
|
Controls_send_event({Clockwise, NULL});
|
||||||
}else{
|
}else{
|
||||||
if(CONTROLS_DEBUG){
|
if(CONTROLS_DEBUG > 20){
|
||||||
Serial.println("Unknown direction");
|
Serial.println("Unknown direction");
|
||||||
|
Serial.printf("[%d, %d, %d, %d]\n", pinChanges[base + 0], pinChanges[base + 1], pinChanges[base + 2], pinChanges[base + 3]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -116,14 +126,14 @@ void Controls_loop(void *pvParameters){
|
|||||||
if(lastChange){
|
if(lastChange){
|
||||||
if(micros() - lastChange > 100 * 1000){
|
if(micros() - lastChange > 100 * 1000){
|
||||||
|
|
||||||
if(CONTROLS_DEBUG){
|
if(CONTROLS_DEBUG > 100){
|
||||||
Serial.println("changes expired");
|
Serial.println("changes expired");
|
||||||
}
|
}
|
||||||
Controls_direction_reset();
|
Controls_direction_reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
vTaskDelay(1/portTICK_PERIOD_MS);
|
vTaskDelay(2/portTICK_PERIOD_MS);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
|
||||||
#define PIN_A 2
|
#define PIN_A 1
|
||||||
#define PIN_B 1
|
#define PIN_B 0
|
||||||
#define PIN_KEY 0
|
#define PIN_KEY 2
|
||||||
|
|
||||||
#define KEY_DURATION_MS 150
|
#define KEY_DURATION_MS 150
|
||||||
|
|
||||||
#define CONTROLS_DEBUG false
|
#define CONTROLS_DEBUG 1
|
||||||
|
|
||||||
|
|
||||||
enum ControlEventType {
|
enum ControlEventType {
|
||||||
|
|||||||
@ -8,6 +8,12 @@ CRGB colorTable[] = {
|
|||||||
// CRGB(255, 100, 32),
|
// CRGB(255, 100, 32),
|
||||||
// CRGB(255, 128, 32),
|
// CRGB(255, 128, 32),
|
||||||
CRGB::White,
|
CRGB::White,
|
||||||
|
CRGB::Red,
|
||||||
|
CRGB::Green,
|
||||||
|
CRGB::Blue,
|
||||||
|
CRGB::Yellow,
|
||||||
|
CRGB::Turquoise,
|
||||||
|
CRGB::Purple,
|
||||||
CRGB(255, 142, 32), // "warm wit"
|
CRGB(255, 142, 32), // "warm wit"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -127,6 +127,8 @@ void Led_setup(){
|
|||||||
FastLED.addLeds<WS2812B, PIN_STRIP2, BRG>(strip2, NUM_LEDS).setRgbw(RgbwDefault());
|
FastLED.addLeds<WS2812B, PIN_STRIP2, BRG>(strip2, NUM_LEDS).setRgbw(RgbwDefault());
|
||||||
strip1[0] = CRGB::Black;
|
strip1[0] = CRGB::Black;
|
||||||
strip2[0] = CRGB::Black;
|
strip2[0] = CRGB::Black;
|
||||||
|
|
||||||
|
FastLED.show();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LED_NEOPIXEL_BUS
|
#ifdef LED_NEOPIXEL_BUS
|
||||||
|
|||||||
@ -30,8 +30,11 @@ void Wifi_loop(void* params){
|
|||||||
{
|
{
|
||||||
while (WiFi.status() != WL_CONNECTED)
|
while (WiFi.status() != WL_CONNECTED)
|
||||||
{
|
{
|
||||||
vTaskDelay(500 / portTICK_PERIOD_MS);
|
|
||||||
Serial.println("Wifi waiting...");
|
Serial.println("Wifi waiting...");
|
||||||
|
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||||
|
if(WiFi.status() != WL_CONNECTED){
|
||||||
|
WiFi.reconnect();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Serial.println("");
|
Serial.println("");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user