En una pràctica anterior vàrem controlar un servomotor amb un potenciòmetre. En aquesta controlarem dos servos usant un joystick.
Un joystick no és més que dos potenciòmetres controlats per un comandament. A més a més, incorpora la funció de polsador.
Per començar, copieu el següent codi de bitbloq al vostre compte:
EL bloc del joystick té tres entrades, dues d’analògiques corresponents als dos potenciòmetres, i un de digital del polsador. Abans es defineixen les tres variables de cadascuna de les sortida.
- El servo del pin 5 està controlat per la primera variable [0] del joystick. El concepte mapejar serveix per passar els 1023 valors que pot prendre el potenciòmetre com valor analògic als 180º que té el rang del servo de la sortida digital
- El servo del pin 9 està controlat per la segona variable [1]. També es mapeja
El codi és el següent:
#include
Servo servos[13];
/*** Global variables ***/
int _internal_readJoystick_array_A0_A1[3];
/*** Function declaration ***/
int * readJoystick_A0_A1();
void setup()
{
pinMode(7,INPUT_PULLUP);
servos[5].attach(5);
servos[9].attach(9);
}
void loop()
{
int *joy=(int*)malloc(3*sizeof(int));
joy[0]=0;
joy[1]=0;
joy[2]=0;
joy=readJoystick_A0_A1();
servos[5].write(map(joy[0],0,1023,0,180));
delay(1);
servos[9].write(map(joy[1],0,1023,0,180));
delay(1);
}
/*** Function definition ***/
int * readJoystick_A0_A1(){
_internal_readJoystick_array_A0_A1[0]=analogRead(A0);
_internal_readJoystick_array_A0_A1[1]=analogRead(A1);
_internal_readJoystick_array_A0_A1[2]=digitalRead(7);
return _internal_readJoystick_array_A0_A1;
}
Munteu el circuit usant amb la vostra placa. Aquest mateix circuit el podeu muntar amb Fritzing.
PRÀCTICA AVANÇADA: Amb la tercera variable del joystick, enceneu un LED quan es polsi el polsador.