Управление яркостью переведено на родной ESP32 LED интерфейс: к-во уровней 4096 - красота!
Этот коммит содержится в:
родитель
8f8f42990d
коммит
0aa4949404
3 изменённых файлов: 27 добавлений и 16 удалений
|
@ -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);
|
||||
}
|
||||
|
|
14
main.go.h
14
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);
|
||||
|
|
|
@ -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)
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче