top of page

Search Results

285 results found with an empty search

  • Robot Arm

    An example of a robot arm. < Back Robot Arm An example of a robot arm. Program --- Robot Arm Program --- prog_vars = d/count 0 d/color 0 d/ledno 1 prog_vars. prog_start = print "Program Start" sledn 7 -- Setup arm buttons btp u1 svp a1 0 btp u2 svp a1 50 btp u3 svp a2 0 btp u4 svp a2 80 d/posa1 0 d/posa2 0 repeat 12 -> svp a1 /posa1 svp a2 /posa2 d250 inc /posa1 5 inc /posa2 5 "pos /posa1" repeat. repeat 12 -> svp a1 /posa1 svp a2 /posa2 d250 dec /posa1 5 dec /posa2 5 repeat. prog_start. prog_loop = sled /ledno /color inc /ledno inc /color any /ledno >= 7 -> /ledno 1 any /color >= 15 -> /color 0 prog_loop. prog_stop = print "Bye" prog_stop.

  • Any and All Statement Text Test

    This program tests the any and all statements with text values. The test values are all text. < Back Any and All Statement Text Test This program tests the any and all statements with text values. The test values are all text. Program --- all Statement Test Program no 1 This is an example program showing how to use all statements. --- prog_vars = d/pin1 0 d/pin2 1 d/float1 12.5 d/float2 3.141 d/int1 10 d/int2 0 d/pin_no 0 d/text1 "Jack" d/text2 "Jill" prog_vars. prog_start = print " -------------- " print "all statement test program" prog_start. prog_loop = -- Test 1 Should be TRUE ie "a" = "a" all "a" = "a" -> print "Test 1 TRUE CORRECT" else print "Test 1 FALSE WRONG" exitprog enda. -- Test 2 Should be FALSE ie "a" != "b" all "a" = "b" -> print "Test 2 TRUE WRONG" else print "Test 2 FALSE CORRECT" exitprog enda. -- Test 3 Should be TRUE ie /text1 is != /text2 all /text1 != /text2 -> print "Test 3 TRUE CORRECT" else print "Test 3 FALSE WRONG" exitprog enda. -- Test 4 Should be TRUE ie /text1 is "JacK" all /text1 = "Jack" -> print "Test 4 TRUE CORRECT" else print "Test 4 FALSE WRONG" exitprog enda. -- Test Should be TRUE ie "Jack" is = "JacK" all "Jack" = "Jack" -> print "Test 5 TRUE CORRECT" else print "Test 5 FALSE WRONG" exitprog enda. prog_loop. prog_stop = print "Bye" prog_stop.

  • Electronics

    Electronics This page will help you get started with electronics, specifically with the JackBord TOP. Below you will find the Using the TOP Guide , which will help you grasp the basics of electronics and how to use your TOP. You will also find a variety of videos to help you on your journey. Using the TOP Guide PDF Videos Learn how to use the TOP with our helpful videos! These introduce the basics of electronics and the JackBord TOP. Electronics Play Video Play Video 06:52 Using the TOP Part 1 The JackBord TOP helps you explore the JackBord and learn basic electronics. This is the first in a series of 4 videos about the JackBord TOP and basic electronics. In this video we cover: * What the JackBord TOP is * The parts of the TOP In part 2 we learn how to attach the TOP to the JackBord, connect the power supply, how jumper wires work and the basics of circuits and circuit diagrams. In part 3 we learn more about the JackBord, the TOP and basic electronics by doing practical tasks. Finally part 4 has more fun tasks and introduces some more electronics concepts like analog inputs. These videos are companions to the JackBord Journeys book "Using the TOP". You can find the other videos and the JackBord Journeys book by visiting www.JackBord.org and clicking on the Start here link on the top left of the homepage. 0:00 Using the TOP Part 1 00:42 Parts of the TOP 01:05 Power Supply Pins 01:26 Electronic Components 03:17 User Pins 04:00 Transistors 04:23 Terminal Block 04:48 Light Dependent Resistor LDR 05:03 Smart RGB LED 05:20 Light Emitting Diodes (LEDs) 05:44 RGB LED 06:00 Power Supply Pins for the JackBord Play Video Play Video 06:51 Using the TOP Part 2 The JackBord TOP helps you explore the JackBord and learn basic electronics. This is the second in a series of 4 videos about the JackBord TOP and basic electronics. In this video we cover: * Attaching the TOP to the JackBord * How jumper wires work * Introduce basic circuit concepts and circuit diagrams * Build a simple LED circuit In part 3 we learn more about the JackBord, the TOP and basic electronics by doing practical tasks. Finally part 4 has more fun tasks and introduces some more electronics concepts like analog inputs. These videos are companions to the JackBord Journeys book "Using the TOP". You can find the other videos and the JackBord Journeys book by visiting www.JackBord.org and clicking on the Start here link on the top left of the homepage. 0:00 Introduction 0:15 Attaching the TOP to the JackBord 0:50 Using Jumper Wires 1:30 Connecting the JackBord's Power Supply to the TOP 2:00 Connecting the Ground Wire 2:07 Connecting the 3V Wire 2:15 Connecting the 5V Wire 3:00 Jumper Wires and Circuit Diagrams 3:35 Some Basic Circuit Symbols 4:06 Using the Pin Numbers on the TOP 4:20 A Simple LED (Light Emitting Diode) Circuit Example 5:45 Summary Play Video Play Video 14:29 Using the TOP Part 3 The JackBord TOP helps you explore the JackBord and learn basic electronics. This is the third in a series of 4 videos about the JackBord TOP and basic electronics. In this video we complete some fun tasks like: * Turning an external LED on and off with the JackBord * Using pulse width modulation to control the brightness of an LED * Making a dynamic rainbow * Using buttons * Making a switch from scratch Finally part 4 has more fun tasks and introduces more electronics concepts like analog inputs. These videos are companions to the JackBord Journeys book "Using the TOP". You can find the other videos and the JackBord Journeys book by visiting www.JackBord.org and clicking on the Start here link on the top left of the homepage. 0:00 Using the TOP Part 3 00:20 Things You Will Need 00:50 Task 1: Control an External LED (Light Emitting Diode) 02:40 Task 2: Controlling the Brightness of the LED 03:35 Task 3: LED Rainbow 05:08 Task 4: Flashing Rainbow 05:22 Daisy-chaining Commands 07:20 Task 5: Button Press 08:51 Task 6: Button Release 10:12 Task 7: Make a Switch 10:59 Terminal Blocks Play Video Play Video 08:16 Using the Smart RGB LED on the JackBord TOP In this video we learn how to use the smart RGB LED on the JackBord TOP. Because the smart RGB LED has its own little computer built in you can do all sorts of things with it. For more information visit www.JackBord.org This videos tmt code is: tmt3NneN 0:00 Using the Smart RGB LED on the JackBord TOP 00:31 Some theory 01:09 Smart RGB LED 01:46 Connecting the smart RGB LED to the JackBord 02:27 Check your connection 02:49 Using the smart RGB LED 03:46 Turning the RGB LED off 03:56 Setting individual colors 05:20 Changing the LED brightness 06:01 Color table 06:08 How it works 06:50 Example programs 06:57 Demo program no 1 07:11 Demo program no 2 07:30 Summary Play Video Play Video 07:21 Using the RGB LED on the JackBord TOP In this video we learn how to use the RGB LED on the JackBord TOP. To visit the JackBord TOPs home page goto www.JackBord.org and type tmt4CKk at the search prompt and press Enter. For more information visit www.JackBord.org 0:00 Using the RGB LED on the JackBord TOP 00:33 Some Theory 01:14 RGB LED 02:10 Connecting the RGB LED to Port C on the JackBord 03:55 Check your Connection 03:56 Using the RGB LED 05:25 How RGB LED works 06:28 Summary

  • Combining any and all Statements Together Example

    In this example program we combine any and all statements to make more complex decisions possible in Octagon. < Back Combining any and all Statements Together Example In this example program we combine any and all statements to make more complex decisions possible in Octagon. Program --- Combining any and all statements example program --- prog_vars = d/pin1 0 d/pin2 1 d/pin_no 0 prog_vars. prog_start = print " -------------- " print "any and all combination example program" prog_start. prog_loop = -- Test 1 Should be FALSE ie /pin_no < 1 /pin1 0 /pin2 1 /pin_no 0 all /pin_no >= 1 /pin_no <= 5 any /pin1 = 0 /pin2 = 1 -> print "Test 1 TRUE WRONG" else print "Test 1 FALSE CORRECT" exitprog enda. -- Test 2 Should be FALSE ie /pin_no > 5 /pin1 0 /pin2 1 /pin_no 10 all /pin_no >= 1 /pin_no <= 5 any /pin1 = 0 /pin2 = 1 -> print "Test 2 TRUE WRONG" else print "Test 2 FALSE CORRECT" exitprog enda. -- Test 3 Should be FALSE ie all anys are false /pin1 1 /pin2 0 /pin_no 3 all /pin_no >= 1 /pin_no <= 5 any /pin1 = 0 /pin2 = 1 -> print "Test 3 TRUE WRONG" else print "Test 3 FALSE CORRECT" exitprog enda. -- Test 4 Should be TRUE ie all is ok and 1 any is true /pin1 0 /pin2 0 /pin_no 3 all /pin_no >= 1 /pin_no <= 5 any /pin1 = 0 /pin2 = 1 -> print "Test 4 TRUE CORRECT" else print "Test 3 FALSE WRONG" exitprog enda. -- Test 5 Should be TRUE ie all is ok and 1 any is true /pin1 1 /pin2 1 /pin_no 3 all /pin_no >= 1 /pin_no <= 5 any /pin1 = 0 /pin2 = 1 -> print "Test 5 TRUE CORRECT" else print "Test 5 FALSE WRONG" exitprog enda. prog_loop. prog_stop = print "Bye" prog_stop.

  • Learn

    Getting Started The recommended pathway for the JackBord activities is to complete the guides level by level, in the order of Electronics, Programming, Sensors, Control, then Robotics. For example, you would do all level 1 subjects before moving on to any of the level 2 subjects. However, this is not an enforced rule - feel free to jump ahead if the content is too easy, you want to learn something specific for a project, or are looking for a referenced activity. User Guides Here are the instructional guides explaining how to use your JackBord and its components. View More Student Guides For Learners: These guides will help carry you through the different activities and concepts you learn along the way. Starting from level 1, a complete beginner, to level 8, university level. Teacher Guides For Teachers: These guides will help you teach the content in the classroom. They provide a little bit more information and context which can help you, and your students, understand the how, what, and why. View More Projects These are standalone projects submitted by our team and users. You will find tons of cool projects to work on and impress friends and family! View More Subject Codes Each subject has a code that is 4 digits. The first 2 digits are the subject code, and the fourth digit is the level. For example - 1001 is Electronics level 1, and 1002 is Electronics level 2. For some subjects, the 3rd number is a sub-subject. For example - 2001 is coding level 1, and 2011 is programming level 1.

  • Octagon Long Argument Test

    This is a test program for the task arguments in Octagon. < Back Octagon Long Argument Test This is a test program for the task arguments in Octagon. Program --- Hi Octagon --- prog_vars = d/count 1 prog_vars. prog_start = print "My 1st Program" pticks 5 /count 0 rdbg 8 cdbg 5 prog_start. prog_loop = print "Hi from Octagon. /count" inc /count repeat 5 -> print "REP1 count /count" tg a1|tg a5|d1 1 repeat 5 -> print "REP2 count /count"|tg d1|tg a1|tg a5|inc /count -- repeat 5 -> tg d1|tg a1|tg a5 -- repeat 5 -> tg a1 repeat 5 -> tg a1|print "1>Time to quit count /count end" repeat 5 -> print "2>Time to quit count "|tg a5 tg d1 -- Works repeat 5 -> tg a5|inc /count|print "3>Time to quit count /count end" -- Works repeat 5 -> print "4>Time to quit count /count end" tg a5 repeat. -- Arg too long repeat 5 -> tg a5|inc /count|print "3>VERY LONG ARG Time to quit count /count"|tg d2 -- Arg too long at end. repeat 5 -> tg a5|tg d2|inc /count|print "3>VERY LONG ARG Time to quit count /count AT END" -- DOES NOT WORK repeat 5 -> print "5>Time /count end"|tg a1 repeat. -- Does NOT WORK repeat 5 -> print "6>Time to quit count /count end"|tg a5 tg d2 repeat 4 -> print "this is repeat 4" tg a1 repeat. -- any /count >= 15 -> print "Time to quit count /count end"|exitprog any /count >= 15 -> print "7>Time to quit count /count end"|tg a5|exitprog prog_loop. prog_stop = print "Prog STOPPED!" prog_stop.

  • SPI Commands

    Command Guide < Back SPI Commands spion - Enable the SPI system Purpose Turn on the SPI system. Syntax spion spioff - Disable the SPI system Purpose Turn off the SPI system. Syntax spioff spipins - Set the port pins to use for the SPI system Purpose Allows the pins to be used for the SPI system to be set. Syntax spipins SCK MISO MOSI CS Arguments SCK Port pin to be used for the SCK pin. MISO Port pin to be used for the MISO pin. MOSI Port pin to be used for the MOSI pin. CS Port pin to be used for the CS pin. Examples spipins c2 c3 c4 c5 Setup port C pins 2 to 5 to be the SPI port pins. Notes The port B and E pins cannot be used for SPI. spot - Set the Resistance value of the MCP4161 Digital Potentiometer Purpose Set the Resistance value of the MCP4161 Digital Potentiometer which is connected to the SPI port. Syntax spot value Arguments value Digital pot value between 0 and 255. Examples spot 50 Notes Connection to JackBord SPI Port on Port C. vspi - Display the status of the SPI system Purpose Displays the status and basic settings of the SPI port system. Syntax vspi

  • Team

    Aaron Jordan, Managing Director Aaron has stepped up to lead JackBord in its next stage of development. He has a deep understanding of technology trends and a wide network of contacts Aaron is a senior manager in the public sector leading transformational change in Land Information NZ. Aaron played a key role in the redesign of the students JackBord website and is currently leading the redesign of some key elements of the JackBord solution. In his spare time he and son are enthusiastic users of the JackBord system aaron@jackbord.works Jack Penman, Founder and Chief Designer With a passion for creating new things and pushing the boundaries in everything he does, Jack enjoys working with the amazing team at JackBord and the students he is lucky enough to teach. He has learnt to understand and direct his gifts of ADHD and Dyslexia into experimenting, creating and teaching to solve the problems and challenges of today and tomorrow. Apart from constantly coming up with new ideas and improvements, Jack manages hardware design, software engineering, documentation, education. When not creating wonderful new things, Jack loves to teach electronics and robotics (especially via JackBord) to kids of all ages, play the cello and let off any surplus energy through karate. He is committed to supporting his two boys into a world of opportunity. Jack recently attended TEDx Kapiti as a speaker, click here to watch his talk! jack@jackbord.works Meet the Team As a start up we are a relatively small team who have worked incredibly hard since 2020 (Jack since 2000) to bring Jack's vision to young learners, parents and educators. We are all committed to making a difference for educators, and young learners of all ages and abilities by encouraging them into the world of STEM through the authentic learning experiences of JackBord. We are about to reach out for talented software engineers, educators, administrators and marketing personnel who share our vision and passion. If you are interested contact Aaron Geoff Fellows, Quality Control, Administration With a background in ICT and Consulting, Geoff has provided his array of skills, experiences and networks helping get JackBord off the ground. He keeps active testing product, systems and user experience. A man of many interests, Geoff enjoys sailing, motorcycling, helping others and spending time with his grandchildren. geoff@jackbord.works Chris Manning, Business Development Chris has a background in sales and business development for multiple kiwi startups. He loves what JackBord can do for young learners of all ages and abilities, and is eager to help them become tomorrows innovators, scientists and engineers. In his spare time, he enjoys rock climbing, gardening and playing in his band, Flaxxies.. chris@jackbord.works

  • RC Servos

    RC Servos What is an RC Servo? An RC Servo is an electric motor with a gearbox and a shaft. The shaft can be made to rotate at an angle of 0 to 180 degrees. The shaft generally has an attachment, such as an arm, and can be moved at an angle of 0 degrees through to 180 degrees. The position of the shaft is controlled using a pulse width modulation (PWM) signal sent to the servo from the JackBord. As a quick summary, pulse width modulation allows us to control the amount of energy that a power supply (the JackBord) gives to a device (the servo) by essentially turning the power supply on and off really really fast. The diagram to the right shows how the pulse width affects the position of the shaft. Most RC Servos come with three wires: signal, power and ground. These are shown below for the more common models. The ground wire is almost always brown or black, whilst the power supply wire is red and in the centre. The signal wire is usually orange. Notes and Caution RC Servos need 5V power NEVER MANUALLY TURN THE SHAFT as this could destroy the servo Be careful not to overload the servo Connecting to the JackBord To attach the RC Servos to the JackBord, follow the instructions below or one of our videos at the bottom of the page. Place the servo on the JacKano mounting plate, threading the wires through the hole in the middle to the back, as pictured below. Make sure that the long, straight edge of the mounting plate is facing towards you, and the shaft is closest to the left-hand side. When they are lined up correctly, secure the servo to the plate by using the two 8mm M3 bolts and nuts. Line up the holes on the long, straight edge of the mounting plate with the holes at the front of the JackBord, by Port B. Make sure that the shaft is facing up. Secure in place with a bolt in the middle hole. It should look like the one pictured below. On the JackBord, between the POWER Port and Port A, attach the Dual Servo Adapter to the edge using an M4 nut and bolt. As shown in the diagram below, we are going to use jumper wires to connect the RC Servo to the Dual Servo Adapter, and the Dual Servo Adapter to the JackBord. Today we’ll just be connecting Servo 1. Connect the wires from the servo to the dual adapter, lining up the black wire with the green pin, the red wire with the red pin, and the orange wire with the white pin. Then, use jumper wires to connect one of the red pins on the servo adapter to a 5V pin on the POWER Port on the JackBord. Connect a green ground pin from the adapter to a G pin on the POWER Port to ground it. Finally, connect the white pin on the adapter to Port A Pin 1. Once your servo is connected it should look something like this: If you have not done so already, create a profile and adopt the JackBord. Go to the dashboard and open the CMD page. As mentioned earlier, the shaft of the servo can move through an angle between 0 and 180 degrees. To set the servo’s shaft angle we use the svp command: svp [pin] [angle] Where: [pin] is the port pin to which the RC servo is connected to [angle] is the desired shaft angle from 0 to 180 degrees Firstly we need to set the servo’s shaft angle to 0 degrees. In the CMD line, type and enter the following command: svp a1 0 This will move the shaft to the 0 degrees angle. If your servo’s shaft does not move, this simply means that it’s already in that position. When the servo’s shaft has been set to 0 degrees, take one of the small white arms that comes with the kit and attach it to the servo, as shown below. It needs to be pointing to the left, at the 9 o’clock position, and should simply click on. Don’t worry if it’s not exactly aligned, do not forcibly turn it into position. The svp command will set the angle of the servo and leave it there. To have the shaft move between two angles we can use the svs command. The format of the command is: svs [pin] [start] [end] [delay] Where: [pin] is the port pin to which the RC Servo adapter is connected [start] is the desired start angle from 0 to 180 [end] is the desired stop angle from start to 180 [delay] is an optional delay in milliseconds When the servo shaft reaches the end angle, it will automatically return to the start angle. For example, if we wanted to have the servo’s shaft move over the angle of 90 to 125 degrees, we would type in the command line: svs a1 90 125 We can also add a delay to this command so that after each 1 degree step, the servo will wait for the specified delay. Taking the above example, we could add a 100ms delay between steps. For example: svs a1 90 125 100

  • USER LED Colour Control

    This program controls the color of the USER LED using a variable resistor. Turning the knob will change the color of the USER LED. In this version the variable resistor POT1 on the JackBord TOP is connected to port pin B1 on a block 2 JackBord. For a block 3 JackBord use port Pin A1. < Back USER LED Colour Control This program controls the color of the USER LED using a variable resistor. Turning the knob will change the color of the USER LED. In this version the variable resistor POT1 on the JackBord TOP is connected to port pin B1 on a block 2 JackBord. For a block 3 JackBord use port Pin A1. Program --- Control the Color of the USER LED using a variable resistor. Turning the knob will change the color of the USER LED. --- prog_vars = d/count 0 prog_vars. prog_start = pclear print "Program Start" gvr b1 0 15 l1 prog_start. prog_loop = -- main program loop print "Count /count" inc /count any /count >= 1000 -> exitprog prog_loop. prog_stop = print "Bye" prog_stop.

  • PIR Sensor

    < Back PIR Sensor Program --- Pir sensor program --- prog_vars = d/senout 0 d/prev 0 prog_vars. prog_start = bms 0 gt a1 prog_start. prog_loop = -- main program loop /senout /a1 any /prev = /senout -> patcat else print "out /senout" enda. any /a1 = 0 -> bms 50 any /a1 = 1 -> bms 0 /prev /senout prog_loop. prog_stop = print "Bye" prog_stop.

  • Motor and Drive Commands

    Command Guide < Back Motor and Drive Commands allstopon - STOP ALL MOVEMENT Purpose This stops all movement of the robot and puts it in a safe mode. Syntax allstopon Notes This command overrides ALL other commands that would normally be able to induce some kind of movement in the robots drive system. The ONLY way to leave all stop on mode is to run the allstopoff command. allstopoff - Leave all stop on mode. Purpose This causes the robot to leave all stop on mode. Syntax allstopoff bmd - The direction of BOTH motors Purpose Allows the direction of movement of both drive motors to be set at the same time. Syntax bmd dir Arguments dir 0 = Forwards 1 = Reverse. bms - Set the speed of both drive motors Purpose This sets the speed of both drive motors to the same value. Syntax bms value Arguments value -100 to 100 Where: -100 full reverse 0 stop 100 full forward Pushers No Returns Nothing Examples bms 0 STOP bms 50 Half forward bms -50 Half back Channels & Vars Channel 150 both motor speed 160 left motor speed 170 right motor speed Notes This is for robots with motor drives. cbst - Cold start boost for the drive motors Purpose This is an extra duty cycle added to the motors speed when its starting from stand still. Syntax cbst value Arguments value 0 to 1000 This is a duty cycle. Examples cbst 100 Set to 100 Notes This is for robots with motor drives. dmlp - Set Left Drive Motor Esp32 Pin no Purpose This is the pin on the esp32 to use for the left drive motors pwm. Syntax dmlp pin Arguments pin The pin no on the esp32 to use. Notes This is for robots with motor drives. Don’t use unless you know what you are doing. dmrp - Set Right Drive Motor Esp32 Pin no Purpose This is the pin on the esp32 to use for the right drive motors pwm. Syntax dmrp pin Arguments pin The pin no on the esp32 to use. Notes This is for robots with motor drives. Don’t use unless you know what you are doing. dslimit - Disable Steering Limit Checking Purpose This allows the steering limit switch checking to be enabled and disabled on robots using a linear actuator with limit switches for steering. Syntax dslimit value Arguments value 0 = Don’t disable 1 = Disable Pushers No Returns Nothing Examples dslimit 0 Don’t disable steering limit switches dslimit 1 Disable steering limit switches Notes This should only be used for testing. faster - Pulse the drive motors forwards a little. Purpose This will briefly pulse both drive motors in the forwards direction a little and then turn them off. Syntax faster Examples faster Move robot forwards a little left - Pulse the robot to the left Purpose On a robot with motor drives fitted this command will cause the robot to turn a little to the left. Syntax left Examples left Turn slightly to the left. Notes This is for robots with motor drives. lmd - Set Left Drive Motors Direction Purpose Set the direction of travel of the left drive motor. 0 = forward Syntax lmd dir Arguments dir 0 = forward 1 = reverse 1 = reverse lmo - Set Left Drive Motors Offset Purpose This is added to the motors speed at a low level to compensate for differences in the motors. Syntax lmo offset Arguments offset The duty cycle offset between 0 and 1000. lms - Set the speed of the left drive motor Purpose This sets the speed of the left drive motor. Syntax lms value Arguments value -100 to 100 Where: -100 full reverse 0 stop 100 full forward Pushers No Returns Nothing Examples lms 0 STOP lms 50 Forward half lms -50 Back half Channels & Vars Channel 150 both motor speed 160 left motor speed Notes This is for robots with motor drives. lmt - Left motor start threshold Purpose This is the min speed value at which the left motors wheels will turn. Range 0 to 100. Syntax lmt value Arguments value 0 to 100 Examples lmt 25 Channels & Vars Channel 165 Notes This is for robots with motor drives. right - Pulse the robot to the right Purpose On a robot with motor drives fitted this command will cause the robot to turn a little to the right. Syntax right Examples right Turn slightly to the right. Notes This is for robots with motor drives. rmd - Set Right Drive Motors Direction Purpose Set the direction of travel of the right drive motor. 0 = forward Syntax rmd dir Arguments dir 0 = forward 1 = reverse rmo - Set Right Drive Motors Offset Purpose This is added to the motors speed at a low level to compensate for differences in the motors. Syntax rmo offset Arguments offset The duty cycle offset between 0 and 1000. rms - Set the speed of the right drive motor Purpose This sets the speed of the right drive motor. Syntax rms value Arguments value -100 to 100 Where: -100 Full reverse 0 STOP 100 Full forwards Examples rms 0 rms 50 rms -50 Channels & Vars Channel 150 both motor speed 170 right motor speed Notes This is for robots with motor drives. rmt - Right motor start threshold Purpose This is the min speed value at which the right motors wheels will turn. Range 0 to 100. Syntax rmt value Arguments value 0 to 100 Examples rmt 25 Channels & Vars Channel 175 Notes This is for robots with motor drives. rstdv - Reset the motor drive system Purpose Resets the drive system to the way it is when the JackBord is turned on. Syntax rstdv Examples rstdv sbms - Set the speed of both drive motors to different values Purpose This sets the speed of both drive motors to the different values in the same command. Syntax sbms left right Arguments left Speed of the left motor. -100 to 100 Where: -100 full reverse 0 stop 100 full forward right Speed of the right motor. -100 to 100 Where: -100 full reverse 0 stop 100 full forward Pushers No Returns Nothing Examples sbms 0 0 Stop sbms 25 50 Left turn sbms 50 25 Right turn sbms 20 20 Forwards Channels & Vars Channel 150 both motor speed 160 left motor speed 170 right motor speed Notes This is for robots with motor drives. sdmct - Set the JackBord drive motor controller type Purpose Set the type of motor being used on the robots drive system. Options are: Type Description 0 NO motor drive installed. 1 Normal MOSFET mode 2 DRV8833 H-bridge 3 L298N H-bridge 4 BTS7960B H-bridge 5 Mobility scooter drive using MCP4161 Digital Potentiometer 6 Single Front Wheel Drive on, front. Connected to the L298 H-bridge Output 2. Syntax sdmct value Arguments value Drive type type, see above. Examples sdmct 2 Set DRV8833 H-bridge type. Notes This is for robots with motor drives. sdtur - s et default turn urgency Purpose Set the default turn urgency Syntax sdtur value Arguments value 1 to 50 Examples sdtur 10 Set default turn urgency to 10 setstmax - Set the Maximum Safe Operating Speed for the robot Purpose This allows a safe maximum speed to be specified and it will be enforced automatically. Syntax setstmax speed Arguments speed -100 to 100 Where: -100 full reverse 0 stop 100 full forward Notes This is for robots with motor drives. The limit set here is automatically enforced by the drive system. setstmin - Set the Minimum Safe Operating Speed for the robot Purpose This allows a safe minimum speed to be specified and it will be enforced automatically. Syntax setstmin speed Arguments speed -100 to 100 Where: -100 full reverse 0 stop 100 full forward Notes This is for robots with motor drives. The limit set here is automatically enforced by the drive system. slower - Pulse the drive motors backwards a little. Purpose This will briefly pulse both drive motors in the reverse direction a little and then turn them off. Syntax slower Examples slower Move robot backwards a little ssv - Set Speed Step Value Purpose Set the amount by which the speed of the drive motors will be changed by other commands such as turn. Syntax ssv value Arguments value 1 to 50 Pushers No Returns Nothing Examples ssv 10 Set to 10 Notes This is for robots with motor drives. straight - Drive in a straight line Purpose Causes the robot to drive in a straight line. Syntax straight stop - Stop both of the robots drive motors Purpose Use this to bring the robot to a halt. Syntax stop Examples stop Halt the robot Notes This is for robots with motor drives. strpw - Set the linear actuator pulse width in milli secs Purpose This sets the width of the pulses used to move linear actuators attached to the JackBord via an L298 H-bridge. The shorter the pulse the slower and more precise the control is. Syntax strpw value Arguments value Pulse width in milli-seconds between 1 and 1000ms. Examples strpw 200 Set the pulse width to 200ms Notes This is for robots with motor drives. strtype - Set the steering type Purpose Set the type of steering being used on the robots drive system. Options are: Type Description 0 Normal differential drive 1 Rack and pinion steering 2 Single front steering wheel 3 L298 Linear Actuator ie Beach Robot. On L298 h-bridge motor no 1. Syntax stur value Arguments value Steering type, see above. Pushers No Returns Nothing Examples strtype 0 Set differential steering Notes This is for robots with motor drives. stur - Set turn urgency Purpose This is the increment used when turning. The higher the value the more aggressive turning will be. Syntax stur value Arguments value Turn urgency 1 to 500. This is a duty cycle. Pushers No Returns Nothing Examples stur 200 Set the turn urgency to 200 Notes This is for robots with motor drives. tgdir - Toggle the direction of travel. Purpose This toggles the current direction of travel of the drive motors. Syntax tgdir tsf - Set turn speed factor Purpose This is the increment used when turning. The higher the value the more aggressive turning will be. Syntax tsf value Arguments value 1 to 50 Pushers No Returns Nothing Examples tsf 10 Set the turn speed factor to 10. Notes This is for robots with motor drives. turn - Turn the robot left or right Purpose Provides a means of steering a robot using values in the range: -100 Full left turn 0 Straight 100 Full right turn The exact limits for left and right are set using the minleft and minright commands. Syntax turn value Arguments value -100 Full left turn 0 Straight 100 Full right turn Examples turn 0 Go straight turn -10 Soft left turn turn 90 Hard right turn Channels & Vars Channel 153 Notes This is for robots with motor drives. vd View - drive system status Purpose View the status of the motor drive system. Syntax vd

  • Bumper Robot

    This program is for the bumper robot. It has a front bumper connected to port A pin A1 and a back bumper connected to port A pin A2. When the robot collides with an object on the front bumper, it will first of all go backwards and secondly it will do a slight turn so as to avoid the object in the future. Likewise when it hits an object in the rear it will move forwards and do a slight turn. < Back Bumper Robot This program is for the bumper robot. It has a front bumper connected to port A pin A1 and a back bumper connected to port A pin A2. When the robot collides with an object on the front bumper, it will first of all go backwards and secondly it will do a slight turn so as to avoid the object in the future. Likewise when it hits an object in the rear it will move forwards and do a slight turn. Program --- Bumper Robot Program This program is for the bumper robot. It has a front bumper connected to port A pin A1 and a back bumper connected to port A pin A2. --- prog_vars = -- Keep track of the number of bumps. d/front 0 d/back 0 -- Track to no of times we have run. d/count 0 prog_vars. prog_start = print "Bumper Robot Program Setup" -- Reset the buttons rstb -- Setup the front bumper. -- Go back and turn left. btp a1 bms -50|lms -10|d500|lms -50|inc /front -- Setup the back bumper. -- Go forward and turn right. btp a2 bms 50|rms 10|d500|rms 50|inc /back -- Set both motors to forwards at 50 bms 50 prog_start. prog_loop = -- main program loop -- Increase the /count by 1 inc /count -- Check if we shoukd exit. any /count > 1000 -> exitprog prog_loop. prog_stop = print "Bye Front /front Back /back" -- Clear the buttons rstb -- Stop the robot stop prog_stop.

  • Smart Led Example

    This program will use the sled command in two ways. For this program you need a strip of 4 smart LEDs connected to port pin C5 of the JackBord. This program will set 4 LEDs to colors 1, 2, 3 and 4 respectively and do it live, so the LEDs will update as the program runs. Note there is a 1 second delay between each LED being set. In the second test the LEDs are set to the same colors with the same 1 second delay, except that we added the 0 at the end of each sled command. This tells the JackBord NOT to update the LEDs in real time and instead they all get turned on in one go at the end when the uled command is run. This shows the effect of the uled command. The program will run a few times and stop. < Back Smart Led Example This program will use the sled command in two ways. For this program you need a strip of 4 smart LEDs connected to port pin C5 of the JackBord. This program will set 4 LEDs to colors 1, 2, 3 and 4 respectively and do it live, so the LEDs will update as the program runs. Note there is a 1 second delay between each LED being set. In the second test the LEDs are set to the same colors with the same 1 second delay, except that we added the 0 at the end of each sled command. This tells the JackBord NOT to update the LEDs in real time and instead they all get turned on in one go at the end when the uled command is run. This shows the effect of the uled command. The program will run a few times and stop. Program --- Smart Led Example Program No 1 --- prog_vars = d/count 0 prog_vars. prog_start = pclear print "Setup Program" -- Setup 4 smart LEDs sledn 4 prog_start. prog_loop = -- Update the LEDs as we go. "Test 1 Update live" sledoff sled 1 1 d500 sled 2 2 d500 sled 3 3 d500 sled 4 4 d500 sledoff -- Update the LEDs at the end. "Test 2 Update at end." sled 1 1 0 d500 sled 2 2 0 d500 sled 3 3 0 d500 sled 4 4 0 d500 -- Update ALL LEDs in one go. usled dly 1000 sledoff inc /count any /count >= 3 -> exitprog prog_loop. prog_stop = print "Bye" sledoff prog_stop.

  • Trigonometry: Calculate the Area of a Triangle

    Trigonometry: Calculate the Area of a Triangle. Use of Sine function to find area of triangle. This program uses radians for the input angles. < Back Trigonometry: Calculate the Area of a Triangle Trigonometry: Calculate the Area of a Triangle. Use of Sine function to find area of triangle. This program uses radians for the input angles. Program --- Trigonometry: Calculate the Area of a Triangle Use of Sine function to find area of triangle This program uses radians for the input angles. By Geoff Fellows --- prog_vars = d/length1 0.0 d/length2 0.0 d/degrees_angle 0.0 d/radians 0.0 d/area 0.0 d/raw_sine 0.0 d/pi 0.0 prog_vars. prog_start = "Calculate the area of a triangle using the Sine function" "You need the length of two sides and the angle joining them" div 22 7 -> /pi -- the input sine function expects radians not degrees -- which means we will convert the angle to radians prog_start. prog_loop = "Enter length one and two and the angle" getline -> /length1 getline -> /length2 getline -> /degrees_angle "/length1 /length2 /degrees_angle" -- convert degress to radians div /degrees_angle 180 -> /radians mul /radians /pi -> /radians "/degrees_angle degrees = /radians radians" sin /radians -> /raw_sine mul 0.5 /length1 /length2 /raw_sine -> /area "=================================" "Print the area of the triangle is /area" exitprog prog_loop. prog_stop = print "Good bye" prog_stop.

  • Weather Station

    < Back Weather Station Program --- Wind vane A1 Anno A5 Rain B2 --- prog_vars = d/count 0 d/air_temp 0.0 d/rh 0 d/press 0.0 d/light 0 d/wind_speed 0.0 d/wind_dir 0 d/at_arc 0 d/display_update_timer 0 prog_vars. prog_start = pclear ptl 10 0 ^ts=35^ "Live Weather" i2con sctp a5 gvr a1 360 0 sctp b2 scgoff 38 1 574.0 -- Create a new Dataset for the Data newds "met 12 Oct 2021" -- Set the chans to include dslc 1 dslc 5 dslc 7 dslc 35 dslc 36 dslc 37 dslc 38 -- Set the log interval to 5mins slog 300 -- Start logging lgon setuct 1 25 setuct 2 5 -- Set the light update thresh to 500 setuct 35 500 -- Quit button pb 700 10 ^n=Quit^p=exitprog^ "Setup Done" prog_start. prog_loop = -- main program loop any /display_update_timer > 100 -> update_display "/display_update_timer" /display_update_timer 0 else inc /display_update_timer enda. prog_loop. update_display = -- Display the readings -- Air temp round /36 2 -> /air_temp pg 10 125 /air_temp ^id=airt^ts=24^tc=red^w=200^n=Air T^min=-10^max=40^ ptl 40 220 ^ts=20^tc=red^ "Air T /air_temp" -- RH /rh /37 pvl 250 150 /rh ^id=rh^lw=10^lc=blue^ ptl 240 220 ^id=rht^ts=20^tc=blue^ "RH /rh" -- Light mapi 0 50000 0 200 /35 -> /light sub 200 /light -> /light pvl 440 150 /light ^id=srad^lw=10^lc=yellow^ ptl 440 220 ^ts=20^tc=yellow^ "Light /light /35" -- Wind Direction sub 360 /a1 -> /wind_dir pal 150 420 80 /wind_dir ^lw=10^lc=cyan^ ptl 150 500 ^ts=20^tc=cyan^ "Dir /wind_dir" update_display. prog_stop = print "Bye" prog_stop.

  • Basic Soil Moisture Meter

    This program uses a capacitive soil moisture probe connected to pin a1 of the JackBord to measure the moisture in some soil and display the reading using the USER LED on the JackBord. The color of the LED will match the soil moisture reading as follows: >= 90% Green >= 75% Cyan >= 50% Navy >= 25% Orange >= 10% Magenta >= 0% Red < Back Basic Soil Moisture Meter This program uses a capacitive soil moisture probe connected to pin a1 of the JackBord to measure the moisture in some soil and display the reading using the USER LED on the JackBord. The color of the LED will match the soil moisture reading as follows: >= 90% Green >= 75% Cyan >= 50% Navy >= 25% Orange >= 10% Magenta >= 0% Red Program --- Basic Soil Moiture Meter Program Get readings from the sensor on pin a1 and scale them between the min and max calibration values to get a reading between 0 and 100. Display them using the JackBords USER LED. That wy you dont need a web browser to use the meter. --- prog_vars = d/count 0 -- Calibration values d/min_value 6 d/max_value 56 -- The final soil moisture reading d/soil_moisture 0 d/moisture_color 0 prog_vars. prog_start = pclear print "Program Start" -- Setup the sensor on pin a1 gvr a1 100 0 prog_start. prog_loop = -- main program loop -- Get a fresh reading get_soil_moisture -- Update the USER LED's color display_moist_color /soil_moisture print "/count a1 /a1 Soil moisture /soil_moisture" -- Check if we have done 100 readings inc /count any /count >= 100 -> exitprog -- New reading every second d1000 prog_loop. get_soil_moisture = -- Get the reading from a1 and scale it mapi /min_value /max_value 0 100 /a1 -> /soil_moisture get_soil_moisture. display_moist_color /moisture 0 = -- Use ant command to shoose color to display. -- >= 90% Green -- >= 75% Cyan -- >= 50% Navy -- >= 25% Orange -- >= 10% Magenta -- >= 0% Red -- NO Reading Dim white ant /moisture -> >= 90 -> l1 8 >= 75 -> l1 12 >= 50 -> l1 13 >= 25 -> l1 5 >= 10 -> l1 14 >= 0 -> l1 3 -> l1 1 ant. display_moist_color. prog_stop = print "Bye" prog_stop.

  • Auto Booting/Running a Program

    The setboot command is used to set one of the programs on the JackBord to run when the JackBord is turned on. < Back Auto Booting/Running a Program The setboot command is used to set one of the programs on the JackBord to run when the JackBord is turned on. Program Setting a Program to Run at Boot The command format is: setboot prog_number Where prog_number is the number of the program we wish to run at boot, ranging from 1 to 10. To set program number 5 to run at boot type: setboot 5 The next time the JackBord starts it will run program number 5. You can check which program is set to auto run using the vp program status command. Once you have set the boot program you can test it using the reboot command to re-start the JackBord, if all is well the selected program should run. Clearing a Set Boot Program Use the setboot command with program number 0 eg: setboot 0 This will stop the currently running boot program and clear it so no program will run automatically on the next boot. Running the Boot Program Just Once To run the boot program just once, ie because it just needs to configure the robot, you should place an exitprog command at the bottom of the prog_loop task. That way the program_loop will only run once and the program will exit. Notes: You cant run other programs while the boot program is running, this is because the JackBord can only run one program at a time. You can use the command line and most of the commands while the boot program is running.

  • Korahs Random Lights

    This program will randomly flash 5 LEDs attached to Port C using a random number to decide which LEDs are lit. < Back Korahs Random Lights This program will randomly flash 5 LEDs attached to Port C using a random number to decide which LEDs are lit. Program --- Korahs Random Lights Program This program will randomly flash 5 leds attached to port C using a random number to decide which LEDs are lit. --- prog_vars = -- Holds the random number d/random 0 d/count 0 prog_vars. prog_start = print "Korahs Random Lights Program" /random 0 prog_start. prog_loop = -- main program loop -- Increase the /count by 1 inc /count -- Get a new random number between 0 and 6. rand 0 6 -> /random print "Count /count rand no /random" -- Use the ant the determine which LED we should light -- up based upon the random number. -- A 6 will turn them all off. ant /random -> = 1 -> c1 1 = 2 -> c2 1 = 3 -> c3 1 = 4 -> c4 1 = 5 -> c5 1 -> coff ant. -- Check if we shoukd exit. any /count > 1000 -> exitprog prog_loop. prog_stop = print "Bye" prog_stop.

  • Advanced Mine

    This program assumes that the mines trigger switches are on pins A2 & A3. When one of the switches is triggered we will either add or remove health from the robot. The RGB LEDs are connected to Port C: RED C1 GREEN C2 BLUE C3 The color values for the /color variable are: The port C values say which port C pin will be on for a given color. Color no 0 off 1 Red. C1 2 Green C2 3 Blue C3 4 Cyan C2 C3 5 Purple. C1 C3 6 Yellow C1 C2 < Back Advanced Mine This program assumes that the mines trigger switches are on pins A2 & A3. When one of the switches is triggered we will either add or remove health from the robot. The RGB LEDs are connected to Port C: RED C1 GREEN C2 BLUE C3 The color values for the /color variable are: The port C values say which port C pin will be on for a given color. Color no 0 off 1 Red. C1 2 Green C2 3 Blue C3 4 Cyan C2 C3 5 Purple. C1 C3 6 Yellow C1 C2 Program --- Advanced Mine Program --- prog_vars = d/triggers 0 d/health 10 d/trig_result 0 d/flashes 0 d/start_time 0 d/run_time 0 prog_vars. prog_start = "Mine Start" /start_time /uptime -- Setup the trigger for pin A2 & A3 btp a2 do_boom btp a3 do_boom prog_start. prog_loop = -- Calc run time sub /uptime /start_time -> /run_time -- Check if we are dead >>>>>>>>>>> any /health <= 0 -> -- Dead "XXXXXX WE DIED XXXXX" repeat 10 -> tg c1|d50 exitprog enda. -- Exit any /triggers > 10 -> exitprog any /run_time >= 60 -> "Time up"|exitprog prog_loop. do_boom = --- The mine is triggered work out the health or damage. --- /flashes 0 -- Get a new random number between -6 and 6. rand -6 6 -> /trig_result -- Update the health var add /health /trig_result -> /health -- Check for negative health, if so flash 4 times. any /trig_result < 0 -> /flashes 4 inc /triggers print "Trig /triggers TR /trig_result Health /health flash /flashes" set_color /health /flashes do_boom. set_color /color 0 /led_flash 0 = --- Colors 0 off 1 Red 2 Green 3 Blue 4 Cyan c2 c3 on 5 Magenta c1 c3 6 . Yellow c1 c2 --- -- All c off coff -- Get abs version of color abs /color -> /color repeat /led_flash -> -- Set the color on Port C ant /color -> = 1 -> c1 1 = 2 -> c2 1 = 3 -> c3 1 = 4 -> c3 1|c4 1 = 5 -> c1 1|c3 1 = 6 -> c1 1|c2 1 -> c1 1|c2 1 ant. d250 -- any /led_flash > 2 -> d250 -- any /led_flash < 2 -> d1000 coff repeat. set_color. prog_stop = print "Bye" -- clear the buttons rstb prog_stop.

bottom of page