Visualizzazione posizione angolare del servocomando.

Voler conoscere la posizione angolare del servocomando potrebbe essere utile per impostare alcuni punti da utilizzare per muovere la telecamera in una determinata posizione.

servo angolo 1
servo angolo 3dsys

Componenti da inserire nel 3D System panel.

  • Dal menu Inputs, seleziono il potenziometro (Slider.
  • Dal menu Outputs, seleziono il Servo Motor Control e il Servo Motor (standard).
  • Dal menu Display, seleziono LCDI2C.

Variabili

  • ADC_in: Variabile di tipo Byte, che controlla la velocità di movimento del servocomando.
  • Angolo: variabile di tipo Byte che definisce la posizione del servocomando
  • str[4]:     variabile di tipo stringa composta da 4 caratteri

ADC_in, tipo Byte

angolo, tipo Byte

str[4], tipo stringa

servo angolo 2
servo angolo 3

Diagramma di flusso

Nel programma definisco le operazioni che non variano durante l’esecuzione del programma, come l’inizializzazione del display LCD e del ServoMotorControl.

In questa fase definisco anche la posizione della scritta “asse X” sulla prima riga del display LCD.

  • LCDI2C1::Start: inizializzo il display LCDI2C.
  • LCDI2C1::Cursor(0,0): posizione della stringa di testo contenuta in PrintString.
  • LCDI2C1::Printscreen”asse X”: stringa di testo “asse X”.
  • Servo_Controller1::Initialise(): inizializzo il controllo per il servomotore.
  • Servo_Controller1::EnableServo(0): abilita il servocomando collegato al canale zero.

Ciclo principale

Nel ciclo principale Loop While=1, che è ripetuto fintanto che il programma è attivo, inserisco i Component Macro:

  • ADC_in=slider_plastic1::GetByte(): acquisisce il valore, in Byte, derivante dalla posizione del cursore dello slider.
  • angolo=Servo_controller1::MoveToPosition(0,angolo): muove il servocomando collegato al canale zero alla posizione definita dal valore della variabile angolo.

GetByte

ADC_in

MoveToPosition

angolo

Cursor 10,0

PrintString

str

Le espressioni matematiche contenute nella funzione Calcolo:

  • ADC_in =ADC_in/1.415 
  • Angolo = ADC_in *1.415

Servono per impostare il movimento del servocomando in modo che l’escursione sia compresa tra 0° e 180°, (255:1,415 = 180).

Str=FloatToString$(ADC_in): converte il valore di ADC_in in una stringa a virgola mobile.

Questa conversione è necessaria per visualizzare il valore dell’angolo che passando da 100 a 99, lascerebbe visibili i numeri non significativi, riducendo la leggibilità

PrintString(str): posiziona il valore della stringa str[4] al punto indicato con Cursor 10,0 : carattere 10 della riga zero.

C Code

rick 3Riccardo Monti