34 строки
1,4 КиБ
C
34 строки
1,4 КиБ
C
void initSvet();
|
|
void DvizhEst(int start);
|
|
void DvizhaNet();
|
|
void PlavnoVklyuchit(int start);
|
|
void PlavnoVyklyuchit();
|
|
void Vklyuchit();
|
|
void Vyklyuchit();
|
|
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();
|
|
}
|
|
void DvizhEst(int start) {
|
|
kogdaVyklyuchit=millis()+VREMYA_SVETA; if (!vkl) { vkl=true; if (DEBUG) { Serial.println("Vkl svet"); } PlavnoVklyuchit(start); }
|
|
}
|
|
void DvizhaNet() {
|
|
if (kogdaVyklyuchit>millis()) { return; } if (vkl) { vkl=false; 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 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();
|
|
}
|
|
void Vklyuchit() {
|
|
digitalWrite(SVET_YARK_PIN,0); digitalWrite(SVET_ONOFF_PIN,1);
|
|
}
|
|
void Vyklyuchit() {
|
|
digitalWrite(SVET_YARK_PIN,1); digitalWrite(SVET_ONOFF_PIN,0);
|
|
}
|
|
void TaskSveta() {
|
|
int v; while(1) {v=ulTaskNotifyTake(0,loopBlockTime); if (v>0) { DvizhEst(255); } else { DvizhaNet(); }}
|
|
}
|