void Slider::camTrigger () { Serial.println("trigger"); displaySymbol(slideTrg); digitalWrite(trigger, HIGH); delay(triggerDuration); digitalWrite(trigger, LOW); }
QVariant SaleDocumentTVDisplayer::display() const { if (isDisplayOrEditRole()) { if(isValueColumn()) return displayValue(); else if (isSymbolColumn()) return displaySymbol(); else if (isNameColumn()) return displayName(); else return model->baseData(index, role); } if(role == Qt::TextAlignmentRole) { if (isValueColumn()) return QVariant(Qt::AlignRight | Qt::AlignVCenter); } return QVariant(); }
void Slider::startSequence () { int nextPosition = 0; switch (mode) { case 1: // TL-mode if ( intTrigger->set(intervalDuration*1000) ) { sequenceRunning = true; intTrigger->start(); displaySymbol(slideInt); }else { sequenceRunning = false; // error } break; case 2: // SL-mode digitalWrite(stepperSleep, HIGH); digitalWrite(stepperDir, slideDir); if ( stepperInstance->set(stepsPerSecond, intervalDuration) ) { // check position: calculate next position switch (slideDir) { case 0: // right + nextPosition = carriagePosition + stepsPerInterval; break; case 1: // left - nextPosition = carriagePosition - stepsPerInterval; break; default: Serial.println("ERROR: Slider::startSequence - wrong slideDir"); break; } // check position: enough space for one sequence ? if ( (nextPosition >= 0) && (nextPosition <= maxPosition) ) { sequenceRunning = true; carriagePosition = nextPosition; stepperInstance->start(); displaySymbol(slideMve); #ifdef DEBUG_COM Serial.print("---- current position: "); Serial.println(carriagePosition); // debug #endif }else { sequenceRunning = false; Serial.println("ERROR: virtual endstop hit - slide aborted"); } }else { Serial.println("ERROR: slow_impulses::set - wrong frequency"); sequenceRunning = false; } break; case 3: // CO-mode digitalWrite(stepperSleep, HIGH); digitalWrite(stepperDir, slideDir); if ( stepperInstance->set(stepsPerSecond, intervalDuration) ) { sequenceRunning = true; mode3StartTime = millis(); stepperInstance->start(); displaySymbol(slideMve); mode3CarriageStartPos = carriagePosition; }else { Serial.println("ERROR: slow_impulses::set - wrong frequency"); sequenceRunning = false; } break; default: Serial.println("ERROR: Slider::startSequence - wrong mode"); break; } }
boolean Slider::update() { if (sequenceRunning == true) { int nextPosition = 0; switch (mode) { case 1: // TL-mode // check if one interval is over if ( intTrigger->getStatus() ) { // still running, do nothing }else { camTrigger(); displaySymbol(slideInt); } break; case 2: // SL-mode // check position: calculate next position switch (slideDir) { case 0: // right + nextPosition = carriagePosition + stepsPerInterval; break; case 1: // left - nextPosition = carriagePosition - stepsPerInterval; break; default: Serial.println("ERROR: Slider::update - wrong slideDir"); break; } // check if sequence is still running if (stepperInstance->getStatus()) { // still running, do nothing }else { stepperInstance->stop(); // stop before restart camTrigger(); // check position: enough space for one sequence ? if ( (nextPosition >= 0) && (nextPosition <= maxPosition) ) { carriagePosition = nextPosition; stepperInstance->start(); displaySymbol(slideMve); }else { sequenceRunning = false; Serial.println("ERROR: virtual endstop hit - slide aborted"); } #ifdef DEBUG_COM Serial.print("---- current position: "); Serial.println(carriagePosition); #endif } break; case 3: // CO-mode // calculate position by calculating the position change since start switch (slideDir) { case 0: // right + nextPosition = mode3CarriageStartPos + ( (millis()-mode3StartTime)*stepsPerSecond/1000 ); break; case 1: // left - nextPosition = mode3CarriageStartPos - ( (millis()-mode3StartTime)*stepsPerSecond/1000 ); break; default: Serial.println("ERROR: Slider::update - wrong slideDir"); break; } if ( (nextPosition >= 0) && (nextPosition <= maxSteps) ) { // carriage still in range carriagePosition = nextPosition; }else { if (nextPosition <= 0) { carriagePosition = 0; }else if (nextPosition >= maxSteps) { carriagePosition = maxSteps; } sequenceRunning = false; stepperInstance->stop(); Serial.println("ERROR: virtual endstop hit - slide aborted"); } #ifdef DEBUG_COM Serial.print("---- current position: "); Serial.println(carriagePosition); #else delay(1); //workaroud for weird behaviour #endif break; default: Serial.println("ERROR: Slider::startSequence - wrong mode"); break; } }else { Serial.println("ERROR: slide has not been started"); return false; } }
void display( char c ) { if( !c ) displayNumbers(); else displaySymbol( c ); }