コード例 #1
0
void Slider::camTrigger () {
  Serial.println("trigger");
  displaySymbol(slideTrg);
  digitalWrite(trigger, HIGH);
  delay(triggerDuration);
  digitalWrite(trigger, LOW);
}
コード例 #2
0
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();
}
コード例 #3
0
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;
  }
}
コード例 #4
0
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;
  }
}
コード例 #5
0
 void display( char c ) {
     if( !c ) displayNumbers();
     else displaySymbol( c );
 }