Per muovere un puntatore laser o una videocamera in orizzontale (asse X) e in verticale (asse Y), è necessario agire su due controlli separati; è possibile utilizzare un joystick che agisce contemporaneamente su due potenziometri.
Il joystick è una apparecchiatura meccanica composta da un perno centrale che può essere spostato liberamente sul suo asse vincolato con uno snodo, in modo da controllare simultaneamente due potenziometri .
3D System Panel
Aggiungo, nel 3D system panel, i nuovi oggetti necessari per gestire il movimento dell’asse Y:
Le luci verdi indicano i canali attivi.
Le frecce bianche identificano il collegamentoo al servocomando.
Nel 3D System Panel, seleziono il “ServoMotorController1” e attivo il secondo canale: Channel 1
Slider_plastic2
Slider_plastic1
standard_servo1
standard_servo2
Variabili
Recupero il programma di “visualizzazione dell’angolo del servocomando”, e aggiungo le nuove variabili necessarie per gestire l’asse Y.
Raddoppio le istruzioni utilizzate per gestire l’asse “X”, aggiungendo tre nuove variabili; due tipo Byte e una di tipo stringa.
Per distinguere le nuove variabili, rinomino le precedenti aggiungendo una “X” per differenziarle dalle nuove contrassegnate da una “Y”.
Il colore giallo rappresenta le variabili dell’asse X, il rosso indica le nuove variabili per l’asse Y.
Diagramma di flusso - inizializzazione
Le icone di colore rosso, rappresentano le nuove istruzioni per controllare l’asse Y.
Enable Servo
Cursor (0,1)
PrintString
“asse Y”
Diagramma di flusso - ciclo principale
Per controllare il secondo servocomando, standard_servo2, è necessario raddoppiare le istruzioni utilizzate per controllare lo standard_servo1.
Seleziono e copio le tre icone gialle è le incollo sotto cambiando il colore in rosso.
Modifico le istruzioni sostituendo le variabili relative l’asse X con quelle per l’asse Y.
GetByte: acquisizione posizione potenziometro.
in
MoveToPosition:movimento del servocomando.
FloatToString$: conversione della posizione del servocomando in posizione angolare.
Visualizzazione dell’angolo dell’asse Y, sul display LCD.
Le istruzioni:
C Code
ADC_inX=slider_plastic1::getByte()
ADC_inY=slider_plastic2::getByte()
angoloX=servo_Controller1::MoveToPosition::(0,angoloX
angoloY=servo_Controller1::MoveToPosition::(1,angoloY)
in
ADC_inX = ADC_inX / 1.415
angoloX = ADC_inX * 1.415
strX =FloatTostring$ (ADC_inX)
ADC_inY = ADC_inY / 1.415
angoloY = ADC_inY * 1.415
strY =FloatTostring$ (ADC_inY)
in
Riccardo Monti