start here🡆

GBG joystick car programming and configuring website.

For any questions about how to use this website, or other feedback,
please post here or email gobabygocarswithjoysticks@gmail.com.









Upload Program



Advanced settings
  1. These options are only useful to people developing code for these cars.
  2. hex file:
  3. Get car code from main branch instead of from most recent release:


Connect to Car (to change settings)


Calibrate and Configure Your Car

Connect to your car to see settings here.


Joystick Input 🛈
Error displaying canvas! Try a different browser?



Scaled Speed Target 🛈
Error displaying canvas! Try a different browser?

Smoothed Speed to Drive 🛈
Error displaying canvas! Try a different browser?

Motor Signals 🛈 : status loading

Error displaying canvas! Try a different browser?



Library of settings









Advanced settings
no extra info loaded yet




The source code for this website is on Github here.

This website uses arduino-web-uploader by David Buezas for uploading code to cars that use Arduino Nano and Arduino Uno boards.

The remote website uses JoyStick by Roberto D'Amico.

This website uses qrcodejs by davidshimjs.

This website uses esptool-js by Espressif Systems for uploading code to cars that use ESP32 boards.










Programming the Car




Settings


  1. What settings do you want to change? If you are programming a new car, then make sure to calibrate the joystick.










Info about settings:

control right: The value (between 0 and 1023) returned from the joystick when it is all the way to the right. Check the setting for pin "joy x pin" if you don't see a clear signal when you move the joystick.
control center x: The value (between 0 and 1023) returned from the joystick's x axis when it is centered.
control left: The value (between 0 and 1023) returned from the joystick when it is all the way to the left. Check the setting for pin "joy x pin" if you don't see a clear signal when you move the joystick.
x deadzone: How big of a zone near the center of the x axis should joystick movement be ignored in? Try around 15 to start with. The car won't start if the joystick isn't in the deadzone.
control up: The value (between 0 and 1023) returned from the joystick when it is all the way forwards. Check the setting for pin "joy y pin" if you don't see a clear signal when you move the joystick.
control center y: The value (between 0 and 1023) returned from the joystick's y axis when it is centered.
control down: The value (between 0 and 1023) returned from the joystick when it is all the way backwards. Check the setting for pin "joy y pin" if you don't see a clear signal when you move the joystick.
y deadzone: How big of a zone near the center of the y axis should joystick movement be ignored in? Try around 15 to start with. The car won't start if the joystick isn't in the deadzone.
acceleration forward: Rate of increase of speed when the car is moving forward. (fastest forward) / (acceleration forward) = seconds to reach max speed. (Larger number means higher acceleration). You can use the slow/medium/fast buttons to the left to give you a value to start with then adjust from there.
deceleration forward: Rate of decrease of speed when the car is moving forward. (fastest forward) / (deceleration forward) = seconds to slow to a stop from max speed. (Larger number means higher deceleration). You can use the slow/medium/fast buttons to the left to give you a value to start with then adjust from there.
acceleration backward: Rate of increase of speed when the car is moving backward. (fastest backwards) / (acceleration backward) = seconds to reach max speed. (Larger number means higher acceleration). You can use the slow/medium/fast buttons to the left to give you a value to start with then adjust from there.
deceleration backward: Rate of decrease of speed when the car is moving backward. (fastest backwards) / (deceleration backward) = seconds to slow to a stop from max speed. (Larger number means higher deceleration). You can use the slow/medium/fast buttons to the left to give you a value to start with then adjust from there.
acceleration turning: Rate of increase of rotation speed. (turn speed) / (acceleration turning) = seconds to reach max speed. (Larger number means higher acceleration). You can use the slow/medium/fast buttons to the left to give you a value to start with then adjust from there.
deceleration turning: Rate of decrease of rotation speed. (turn speed) / (deceleration turning) = seconds to slow to a stop from max speed. (Larger number means higher deceleration). You can use the slow/medium/fast buttons to the left to give you a value to start with then adjust from there.
fastest forward: Maximum forward speed (between 0.0 and 1.0). While associated with speed, this setting is actually a limit on the power/torque of the motors so if you want to drive on a lawn a higher value might be needed.
fastest backward: Maximum backward speed (between 0.0 and 1.0). While associated with speed, this setting is actually a limit on the power/torque of the motors so if you want to drive on a lawn a higher value might be needed.
fastest backward: Maximum backward speed (between 0.0 and 1.0). While associated with speed, this setting is actually a limit on the power/torque of the motors so if you want to drive on a lawn a higher value might be needed.
turn speed: Maximum turning (spinning) speed (between 0.0 and 1.0). While associated with speed, this setting is actually a limit on the power/torque of the motors so if you want to drive on a lawn a higher value might be needed.
scale turning when moving: This setting changes how tightly the car turns when the joystick is pushed to a corner, try 0.5 to start. (Higher values mean tighter turns. It's recommended to stay within 0.0 and 1.0).
reverse turn in reverse: Changes how the car drives in reverse (flips rotation direction if the car is moving backwards). If checked: car drives towards direction joystick pointed. If unchecked: car spins in direction joystick pointed.
left motor center: What ESC signal makes the left motor stop? usually 1500
left motor slow: Center ± what makes the left motor start to turn? Can be negative if the motor is wired backwards. Try 25.
left motor fast: Center ± what makes the left motor run at full speed? Can be negative if the motor is wired backwards. Usually 500.
right motor center: What ESC signal makes the right motor stop? usually 1500
right motor slow: Center ± what makes the right motor start to turn? Can be negative if the motor is wired backwards. Try 25.
right motor fast: Center ± what makes the right motor run at full speed? Can be negative if the motor is wired backwards. Usually 500.
use speed knob: Check the box if an optional knob for easily adjusting the max speed been added to your car.
speed knob slow val: (Hidden unless "use speed knob" is enabled.) This setting should be the analogRead value when the knob is turned towards the slowest setting. (check SPEED_KNOB_PIN if not a clear signal)
speed knob fast val: (Hidden unless "use speed knob" is enabled.) This setting should be the analogRead value when the knob is turned towards the fastest setting. (check SPEED_KNOB_PIN if not a clear signal)
scale accel with speed: (Hidden unless "use speed knob" is enabled.) Check box if using a speed knob and you want to keep time to max speed constant instead of acceleration being constant. If checked: (1/accel)=time to reach max speed setting. If unchecked: (1/accel)=time to reach speed of 1.0 even if the car is limited from reaching a speed of 1.
speed knob pin: (Hidden unless "use speed knob" is enabled.) Pin connected to optional potentiometer for adjusting max speed.
joy x pin: What analog pin is the X (left-right) axis of the joystick connected to?
joy y pin: What analog pin is the Y (forwards-backwards) axis of the joystick connected to?
left motor controller pin: What Arduino pin is the left motor controller connected to?
right motor controller pin: What Arduino pin is the right motor controller connected to?
swap motors: For the GBG-PCB, check this box to swap the motors left/right. For a standard car, this setting will be hidden and the motors can be swapped by changing the motor controller pins.
enable startup pulse: If the small movement that the car uses to indicate it is ready to drive is bothering the driver, then you can turn it off by unchecking this setting.
left motor pulse: What signal (inverted if LEFT_MOTOR_SLOW is negative) and added to LEFT_MOTOR_CENTER makes the left motor move enough to cause a gentle movement that can be used to indicate the car is ready to drive.
right motor pulse: What signal (inverted if RIGHT_MOTOR_SLOW is negative) and added to RIGHT_MOTOR_CENTER makes the right motor move enough to cause a gentle movement that can be used to indicate the car is ready to drive.
start motor pulse time: How many thousandths of a second are the motors pulsed to indicate that the car is ready to drive.
joy calib count: How many centered joystick readings need to be taken in a row before the joystick is considered centered and ok? One reading takes a bit under 2 thousandths of a second.
Set to -1 to turn off joystick center check.
enable button ctrl: The car can be controlled with buttons instead of a joystick.
When in button mode, some text indicating the state of each button appears. It looks like "buttons: 0001xx" where 0 means button off (open circuit), 1 means button pressed, and x means the button is not used because of the value of "num drive buttons." Unless "buttons active high" is checked, buttons should connect the pins to ground when pressed.
use button mode pin: Use a switch to change between button mode and joystick mode at any time. Turn on "enable button ctrl" to use.
button mode pin: What pin is the optional button mode switch wired to? Turn on "use button mode pin" to use.
button mode toggle: If checked, activating the button mode pin toggles between joystick mode and button mode. If unchecked, button mode is on while the button mode pin is activated.
buttons active high: If checked, the buttons (and the button mode pin) are considered pressed when the pin is pulled high. If unchecked (the default), the buttons are considered pressed when the pin is pulled low (connected to ground). The pins all have a pull-up resistor enabled.
num drive buttons: How many optional buttons are wired to the car? Up to six buttons are supported. Turn on "enable button ctrl" to use.
Drive Buttons: What amount of speed and turning should the car accelerate to when pin is pulled low by a button? If more than one button is pressed, the speeds and turning amounts add together. "pin" can be any digital pin on the Arduino, speed is between -1.0(backwards) and 1.0(forwards), and turn is between -1.0(turning left) and 1.0(turning right).
steering off switch: If this option is checked, turning on a switch wired between USE_BUTTON_MODE_PIN and the gnd pin of the Arduino makes the car only drive forwards and back, with steering and turning unavailable. If you want the car to always be unable to turn, set TURN_SPEED to 0.
steering off switch pin: Pin of the Arduino connected to the switch that turns on and off the steering of the car. See STEERING_OFF_SWITCH above.
use rc: If this option is checked, the car will read servo signals from a remote control receiver so that a remote control can be used to override the controls on the car.
rc speed pin: Wire this pin to the signal pin of the remote control receiver that outputs a signal from the Y axis of the remote control joystick. 2000 microseconds is forward, 1000 microseconds is backward. There is a deadzone from 1450 to 1550 microseconds.
rc turn pin: Wire this pin to the signal pin of the remote control receiver that outputs a signal from the X axis of the remote control joystick. 2000 microseconds is right, 1000 microseconds is left. There is a deadzone from 1450 to 1550 microseconds.
rc control pin: Wire this pin to the signal pin of the remote control receiver that outputs a signal from a switch on the remote control. Over 1600 microseconds turns on the remote override. Under 1400 microseconds gives control back to the car.
rc stop pin: Wire this pin to the signal pin of the remote control receiver that outputs a signal from a switch on the remote control. Over 1600 microseconds stops the car. Under 1400 microseconds gives control back to the car.
rc inactive until connected: If this option is checked, the car will be able to move without being connected to the remote control, from when the car is turned on, until the remote control is turned on. Once the remote connects, the car will stop if the remote control signal disconnects. If this option is unchecked, the car will not be able to move when it is first turned on until the remote control is turned on. If this option is checked, the car can be used without a remote control, if this option is unchecked the car can only be used with a remote control connected.
use stop switch: If this option is checked, the car will read a switch that can be used to stop the car.
stop pin: Wire this pin to a switch that can be used to stop the car. Turn on "use stop switch." The pin has a pull up resistor enabled.
stop pin high: If this option is checked, the car will stop when the stop pin is pulled high. If this option is unchecked, the car will stop when the stop pin is pulled low.
no stop until start: If this option is unchecked, the car will only go if the stop switch is in the go position. If this option is checked, the car will be able to move even if the stop switch is in the stop position, until the switch is moved to the go position then back to the stop position. Set it unchecked if you have a switch wired to the car. Set it checked if the pin is connected to a receiver for a remote stop switch and you want the car to be able to drive without the remote connected.
use on off buttons: If this option is checked, the car will read two buttons that can be used to turn the car on and off.
on button pin: Wire this pin to a button that can be used to turn the car on. Turn on "use on off buttons." The pin has a pull up resistor enabled.
off button pin: Wire this pin to a button that can be used to turn the car off. Turn on "use on off buttons." The pin has a pull up resistor enabled.
on off buttons active high: If this option is checked, the car will consider the on button pressed when the pin is pulled high. If this option is unchecked, the car will consider the on button pressed when the pin is pulled low. Note that both pins have pull up resistors enabled. Turn on "use on off buttons."
car wifi name: If you are using a microcontroller with wifi, it will create a wifi network named gbgcar[number]. The network name will update on the next reboot of the car. The number will be limited to values between 0 and 99. This number should be unique among cars that will be used near each other to avoid conflicts.
car wifi password: Use this to make a unique password for the wifi network created by the car. The password is gobabygo[number]. The password will update on the next reboot of the car. The number will be limited to positive integers with 9 or fewer digits.
Joystick Input: This box displays the position that the car thinks the joystick is in. Make sure that it matches the joystick on the car and if it doesn't, calibrate the joystick.
If "enable button ctrl" is on, then this box will be displaying the input caused by the buttons instead, and the title will change to say "Button Input."
Scaled Speed Target: This box displays the driving (vertical axis) and turning (horizontal axis) speeds that the car will accelerate up to. You can change the forward, backward, and turning speed settings to change the limits of these speeds. The edges of the box represent speeds of 1, which is the maximum speed.
Smoothed Speed to Drive: This box displays the driving (vertical axis) and turning (horizontal axis) speeds that the car would drive at, after the acceleration limit is applied. This display can be used to see how long the car will take to accelerate and decelerate.
Motor Signals: The motors are automatically turned off when the website connects, and will turn back on when the car is rebooted, but you can turn the motors on and off whenever you want while your computer is still connected using the button. This display shows the signals (microseconds of pulse of servo signal) sent to the left and right motors.