diff --git a/dvizh.cpp b/dvizh.cpp index 62bca60..1ac9f15 100644 --- a/dvizh.cpp +++ b/dvizh.cpp @@ -39,7 +39,7 @@ void setup_dvizh() { initSvet(); - xTaskCreate(TaskInterruptsReceiver, "taskInterruptsReceiver", 4096, NULL, ESP_TASKD_EVENT_PRIO - 1, &taskInterruptsReceiverHandle); + xTaskCreate(TaskInterruptsReceiver, "taskInterruptsReceiver", 4096, NULL, ESP_TASKD_EVENT_PRIO - 3, &taskInterruptsReceiverHandle); attachInterrupt(DVIZH_VERH_PIN, dvizhHandler, DVIZH_TRIGGER); attachInterrupt(DVIZH_NIZ_PIN, dvizhHandler, DVIZH_TRIGGER); } diff --git a/main.go.h b/main.go.h index 9bf49f7..3f76374 100644 --- a/main.go.h +++ b/main.go.h @@ -6,15 +6,16 @@ void PlavnoVyklyuchit(); bool Vklyucheno(); void Vklyuchit(); void Vyklyuchit(); -void Yarkost(int i); +void initLED(); +void Yarkost(unsigned long i); void Enable(); void Disable(); void TaskSveta(); void PropustitRaz(); -const int MAX_YARKOST = 25; const int MIN_YARKOST = 15; const int VREMYA_VKL = 2000; const unsigned long VREMYA_SVETA = 10000; const int VREMYA_VYKL = 10000; const int DIFF_YARKOST = MAX_YARKOST-MIN_YARKOST; TickType_t loopBlockTime = pdMS_TO_TICKS(1000); TickType_t vyklYarkBlockTime = pdMS_TO_TICKS(VREMYA_VYKL/DIFF_YARKOST); int yarkost; unsigned long kogdaVyklyuchit; void initSvet() { - yarkost=MIN_YARKOST; kogdaVyklyuchit=0; Vyklyuchit(); +const unsigned long MAX_YARKOST = 1000; const unsigned long MIN_YARKOST = 500; const int VREMYA_VKL = 2000; const unsigned long VREMYA_SVETA = 10000; const int VREMYA_VYKL = 10000; const byte LEDC_CHANNEL_0 = 0; const int LEDC_RESOLUTION_BITS = 12; const unsigned long MAX_CHANNEL_VALUE = 0xfff-1; const int LEDC_BASE_FREQ = 5000; const int DIFF_YARKOST = int(MAX_YARKOST-MIN_YARKOST); TickType_t loopBlockTime = pdMS_TO_TICKS(1000); TickType_t vyklYarkBlockTime = pdMS_TO_TICKS(VREMYA_VYKL/DIFF_YARKOST); unsigned long yarkost; unsigned long kogdaVyklyuchit; void initSvet() { + yarkost=MIN_YARKOST; kogdaVyklyuchit=0; initLED(); Vyklyuchit(); } void DvizhEst() { kogdaVyklyuchit=millis()+VREMYA_SVETA; if (DEBUG) { Serial.println("Vkl svet"); } PlavnoVklyuchit(); @@ -37,8 +38,11 @@ void Vklyuchit() { void Vyklyuchit() { Yarkost(MIN_YARKOST); Disable(); } -void Yarkost(int i) { - analogWrite(SVET_YARK_PIN,255-i); +void initLED() { + ledcSetup(LEDC_CHANNEL_0,LEDC_BASE_FREQ,LEDC_RESOLUTION_BITS); ledcAttachPin(SVET_YARK_PIN,LEDC_CHANNEL_0); +} +void Yarkost(unsigned long i) { + ledcWrite(LEDC_CHANNEL_0,MAX_CHANNEL_VALUE-i); } void Enable() { digitalWrite(SVET_ONOFF_PIN,1); diff --git a/pkg/app/main.go b/pkg/app/main.go index 3e70bbc..b23b6ca 100644 --- a/pkg/app/main.go +++ b/pkg/app/main.go @@ -8,30 +8,32 @@ import ( "my/go-controller/timer" ) -// 150 - примерно то же, что и 255 (должно быть те 1.25В где-то там же) -// 100 - средненько -// 50 - приглушённо - -const MAX_YARKOST int = 25 -const MIN_YARKOST int = 15 +const MAX_YARKOST uint32 = 1000 +const MIN_YARKOST uint32 = 500 const VREMYA_VKL int = 2000 const VREMYA_SVETA uint32 = 10000 const VREMYA_VYKL int = 10000 -const DIFF_YARKOST int = MAX_YARKOST - MIN_YARKOST +const LEDC_CHANNEL_0 byte = 0 +const LEDC_RESOLUTION_BITS int = 12 +const MAX_CHANNEL_VALUE uint32 = 0xfff - 1 +const LEDC_BASE_FREQ int = 5000 + +const DIFF_YARKOST int = int(MAX_YARKOST - MIN_YARKOST) var loopBlockTime task.TickType = task.MS_TO_TICKS(1000) var vyklYarkBlockTime task.TickType = task.MS_TO_TICKS(VREMYA_VYKL / DIFF_YARKOST) -var yarkost int +var yarkost uint32 var kogdaVyklyuchit uint32 func initSvet() { yarkost = MIN_YARKOST kogdaVyklyuchit = 0 + initLED() Vyklyuchit() } @@ -99,9 +101,14 @@ func Vyklyuchit() { Disable() } -func Yarkost(i int) { +func initLED() { + analog.LEDcSetup(LEDC_CHANNEL_0, LEDC_BASE_FREQ, LEDC_RESOLUTION_BITS) + analog.LEDcAttachPin(SVET_YARK_PIN, LEDC_CHANNEL_0) +} +func Yarkost(i uint32) { // логика яркости инвертирована - analog.Write(SVET_YARK_PIN, 255-i) + // analog.Write(SVET_YARK_PIN) + analog.LEDcWrite(LEDC_CHANNEL_0, MAX_CHANNEL_VALUE-i) } func Enable() { digital.Write(SVET_ONOFF_PIN, 1)