diff --git a/main.go.h b/main.go.h index 4fc299a..a9390bb 100644 --- a/main.go.h +++ b/main.go.h @@ -1,34 +1,50 @@ void initSvet(); -void DvizhEst(int start); +void DvizhEst(); void DvizhaNet(); -void PlavnoVklyuchit(int start); +void PlavnoVklyuchit(); void PlavnoVyklyuchit(); +bool Vklyucheno(); void Vklyuchit(); void Vyklyuchit(); +void Yarkost(int i); +void Enable(); +void Disable(); void TaskSveta(); -const unsigned long VREMYA_SVETA = 20000; TickType_t loopBlockTime = pdMS_TO_TICKS(1000); int vklYarkBlockTime = 10; TickType_t vyklYarkBlockTime = pdMS_TO_TICKS(50); bool vkl; unsigned long kogdaVyklyuchit; void initSvet() { - vkl=false; kogdaVyklyuchit=0; Vyklyuchit(); +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() { + yarkost=0; kogdaVyklyuchit=0; Vyklyuchit(); } -void DvizhEst(int start) { - kogdaVyklyuchit=millis()+VREMYA_SVETA; if (!vkl) { vkl=true; if (DEBUG) { Serial.println("Vkl svet"); } PlavnoVklyuchit(start); } +void DvizhEst() { + kogdaVyklyuchit=millis()+VREMYA_SVETA; if (!Vklyucheno()) { if (DEBUG) { Serial.println("Vkl svet"); } PlavnoVklyuchit(); } } void DvizhaNet() { - if (kogdaVyklyuchit>millis()) { return; } if (vkl) { vkl=false; if (DEBUG) { Serial.println("Vykl"); } PlavnoVyklyuchit(); } + if (kogdaVyklyuchit>millis()) { return; } if (Vklyucheno()) { if (DEBUG) { Serial.println("Vykl"); } PlavnoVyklyuchit(); } } -void PlavnoVklyuchit(int start) { - digitalWrite(SVET_ONOFF_PIN,1); int i; for(i=start; i>=0; i--) {analogWrite(SVET_YARK_PIN,i); if (DEBUG) { Serial.println(i); } delay(vklYarkBlockTime);} Vklyuchit(); +void PlavnoVklyuchit() { + Enable(); for(yarkost=yarkost; yarkost<=MAX_YARKOST; yarkost++) {Yarkost(yarkost); if (DEBUG) { Serial.println(yarkost); } delay(vklYarkBlockTime);} Vklyuchit(); } void PlavnoVyklyuchit() { - int v; int i; for(i=0; i<=255; i++) {analogWrite(SVET_YARK_PIN,i); if (DEBUG) { Serial.println(i); } v=ulTaskNotifyTake(0,vyklYarkBlockTime); if (v>0) { DvizhEst(i); 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() { + return yarkost>0; } void Vklyuchit() { - digitalWrite(SVET_YARK_PIN,0); digitalWrite(SVET_ONOFF_PIN,1); + Yarkost(MAX_YARKOST); Enable(); } void Vyklyuchit() { - digitalWrite(SVET_YARK_PIN,1); digitalWrite(SVET_ONOFF_PIN,0); + Yarkost(MIN_YARKOST); Disable(); +} +void Yarkost(int i) { + analogWrite(SVET_YARK_PIN,255-i); +} +void Enable() { + digitalWrite(SVET_ONOFF_PIN,1); +} +void Disable() { + digitalWrite(SVET_ONOFF_PIN,0); } void TaskSveta() { - int v; while(1) {v=ulTaskNotifyTake(0,loopBlockTime); if (v>0) { DvizhEst(255); } else { DvizhaNet(); }} + int v; while(1) {v=ulTaskNotifyTake(0,loopBlockTime); if (v>0) { DvizhEst(); } else { DvizhaNet(); }} } diff --git a/pkg/app/main.go b/pkg/app/main.go index 6a6536c..6104f6d 100644 --- a/pkg/app/main.go +++ b/pkg/app/main.go @@ -8,31 +8,36 @@ import ( "my/go-controller/timer" ) +// 150 - примерно то же, что и 255 (должно быть те 1.25В где-то там же) +// 100 - средненько + +const MAX_YARKOST int = 100 +const MIN_YARKOST int = 0 + const VREMYA_SVETA uint32 = 20000 var loopBlockTime task.TickType = task.MS_TO_TICKS(1000) var vklYarkBlockTime int = 10 var vyklYarkBlockTime task.TickType = task.MS_TO_TICKS(50) -var vkl bool +var yarkost int var kogdaVyklyuchit uint32 func initSvet() { - vkl = false + yarkost = 0 kogdaVyklyuchit = 0 Vyklyuchit() } -func DvizhEst(start int) { +func DvizhEst() { kogdaVyklyuchit = timer.Millis() + VREMYA_SVETA - if !vkl { - vkl = true + if !Vklyucheno() { if DEBUG { serial.Println("Vkl svet") } - PlavnoVklyuchit(start) + PlavnoVklyuchit() } } func DvizhaNet() { @@ -40,8 +45,7 @@ func DvizhaNet() { return } - if vkl { - vkl = false + if Vklyucheno() { if DEBUG { serial.Println("Vykl") } @@ -49,14 +53,13 @@ func DvizhaNet() { } } -func PlavnoVklyuchit(start int) { - digital.Write(SVET_ONOFF_PIN, 1) +func PlavnoVklyuchit() { + Enable() - var i int - for i = start; i >= 0; i-- { - analog.Write(SVET_YARK_PIN, i) + for yarkost = yarkost; yarkost <= MAX_YARKOST; yarkost++ { + Yarkost(yarkost) if DEBUG { - serial.Println(i) + serial.Println(yarkost) } timer.Delay(vklYarkBlockTime) } @@ -65,28 +68,41 @@ func PlavnoVklyuchit(start int) { } func PlavnoVyklyuchit() { var v int - var i int - for i = 0; i <= 255; i++ { - analog.Write(SVET_YARK_PIN, i) + for yarkost = yarkost; yarkost >= MIN_YARKOST; yarkost-- { + Yarkost(yarkost) if DEBUG { - serial.Println(i) + serial.Println(yarkost) } v = task.TaskNotifyTake(0, vyklYarkBlockTime) if v > 0 { - DvizhEst(i) + DvizhEst() return } } Vyklyuchit() } +func Vklyucheno() bool { + return yarkost > 0 +} func Vklyuchit() { - digital.Write(SVET_YARK_PIN, 0) // логика яркости инвертирована - digital.Write(SVET_ONOFF_PIN, 1) + Yarkost(MAX_YARKOST) + Enable() } func Vyklyuchit() { - digital.Write(SVET_YARK_PIN, 1) // логика яркости инвертирована + Yarkost(MIN_YARKOST) + Disable() +} + +func Yarkost(i int) { + // логика яркости инвертирована + analog.Write(SVET_YARK_PIN, 255-i) +} +func Enable() { + digital.Write(SVET_ONOFF_PIN, 1) +} +func Disable() { digital.Write(SVET_ONOFF_PIN, 0) } @@ -105,7 +121,7 @@ func TaskSveta() { deferred interrupt event is processed at a time. */ v = task.TaskNotifyTake(0, loopBlockTime) if v > 0 { - DvizhEst(255) + DvizhEst() } else { DvizhaNet() }