background image

void loop()
The main loop starts with the ps4.getPS4() command. This command gets the 

status of all the PS4 controller’s buttons, triggers, joysticks, and sensors and returns 

the information to PRIZM. This command needs to be frequently repeated so 

that as the user uses the controller, the status of what buttons are pressed gets 

communicated to PRIZM.

The first if statement determines if there is an obstacle within the designated 

detection range of the Ultrasonic Sensor. If the sensor detects an obstacle, the PS4’s 

rumble motors are turned on. Otherwise, they are stopped.

The second if statement determines if there is a difference between what is stored 

in the touchx variable and the current 

x

 value of the PS4’s touch pad. The 

ps4.Touchpad(TOUCHX) command is what returns the 

x

 value of the touch pad. 

If there is a difference between these two values, then the touchPadControl() 

function is called. Otherwise, this function is skipped over. The touchPadControl() 

function is where the speed of the motors are set using the touch pad.

Next, there are three while loops. These while loops determine if certain button 

combinations are pressed. The ps4.buttons_1 command returns a unique byte 

value depending on which buttons are pressed from Group 1. Group 1 buttons 

include L1, L2, R1, R2, Triangle, Square, Circle, and Cross. Like Group 1, the 

ps4.buttons_2 command also returns a unique byte value based on which buttons 

from Group 2 are pressed. Group 2 includes the Up, Down, Left, Right, L3, R3, Share, 

and Options buttons.

The first while loop will continuously call the lineFollow() function if the value 

returned from ps4.buttons_1 equals the lineBtnCombo variable, which is 5. Five 

is the unique value for when both the L2 and R2 buttons are pressed at the same 

time. To simplify, the sketch will continuously run the lineFollow() function if the L2 

and R2 buttons are both pressed.
Similar to the first while loop, the second while loop continuously calls the 

pitchRollControl() function when the L1 and R1 buttons are pressed. When 

these two buttons are pressed, the ps4.buttons_1 command will return 10, 

which is the same value that is set for the pitchRollBtnCombo variable, and the 

pitchRollControl() function is executed.
The third while loop is for controlling the robot with the direction buttons. The 

direction buttons are part of Group 2, which is why ps4.buttons_2 is used. The only 

time ps4.buttons_2 returns 0 is when none of the buttons in Group 2 are pressed. 

This while loop uses a not (!=) comparison to say, “while not none of the buttons in 

Group 2 are pressed, call the directionButtonControl() function.” 

Not none

 doesn’t 

make a lot of sense in English, but in coding, a double negative makes a positive 

just like it does in math. So in other words, this while loop says, “while at least one 

of the Group 2 buttons is pressed, call the directionButtonControl() function.”

6

      TETRIX Tele-Op Control Module Activity 2

Summary of Contents for Tele-Op

Page 1: ...ds to the motor port for that motor Motor 1 to Encoder Port 1 Motor 2 to Encoder Port 2 5 Make sure that the Ultrasonic Sensor on the TaskBot is connected to Port D2 on PRIZM 6 Make sure that the Line...

Page 2: ...lash white in a rapid pattern The controller is now in discovery mode 6 Press the black button on the Tele Op module The green LED on the Tele Op module should remain on and stop flashing Also the lig...

Page 3: ...ports and encoder ports that each TorqueNADO is plugged into turn your TaskBot back on and restart the program You should find that the farther you push the joysticks up the faster the TaskBot will mo...

Page 4: ...ine up with the line so that it faces the same direction that the line goes Hold down the L2 and R2 buttons at the same time to enter line following mode You should see the TaskBot start following the...

Page 5: ...rmal 35 modes There are also four integer variables one for storing the x value from the touch pad one for storing the distance measured by the Ultrasonic Sensor to operate the PS4 controller s rumble...

Page 6: ...mmand also returns a unique byte value based on which buttons from Group 2 are pressed Group 2 includes the Up Down Left Right L3 R3 Share and Options buttons The first while loop will continuously ca...

Page 7: ...egrees The next three lines of the main loop provide this functionality The first if statement turns the TaskBot left and the second if statement turns the TaskBot right The command ps4 Button BUTTON...

Page 8: ...commands is executed the else part Since the user does not want crawl mode or turbo mode then the only other option is normal mode The powerMultiplier is set to the medSpeed variable 0 35 or 35 and t...

Page 9: ...e PS4 controller s LED is set to blue to indicate the TaskBot is in line following mode The two if statements read the Line Finder Sensor and cause the TaskBot to turn one way if the sensor detects da...

Page 10: ...the TaskBot moves the opposite direction of the controller tilt but because of the backward motion the TaskBot ends up facing the direction of the tilt Controller Tilt Pitch Roll Motor 1 P R Motor 2 P...

Page 11: ...des an if statement to determine if the value of the touch pad has changed If the user is using the touch pad to adjust the motor speed then the touchPadControl function is called to adjust the crawl...

Page 12: ...back on the line the user should be able to press a button on the PS4 controller to have the TaskBot start autonomously following the line again The table here shows the direction pad buttons the uni...

Reviews: