Яркость: заданы приемлемые рамки яркости и времени вкл/выкл
Этот коммит содержится в:
родитель
a5b21a7697
коммит
8f8f42990d
2 изменённых файлов: 33 добавлений и 19 удалений
16
main.go.h
16
main.go.h
|
@ -10,25 +10,26 @@ void Yarkost(int i);
|
||||||
void Enable();
|
void Enable();
|
||||||
void Disable();
|
void Disable();
|
||||||
void TaskSveta();
|
void TaskSveta();
|
||||||
|
void PropustitRaz();
|
||||||
|
|
||||||
|
|
||||||
const int MAX_YARKOST = 100; const int MIN_YARKOST = 0; const unsigned long VREMYA_SVETA = 20000; TickType_t loopBlockTime = pdMS_TO_TICKS(1000); int vklYarkBlockTime = 10; TickType_t vyklYarkBlockTime = pdMS_TO_TICKS(50); int yarkost; unsigned long kogdaVyklyuchit; void initSvet() {
|
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=0; kogdaVyklyuchit=0; Vyklyuchit();
|
yarkost=MIN_YARKOST; kogdaVyklyuchit=0; Vyklyuchit();
|
||||||
}
|
}
|
||||||
void DvizhEst() {
|
void DvizhEst() {
|
||||||
kogdaVyklyuchit=millis()+VREMYA_SVETA; if (!Vklyucheno()) { if (DEBUG) { Serial.println("Vkl svet"); } PlavnoVklyuchit(); }
|
kogdaVyklyuchit=millis()+VREMYA_SVETA; if (DEBUG) { Serial.println("Vkl svet"); } PlavnoVklyuchit();
|
||||||
}
|
}
|
||||||
void DvizhaNet() {
|
void DvizhaNet() {
|
||||||
if (kogdaVyklyuchit>millis()) { return; } if (Vklyucheno()) { if (DEBUG) { Serial.println("Vykl"); } PlavnoVyklyuchit(); }
|
if (kogdaVyklyuchit>millis()) { return; } if (Vklyucheno()) { if (DEBUG) { Serial.println("Vykl"); } PlavnoVyklyuchit(); }
|
||||||
}
|
}
|
||||||
void PlavnoVklyuchit() {
|
void PlavnoVklyuchit() {
|
||||||
Enable(); for(yarkost=yarkost; yarkost<=MAX_YARKOST; yarkost++) {Yarkost(yarkost); if (DEBUG) { Serial.println(yarkost); } delay(vklYarkBlockTime);} Vklyuchit();
|
Enable(); for(yarkost=yarkost; yarkost<=MAX_YARKOST; yarkost++) {Yarkost(yarkost); if (DEBUG) { Serial.println(yarkost); } delay(VREMYA_VKL/DIFF_YARKOST);} Vklyuchit();
|
||||||
}
|
}
|
||||||
void PlavnoVyklyuchit() {
|
void PlavnoVyklyuchit() {
|
||||||
int v; for(yarkost=yarkost; yarkost>=MIN_YARKOST; yarkost--) {Yarkost(yarkost); if (DEBUG) { Serial.println(yarkost); } v=ulTaskNotifyTake(0,vyklYarkBlockTime); if (v>0) { DvizhEst(); return; }} Vyklyuchit();
|
int v; for(yarkost=yarkost; yarkost>=MIN_YARKOST; yarkost--) {Yarkost(yarkost); if (DEBUG) { Serial.println(yarkost); } v=ulTaskNotifyTake(0,vyklYarkBlockTime); if (v>0) { DvizhEst(); return; }} Vyklyuchit();
|
||||||
}
|
}
|
||||||
bool Vklyucheno() {
|
bool Vklyucheno() {
|
||||||
return yarkost>0;
|
return yarkost>MIN_YARKOST;
|
||||||
}
|
}
|
||||||
void Vklyuchit() {
|
void Vklyuchit() {
|
||||||
Yarkost(MAX_YARKOST); Enable();
|
Yarkost(MAX_YARKOST); Enable();
|
||||||
|
@ -46,5 +47,8 @@ void Disable() {
|
||||||
digitalWrite(SVET_ONOFF_PIN,0);
|
digitalWrite(SVET_ONOFF_PIN,0);
|
||||||
}
|
}
|
||||||
void TaskSveta() {
|
void TaskSveta() {
|
||||||
int v; while(1) {v=ulTaskNotifyTake(0,loopBlockTime); if (v>0) { DvizhEst(); } else { DvizhaNet(); }}
|
int v; PropustitRaz(); while(1) {v=ulTaskNotifyTake(0,loopBlockTime); if (v>0) { DvizhEst(); } else { DvizhaNet(); }}
|
||||||
|
}
|
||||||
|
void PropustitRaz() {
|
||||||
|
ulTaskNotifyTake(0,loopBlockTime);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,21 +10,26 @@ import (
|
||||||
|
|
||||||
// 150 - примерно то же, что и 255 (должно быть те 1.25В где-то там же)
|
// 150 - примерно то же, что и 255 (должно быть те 1.25В где-то там же)
|
||||||
// 100 - средненько
|
// 100 - средненько
|
||||||
|
// 50 - приглушённо
|
||||||
|
|
||||||
const MAX_YARKOST int = 100
|
const MAX_YARKOST int = 25
|
||||||
const MIN_YARKOST int = 0
|
const MIN_YARKOST int = 15
|
||||||
|
|
||||||
const VREMYA_SVETA uint32 = 20000
|
const VREMYA_VKL int = 2000
|
||||||
|
const VREMYA_SVETA uint32 = 10000
|
||||||
|
const VREMYA_VYKL int = 10000
|
||||||
|
|
||||||
|
const DIFF_YARKOST int = MAX_YARKOST - MIN_YARKOST
|
||||||
|
|
||||||
var loopBlockTime task.TickType = task.MS_TO_TICKS(1000)
|
var loopBlockTime task.TickType = task.MS_TO_TICKS(1000)
|
||||||
var vklYarkBlockTime int = 10
|
|
||||||
var vyklYarkBlockTime task.TickType = task.MS_TO_TICKS(50)
|
var vyklYarkBlockTime task.TickType = task.MS_TO_TICKS(VREMYA_VYKL / DIFF_YARKOST)
|
||||||
|
|
||||||
var yarkost int
|
var yarkost int
|
||||||
var kogdaVyklyuchit uint32
|
var kogdaVyklyuchit uint32
|
||||||
|
|
||||||
func initSvet() {
|
func initSvet() {
|
||||||
yarkost = 0
|
yarkost = MIN_YARKOST
|
||||||
kogdaVyklyuchit = 0
|
kogdaVyklyuchit = 0
|
||||||
|
|
||||||
Vyklyuchit()
|
Vyklyuchit()
|
||||||
|
@ -33,13 +38,11 @@ func initSvet() {
|
||||||
func DvizhEst() {
|
func DvizhEst() {
|
||||||
kogdaVyklyuchit = timer.Millis() + VREMYA_SVETA
|
kogdaVyklyuchit = timer.Millis() + VREMYA_SVETA
|
||||||
|
|
||||||
if !Vklyucheno() {
|
|
||||||
if DEBUG {
|
if DEBUG {
|
||||||
serial.Println("Vkl svet")
|
serial.Println("Vkl svet")
|
||||||
}
|
}
|
||||||
PlavnoVklyuchit()
|
PlavnoVklyuchit()
|
||||||
}
|
}
|
||||||
}
|
|
||||||
func DvizhaNet() {
|
func DvizhaNet() {
|
||||||
if kogdaVyklyuchit > timer.Millis() {
|
if kogdaVyklyuchit > timer.Millis() {
|
||||||
return
|
return
|
||||||
|
@ -61,7 +64,7 @@ func PlavnoVklyuchit() {
|
||||||
if DEBUG {
|
if DEBUG {
|
||||||
serial.Println(yarkost)
|
serial.Println(yarkost)
|
||||||
}
|
}
|
||||||
timer.Delay(vklYarkBlockTime)
|
timer.Delay(VREMYA_VKL / DIFF_YARKOST)
|
||||||
}
|
}
|
||||||
|
|
||||||
Vklyuchit()
|
Vklyuchit()
|
||||||
|
@ -80,11 +83,12 @@ func PlavnoVyklyuchit() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Vyklyuchit()
|
Vyklyuchit()
|
||||||
}
|
}
|
||||||
|
|
||||||
func Vklyucheno() bool {
|
func Vklyucheno() bool {
|
||||||
return yarkost > 0
|
return yarkost > MIN_YARKOST
|
||||||
}
|
}
|
||||||
func Vklyuchit() {
|
func Vklyuchit() {
|
||||||
Yarkost(MAX_YARKOST)
|
Yarkost(MAX_YARKOST)
|
||||||
|
@ -109,6 +113,8 @@ func Disable() {
|
||||||
func TaskSveta() {
|
func TaskSveta() {
|
||||||
var v int
|
var v int
|
||||||
|
|
||||||
|
PropustitRaz()
|
||||||
|
|
||||||
for {
|
for {
|
||||||
/* Block to wait for a notification. Here the RTOS
|
/* Block to wait for a notification. Here the RTOS
|
||||||
task notification is being used as a counting semaphore.
|
task notification is being used as a counting semaphore.
|
||||||
|
@ -127,3 +133,7 @@ func TaskSveta() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func PropustitRaz() {
|
||||||
|
task.TaskNotifyTake(0, loopBlockTime)
|
||||||
|
}
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче