2
unknown
c_cpp
a month ago
5.3 kB
3
Indexable
bool camDebugState = false; bool m2SpeedLimit = true; // LED pins #define LED_PIN_1 3 //RED #define LED_PIN_2 8 //GREEN #define LED_PIN_3 9 //BLUE #define LEDC_RED 0 #define LEDC_BLUE 1 #define LEDC_GREEN 2 #define LEDC_TIMER_8_BIT 8 #define LEDC_BASE_FREQ 5000 // use 5000 Hz as a LEDC base frequency void initLED() { // LED SETUP PWM ledcAttachChannel(LED_PIN_1, LEDC_BASE_FREQ, LEDC_TIMER_8_BIT, LEDC_RED); ledcAttachChannel(LED_PIN_2, LEDC_BASE_FREQ, LEDC_TIMER_8_BIT, LEDC_BLUE); ledcAttachChannel(LED_PIN_3, LEDC_BASE_FREQ, LEDC_TIMER_8_BIT, LEDC_GREEN); } //Запускаем светодиоды со значениями R,G,B void LED_Control(int R, int G, int B) { ledcWriteChannel(LEDC_RED, R); ledcWriteChannel(LEDC_BLUE, G); ledcWriteChannel(LEDC_GREEN, B); } /* //Запускаем светоидоды с референсными значениями void LED_Control(bool red, bool green, bool blue) { ledcWriteChannel(LEDC_RED, 0); ledcWriteChannel(LEDC_GREEN, 0); ledcWriteChannel(LEDC_BLUE, 0); if (red) ledcWriteChannel(LEDC_RED, R_value); if (green) ledcWriteChannel(LEDC_BLUE, G_value); if (blue) ledcWriteChannel(LEDC_GREEN, B_value); }*/ ////////////////////////////PERF LASER SENSOR//////////////////////////////////////////////////////////////////// unsigned long sensorTime = 0; int sensorMinVal = 250; unsigned long sensorLastDebugTime = 0; const unsigned long sensorLastDebugInterval = 500; // Интервал вывода отладочной информации (мс) volatile unsigned long sensorlastTime = 0; void IRAM_ATTR sensorIsr() { unsigned long currentTime = millis(); if (currentTime - sensorlastTime > sensorInterval) { sensorStopState = true; sensorlastTime = currentTime; } } void initLaser() { pinMode(LASERSENSOR_PIN, INPUT); //attachInterrupt(digitalPinToInterrupt(LASERSENSOR_PIN), sensorIsr, FALLING); //Attach INTRP on Sensor Pin } void sensorCallInterrupt() { sensorStopState = false; motorsFilmTorqueMoveSpoolD(); move = false; ledCamState = true; if(stateDebug) { unsigned long currentTime = millis(); Serial.print("STOP: "); Serial.print(currentTime); Serial.print(" / Move Time: "); Serial.println(currentTime - stopLastTime); } } void sensorCall() { unsigned long currentTime = millis(); //Проверяем перфорацию с задержкой после старта движения if (currentTime - stopLastTime >= moveInterval && move) { unsigned long currentSensorTime = millis(); sensorlastTime = currentSensorTime; float sensor_value = analogRead(LASERSENSOR_PIN); if (sensor_value < sensorMinVal) { //motorsFilmTorqueMoveSimple(); motorsFilmTorqueMoveSpoolD(); //Защита от слишком быстрого перемещения пленки long moveTime = currentTime - stopLastTime; if(frameCount > 3 && m2SpeedLimit) { if(moveTime > moveInterval + 10) { move = false; ledCamState = true; } else { scannerState = 0; Serial.println("........................................"); Serial.println("MOVE TIME IS TO SHORT!!! / STOP SCANNING"); Serial.println("........................................"); } } else {move = false; ledCamState = true;} if(stateDebug) { Serial.println("STOP: " + String(currentTime) + " / Move Time: " + String(moveTime) + " / Sen Val: " + String(sensor_value,0)); } } } } void sensorDebug() { unsigned long currentTime = millis(); if (currentTime - sensorLastDebugTime >= sensorLastDebugInterval) { sensorLastDebugTime = currentTime; float sensor_value = analogRead(LASERSENSOR_PIN); Serial.println(sensor_value); } } /////////////////////////////////CAMERA////////////////////////////////////////////////////////////////// #define CAMTRIGGER_PIN 21 unsigned long camTriggerLastTime = 0; unsigned long camTriggerInterval = 10; //Задержка сигнала триггера (ON/OFF) bool camTriggerState = true; //Режим сигнала триггера камеры (ON/OFF) void initCam() { pinMode(CAMTRIGGER_PIN, OUTPUT); digitalWrite(CAMTRIGGER_PIN, LOW); } //Триггерим камеру через delay void camTrigger() { digitalWrite(CAMTRIGGER_PIN, HIGH); delay(camTriggerInterval); digitalWrite(CAMTRIGGER_PIN, LOW); } void camTriggerON() { unsigned long currentTime = millis(); camTriggerLastTime = currentTime; camTriggerState = true; digitalWrite(CAMTRIGGER_PIN, HIGH); if(camDebugState) Serial.println("Cam Signal On: " + String(currentTime)); } //Выключаем ПИН сигнала камеры если прошло время camTriggerInterval void camTriggerOffCall() { unsigned long currentTime = millis(); if(camTriggerState) { if (currentTime - camTriggerLastTime >= camTriggerInterval) { digitalWrite(CAMTRIGGER_PIN, LOW); camTriggerState = false; if(camDebugState) Serial.println("Cam Signal OFF: " + String(currentTime)); } } }
Editor is loading...
Leave a Comment