top of page

Search Results

255 items found for ""

  • Programs

    Programs These are some example programs to get you going! Add Numbers View Age Calculator View All Statement Test Example View Any Statement Example View Any and All Statement Text Test View Basic 90-Degree Turn View Advanced Mine View Age Calculator Extended View Ant Command Test View Any and All Numbers Test View Auto Booting/Running a Program View Basic Capacitive Soil Moisture Sensor View 1 2 3 4 5 1 ... 1 2 3 4 5 6 7 8 ... 8

  • Sensors

    Sensors BME280 Temperature, Relative Humidity and Pressure This sensor allows you to measure air temperature, relative humidity and atmospheric pressure. Learn more Colour Sensor Module The TCS34725 colour module allows the JackBord to determine the colour of a surface or object placed near the sensor. Learn more Infrared Obstacle Avoidance This unit will detect the presence of objects at distances of between about 2cm to 30cm. Learn more RGB Colour Detects the RGB (red, green and blue) colours of an object. Learn more Sound Detection Use the simple sound detector module to determine if there is sound above a pre-set threshold. Learn more Capacitive Soil Moisture This analog capacitive soil moisture sensor measures soil moisture by detecting the change in capacitance that stems from the moisture content of the surrounding soil. The output of the sensor is a voltage between 0V and 3V, with 0V being very dry soil and 3V being wet soil. Learn more HC-SR505 Mini PIR Infrared Motion HC-SR505 is an infrared module which detects the movement of a person or animal, at distances of up to 3m. Learn more MQ4 Methane Gas The MQ4 module allows the JackBord to detect methane gas at concentrations from 300 ppm to 10,000 ppm. The reading output from the sensor is an analog voltage from 0.1V to 4.5V. There is a digital output as well, pin DO, which is normally high and goes low when gas is detected. Learn more Short Range Proximity This sensor uses an infrared transmitter and receiver to gauge the distance between the sensor and an object near it. It has a digital and an analog output which can be used to control things in response to the presence or absence of an object. Learn more

  • Projects

    Projects Automatic Night Light In this project, you will make use of the LDR sensor on the TOP to create a light-sensitive night light with one of the LEDs. Read More Driving Robot In this project, you will create a robot that can drive around using the DRIVE page on the dashboard, the command line, or a program. Read More Electronic Dice In this project, you will build on the Rainbow LED project by turning the JackBord into a dice. Using the random function to generate a number and assigning each LED a value (all 5 lit up represents six) makes a very simple electronic dice. Read More Rainbow LED Display In this project, you will utilise all five LEDs on the TOP to create a rainbow. With proper commands, you can even make it pulse in sequence. Read More Soccer Robot In this project, you will use your JackBord to play soccer! We do this by turning an ice cream container into a scoop or a foot so the JackBord can push a ball from one point to another. Read More WiFi Signal Dial In this project, we are going to turn the JackBord into a dial so we can visually see the strength of the WiFi signal it is currently receiving. We will use an RC servo, which will move its arm in response to the WiFi strength. Read More

  • Contact Us

    Contact Us We'd love to hear from you Please give us your feedback about any issues, complaints, praise and suggestions ​ We are always looking to improve as we aim to make your JackBord experience as best as it can be ​ Thank you Phone 0508 5225 2673 Proudly created and made in Kapiti, New Zealand Email info@jackbord.works Please submit your feedback below. First Name Last Name Code Phone Email Feedback Type Praise Question Suggestion Bug Report Complaint General Comments Send Thanks for submitting!

  • Testimonials | Jackbord

    Our clients say Anita Taylor, Science Teacher, Paraparaumu College "The beauty of the JackBord interface is that students are able to engage with the learning in their own space and at their own pace. Students are not frustrated by step-by-step teacher directions, they can be given the robot and sensors, and learn through the website videos. Currently our Year 11 classes use the Jackbord to produce data from gas and soil moisture sensors. All students learn to wire up the sensor and use the website to find a program to run to collect data. Students enjoy using their fine motor and computing skills to collect quantitative data that is quickly produced and easily processed." Campbell Scott, Home School Student "Adopting the Jackbord was an enjoyable task, and the instructions were clear and easy to follow. Using the TOP was an excellent learning experience and I was fascinated and impressed at the wide range of possibilities available. I just recently added the motors and wheels and found the driving experience to be excellent, the controls simple and easy to use, and enjoyed coding different tasks to the various buttons. As for the other activities you provided links for, I have already tried out the short range proximity sensor and temperature \ humidity metre. Both were great ideas and I look forward to trying out the other activities. I really appreciated the easy to follow, step by step guide videos, and am continually amazed at the diversity of functions that one can achieve with the Jackbord. I can't think of any criticism to give you" Elgene, Student, Victoria University "JackBord is well designed and highly functional. It is a great tool for entry level robotics students and enthusiasts. The Octagon software is reliable and intuitive. I recommend it to anyone wanting an innovative and interesting learning tool." Jacob, Year 13 Student, Paraparaumu College "During lockdown having a JackBord of my own made doing my own robotics projects possible. I still had everything that I needed to get my robots up and running due to the JackBord being so robust and including everything you ever need built in; all I had to do was plug in my components. Because the JackBord works with WiFi it can be controlled from anywhere in the world so we were able to have JackBord races from at home in our own bubble" Lance Flavell,Digital Technology Teacher, Bishop Viard College "I've never really ventured into electronics with any of my classes until now, so the idea of using JackBords was out of my comfort zone. I initially had concerns about managing the electrical components and whether students might be put-off by the programming interface. Instead, the students were super enthusiastic to wire up their JackBords to meet the challenges. Students previously distracted by social media and youtube were now actively engaged in setting up their JackBords. We are continuing to develop learning units and the JackBord experience has allowed me to unpack parts of the technology curriculum I'd previously considered out of reach." Anonymous, Home Educator "So far, we have really enjoyed the JackBord, and were amazed at all the cool things Matthew could do with it. (I was so happy that I don’t need to be a specialist on the subject for him to be able to do it). The videos are easy to follow, and it’s good that terminology now also gets explained. …... Matthew also really enjoyed the online sessions with Jack and the other participants. This is really well done, and I will recommend it to any parent who has a child interested in electronics. Absolutely well worth the money. Thanks for a great product" Sophie Tukikino,Former Principal, Te Kura Maori o Porirua "The Jackbord Robotics program is presently being delivered in Te Kura Mãori o Porirua to Year 7-8 and Year 9-10 students. The JackBord is a durable, robust product, therefore it is very easy for students to become hands-on straight away. JackBord allows students to become familiar with basic coding and using a range of components to build on the robots functionality. There is scope for students to use the JackBord to explore a range of responses to a problem, through a process of trial and error, develop a solution or, a range of solutions. The feedback from our students has been very positive, teachers have observed highly motivated, engaged students who are often reluctant to move onto their next subject." Noah, Home School Student “It has worked well and connects to the internet pretty fast. Thank you" ​ Theo's mother, Home Educator “We have never seen Theo so excited. He must have spent at least 6 hours with it yesterday and was up early this morning to get going on it again. Have a wonderful day!”

  • Junior Robot Wars 25 Nov 2020

    < Back Junior Robot Wars 25 Nov 2020 This is the program to be run on the competitors JackBords for the juniors robot wars competition on the 3rd Dec 2020 at Paraparaumu College. The claw servo is connected to pin a3 and is used to open and close the claw when the user presses the u1 button on the drive page or the u2 button. This program assumes there are two bumpers on the robot connected to pins A1 & A2. These are the triggers. There is also an RGB LED attached to pins C1 to C3 on port C in the following manner: C1 = RED C2 = GREEN C3 = BLUE When the program starts the LED will flash green several times. The robot will start with a health of 10. When a bumper is triggered a random value between -6 and 6 will be generated and added to the robots health. Thus if the value is negative the health will go down and if positive it will go up. The RGB LED will flash a color ONCE if the health was positive and TWICE if negative. The health colors will be: 0 WHITE 1 RED 2 GREEN 3 BLUE 4 CYAN 5 PURPLE 6 YELLOW End of the Round: If the number of triggers is 10 then the robot died and the LED will show RED. If the robot ran out of health it will show BLUE. Robot Death Cause: RED Hits BLUE Health <= 0 Note: Make sure you set the program to run at boot with the setboot command. eg if its in program slot 2 use setboot 2 Program --- Junior Robot Wars Program 3 Dec 2020 --- prog_vars = d/hits 0 d/hit_result 0 d/health 10 d/flashes 0 d/died 0 prog_vars. prog_start = "Mine Start" coff repeat 10 -> tg c2|d100 -- Setup the bumper pins A1 & A2 btp a1 do_boom btp a2 do_boom btp u1 svp a3 120 btp u2 svp a3 0 prog_start. prog_loop = any /health <= 0 -> -- Dead "XXXXXX WE DIED XXXXX" inc /died 2 repeat 10 -> tg c1|d50 exitnow enda. -- Exit if many hits any /hits >= 10 -> inc /died|exitnow 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 -> /hit_result -- Update the health var add /health /hit_result -> /health -- Flash for neg /hit_result ie deduct health any /hit_result < 0 -> /flashes 2 -- Count no of hits inc /hits print "T /hits TR /hit_result H /health F /flashes" -- Display hit result on RGB LED show_hit_color /hit_result /flashes do_boom. show_hit_color /hit_color 0 /hit_flashes 0 = -- All c off coff -- Get abs version of color abs /hit_color -> /hit_color repeat /hit_flashes -> -- Set the color on Port C ant /hit_color -> = 1 -> c1 1 = 2 -> c2 1 = 3 -> c3 1 = 4 -> c2 1|c3 1 = 5 -> c1 1|c3 1 = 6 -> c1 1|c2 1 -> c1 1|c2 1|c3 1 ant. d100 coff repeat. show_hit_color. prog_stop = --- RED = Died from Hits BLUE = Died from Health --- coff ant /died -> = 1 -> "Died Hits"|c1 1 = 2 -> "Died Health"|c3 1 -> c2 1 ant. -- clear the buttons rstb prog_stop.

  • L298 H-Bridge Commands

    < Back L298 H-Bridge Commands clr298 - Clear L298 Bridge Settings to Defaults Purpose This will disable the l298 bridges and return the Port C & D pins to their defaults. Syntax clr298 con298 - Control an L298 H-Bridge Purpose Allows the specified L298 H-bridge to be controlled. The direction and speed of each half of the bridge may be set. Note: The L298 H-Bridge must be connected to the JackBord as follows: L298 JackBord L298 ENA1 (PWM signal) C1 L298 IN1 C2 L298 IN2 C3 L298 ENA2 (PWM signal) C4 L298 IN3 C5 L298 IN4 D1 Syntax con298 bridge motor speed Arguments bridge The number of the bridge to control. 1 or 2. motor The number of the motor on the bridge to control. 1 or 2. speed The speed to be applied to the specified motor. The speed is between -100 and 100. 100 = Full forwards speed 0 = Stop -100 = Full reverse speed Examples con298 1 1 100 Full forward speed on motor 1 on bridge 1. l298 - List the L298 bridge settings Purpose Shows the settings of the L298 bridges. Syntax l298 p298 - Pulse L298 H-Bridge Purpose Pulse the specified l298 h-bridge no for the no of pulses with each separated by a delay in msecs. Note: The L298 H-Bridge must be connected to the JackBord as follows: L298 JackBord L298 ENA1 (PWM signal) C1 L298 IN1 C2 L298 IN2 C3 L298 ENA2 (PWM signal) C4 L298 IN3 C5 L298 IN4 D1 Syntax p298 B M P L D Arguments B The number of the bridge to control. 1 or 2. M The number of the motor on the bridge to control. 1 or 2. P The number of pulses to send. L The length in milli-seconds of each pulse. D The delay in milli-seconds between each pulse. Examples p298 1 1 5 75 100 Pulse motor 1 on bridge 1 with 5 pulses each 75ms wide and with a 100ms delay between pulses. rst298 - Reset L298 Bridge Settings to Defaults Purpose Reset the l298 bridges and disable them. Syntax rst298 sap - Set Linear Actuator Position Purpose This command will set the specified linear actuator shaft to the specified position. Syntax sap B M pos Arguments B The number of the bridge to control. 1 or 2. M The number of the motor on the bridge to control. 1 or 2. pos The position of the END of the shaft from its fully closed position. Examples p298 1 1 5 75 100 Pulse motor 1 on bridge 1 with 5 pulses each 75ms wide and with a 100ms delay between pulses. Notes The width in pulses of the actuators full draw must be established beforehand to avoid damage. The actuator should be of the type that automatically stops at each end of its extension. apid - Set the Wifi access point SSID to use in World mode Purpose Sets the Wifi access point SSID that the JackBord will try to connect to when it boots into World mode. Syntax apid SSID Arguments SSID The Wifi access point SSID. From 1 to 30 characters. Examples apid Tree Set the SSID to Tree apid Big Fat Cat Set the SSID to Big Fat Cat appw - Set the Wifi access point password to use in World mode Purpose Sets the Wifi access point’s password of the access point the JackBord will try to connect to in World mode. Syntax appw password Arguments password The Wifi access point password. From 8 to 20 characters minimum. Examples appw fish eat frogs Set the access point password to fish eat frogs fuserap - Force the use of the user set Wifi access point. Purpose If its set to 1 this means we want to force the JackBord to use the SSID set in the var even though the JBHub access point may also be available. Syntax fuserap value Arguments value 0 = Don’t force the use of the users ap. 1 = Yes do force the use of the users ap Examples fuserap 0 fuserap 1 hget - Do an http request to the specified URL Purpose This will do an http GET request to the specified URL and store the results in the output variable, which must be of a text type. Syntax hget “URL” -> result Arguments “URL” The http URL, in “” quotes to which the GET request is to be made. result This is a text variable that holds the result of the get request. Examples hget “www.google.com” -> /result

  • Personal Weather Station

    < Back Personal Weather Station This is a basic weather station that measures air temperature and relative humidity. Program --- Personal Weather Station --- prog_vars = d/count 0 d/air_temp 0.0 d/rh 0 prog_vars. prog_start = pclear print "Weather Station Program Start" i2con d1000 f2c pb 100 50 ^n=Quit^p=exitprog^ ptl 20 0 ^ts=24^ "My Weather Station" prog_start. prog_loop = -- main program loop /air_temp /35 /rh /36 ptl 100 100 ^ts=24^tc=red^ "Air Temp /air_temp" ptl 100 150 ^ts=24^tc=blue^ "RH /rh" prog_loop. prog_stop = print "Bye" prog_stop.

  • Date and Time Commands

    < Back Date and Time Commands dly - Delay for a set period of milli seconds Purpose: Delays the execution of a program by the specified number of milli-seconds. Syntax dly delayms Pushers No Returns Nothing Examples dly 100 wait 100ms dly 1000 wait 1sec Notes This command does not delay the command line or other functions when run in a program. Standard Delays The following is a table of standard delays built into JackBord: Examples d50 wait 50ms d500 wait 0.5secs rtimer1, rtimer2, rtimer3 - Reset system timer no 1 2 or 3 Purpose Reset system timer no 1 back to 0. This timer counts in milli-seconds from the time it was last reset and is available via the /timer1 system variable. Syntax rtimer1 Notes The format is the same for the other 3 system timers. e.g. rtimer2 and rtimer3

  • Basic Mine

    < Back Basic Mine This is the basic mine program. The switch for the mine is a circular wire mounted on the outside of the JackBord. This wire represents one half of the switch the other half of the switch is the case of the JackBord itself. Thus to close the switch, or press the button, the wire comes into contact with the case of the JackBord this is what triggers the mine. When triggered the mine program will display a message and it will also tell you the number of times that it has been triggered. Once triggered 10 or 11 times the program will exit. Program --- Basic Mine Program The switch for the mine is connected to the JackBords port A pins 5 and ground. When triggered the mine will tell you. --- prog_vars = d/count 0 d/boom 0 d/triggers 0 prog_vars. prog_start = print "Mine Start" -- Setup the trigger for pin A5 btp a5 d1 1|/boom 1|"BOOM!" -- Turn D1 off d1 0 prog_start. prog_loop = -- main program loop -- Check if mine triggered. any /boom = 1 -> -- YES triggered inc /triggers print "Count /count TRIG no /triggers BOOM /boom" -- Reset /boom 0 --clear d1 d1 0 enda. -- Exit after 10 triggers. any /triggers > 10 -> exitprog inc /count prog_loop. prog_stop = print "Bye" -- clear the buttons rstb prog_stop.

  • Input/Output Commands

    < Back Input/Output Commands #off Turn All of a Port's Pins Off #off Turn all of port #’s pins off. Purpose This will turn all of the pins on the specified port off. Syntax #off Arguments # The port letter a, c, d, e Examples aoff Turn all port A pins off coff Turn all port C pin off Notes See the #on command to turn port pins on #on Turn All of a Port's Pins On #on Turn all of port #’s pins on. Purpose This will turn all of the pins on the specified port on. Syntax #on Arguments # The port letter a, c, d, e Examples aon Turn all port A pins on con Turn all port C pin on Notes See the #off command to turn port pins off. #~ Turn Pin On or Off #~ Turn pin on or off Purpose Allows you to turn a given port A, C, D, E pin on or off. Syntax # ~ state Arguments # The port letter a, b, c, d ~ The port pin number 1 to 5 state The desired state of the pin. 0=OFF 1=ON Pushers No Returns Nothing Examples a1 1 Turn port A pin 1 on a1 0 Turn port A pin 1 off Notes This can be used from the command line and in programs. Channels & Vars Updates the corresponding channel. get #~ Turns the Pin Into an Input and Gets a Reading From It get #~ Turns the pin into an input and gets a reading from it Purpose Set the pin as an input and get a fresh reading from it in real time. Syntax get #~ Arguments # The port letter a, b, c, d ~ The port pin number 1 to 5 Notes Takes a direct reading from the hardware pin. glr Get a Fresh Set of Readings and Display Them glr Get a fresh set of readings and display them Purpose This will get fresh readings from any sensors etc and display them. Syntax glr gqr Get Quick Readings in One Line Form gqr Get quick readings in one line form Purpose Gets a set of readings and puts them on one line Syntax gqr Examples > gqr < a1000a2000a3000a4000a5000 b1 000 b2 000 b3 000 b4 000 b5 000 c1 000 c2 000 c3 000 c4 000 c5 000 d1 000 d2 000 d3 000 d4 000 d5 000 e1 000e2000e3000e4000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 grd Get Raw Readings from the Channels in One Line Form grd Get raw readings from the channels in one line form Purpose Gets a fresh set of raw readings and displays them on one line Syntax grd Examples > grd < 1 0 0.00|2 0 0.00|3 0 0.00|4 0 0.00|5 0 0.00|6 0 0.00|7 0 0.00|8 0 0.00|9 0 0.00| 10 0 0.00|11 0 0.00|12 0 0.00|13 0 0.00| 14 0 0.00|15 0 0.00|16 0 0.00|17 0 0.00| 18 0 0.00|19 0 0.00|20 0 0.00|21 0 0.00| 22 0 0.00|23 0 0.00|24 0 0.00|25 0 0.00| 26 0 0.00|27 0 0.00|28 0 0.00|29 0 0.00| 30 0 0.00|31 0 0.00|32 0 0.00|33 0 0.00| 34 0 0.00|35 0 0.00|36 0 0.00|37 0 0.00| 38 0 0.00|39 0 0.00|40 0 0.00| Notes The format of the output is: |chan raw raw_float| grrd Get Real Raw Readings from the Channels in One Line Form grrd Get real raw readings from the channels in one line form Purpose Gets a fresh set of raw readings and displays them on one line Syntax grrd Examples > grrd < a10a20a30a40a50b10b20b3 0 b4 0 b5 0 c1 0 c2 0 c3 0 c4 0 c5 0 d1 0 d2 0 d3 1 d4 0 d5 0 e1 0 e2 0 e3 0 e4 0 Notes The format of the output is: pin value gt Get the Values of the Specified Port gt Get the values of the specified port. Purpose Returns a table of the current values of the port #. If the # port is left out it return the values of all ports. Syntax gt# or gt Arguments # The port letter a, b, c, d, e Examples gt a Get the port A values gt 6 Get the value of channel 6 Notes The type column shows the current type of the pin. pulse Pulse Output pulse Pulse Output Purpose Pulses the selected output on for the specified length of time Syntax pulse #~ time Arguments # The port letter a, b, c, d ~ The port pin number 1 to 5 time (milli secs) The amount of time for which the pin will remain high. Pushers No Examples pulse a1 100 Pulse a1 on for 100ms puon Set the Pin as an Input with the Pull-Up Resistor Enabled puon Set the pin as an input with the pull-up resistor enabled Purpose Makes the pin an input with an internal pull-up resistor enabled Syntax puon #~ Arguments # The port letter a, b, c, d ~ The port pin number 1 to 5 Examples puon c5 puon a4 spex Set Port Expander spex Set Port Expander Purpose This will setup the specified MCP23017 i/o expander on a virtual port with a port letter from h to l Syntax spex addr port Arguments addr The i2c address on which the expander is located port The letter of the virtual port to which the i/o expander is to be associated with: h, i, j, k or l Pushers No Examples spec 12 h Link the i/o expander on i2c address 12 to virtual port h Notes Once linked the i/o expander port pins may be used in the same manner as normal pins. ie using the #~ notation. The difference is that each i/o expander port has 8 pins instead of 5. spm Set a Pin's Mode of Operation spm Set a pins mode of operation Purpose Set the mode of operation of a pin Syntax spm #~ mode Arguments # The port letter a, b, c, d ~ The port pin number 1 to 5 mode The mode of operation for the pin Mode Description 0 Logic input no pull-up resistor 1 Logic input with pull-up resistor on 2 Logic output 3 Analog input port b only Notes spm a1 1 Set pin a1 as a logic input with a pull- up resistor spm a4 2 Set pin a4 as a logic output tg #~ Toggle the Value of the Selected Pin tg #~ Toggle the value of the selected pin Purpose Toggles the value of the selected pin. If it’s on it will go off and vice versa Syntax tg #~ Arguments # The port letter a, b, c, d ~ The port pin number 1 to 5 Pushers Yes Returns Nothing Examples tg a1 Toggle value of a1 tg d1 Toggle the value of the USER LED tg d1 -> /user_led_state

  • Nested Ant Test

    < Back Nested Ant Test This program is to test the ability of Octagon to handle nested ant commands. Program --- Nested Ant Test Program 1 This program is to test the ability of Octagon to handle nested ant commands. --- prog_vars = d/a 0 d/b 0 d/c 0 d/run_no 0 prog_vars. prog_start = print "Nestedt Ant Test Program" rdbg 6 prog_start. prog_loop = "MMMMMMMMMMM MAIN run /run_no MMMMMMMMMMM" ant /run_no -> = 1 -> task1 /run_no = 2 -> task2 /run_no = 3 -> task2 /run_no -> default_task /run_no ant. "POST ANT" inc /run_no any /run_no > 5 -> exitprog prog_loop. task1 /t1_runs 0 = "ENTER T1" patdog 1 tg c1 ant /t1_runs -> = 1 -> "T1 Run 1" = 2 -> "T1 Run 2" -> "T1 Defaiult /t1_runs" ant. patdog 2 "EXIT T1" task1. task2 /t2_runs 0 = tg c2 "ENTER T2" ant /t2_runs -> = 1 -> "T2 Run 1" = 2 -> "T2 Run 2" = 3 -> "T2 Run 3"|task3 /t2_runs -> "T2 Defaiult /t2_runs" ant. "EXIT T2" task2. task3 /t3_runs 0 = "ENTER T3" tg c3 ant /t3_runs -> = 1 -> "T3 Run 1" = 2 -> "T3 Run 2" = 3 -> "T3 Run 3" -> "T3 Defaiult /t3_runs" ant. "EXIT T3" task3. default_task /d_run_no 0 = "ENTER default_task run /d_run_no" "EXIT default_task run /d_run_no" default_task. prog_stop = -- max /numarray[*] -> /maxnum -- print "the maximum number is /maxnum" print "bye" prog_stop. --- The peogram should produce this output: Nestedt Ant Test Program MMMMMMMMMMM MAIN run 0 MMMMMMMMMMM ENTER default_task run 0 EXIT default_task run 0 POST ANT MMMMMMMMMMM MAIN run 1 MMMMMMMMMMM ENTER T T1 Run 1 EXIT T1 POST ANT MMMMMMMMMMM MAIN run 2 MMMMMMMMMMM ENTER T2 T2 Run 2 EXIT T2 POST ANT MMMMMMMMMMM MAIN run 3 MMMMMMMMMMM ENTER T2 T2 Run 3 ENTER T3 T3 Run 3 EXIT T3 EXIT T2 POST ANT MMMMMMMMMMM MAIN run 4 MMMMMMMMMMM ENTER default_task run 4 EXIT default_task run 4 POST ANT MMMMMMMMMMM MAIN run 5 MMMMMMMMMMM ENTER default_task run 5 EXIT default_task run 5 POST ANT bye ---

  • Programs

    Programs These are some example programs to get you going! Add Numbers View Age Calculator View All Statement Test Example View Any Statement Example View Any and All Statement Text Test View Basic 90-Degree Turn View Advanced Mine View Age Calculator Extended View Ant Command Test View Any and All Numbers Test View Auto Booting/Running a Program View Basic Capacitive Soil Moisture Sensor View 1 2 3 4 5 1 ... 1 2 3 4 5 6 7 8 ... 8

  • Any and All Statement Text Test

    < 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.

  • 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.

  • Age Calculator

    < Back Age Calculator This program takes the persons birth year and the current year and calculates their age. It then works out their age if they were born 10 years earlier. Program --- Age Calculator Program Example Uses the birth year and the current year to workout your age. Then it subtracts 10 years from their birth year. --- prog_vars = d/name "Fred" -- name text var with default value d/birth_year 1972 -- year of birth d/current_year 2020 -- the current year d/age 0 -- age in years d/message1 "If you were born 10 years earlier" prog_vars. prog_start = print " .......... " print "Age Program Begin" prog_start. prog_loop = -- Work Out their age sub /current_year /birth_year -> /age print "Hi /name you are /age years old" -- Subtract 10 years from their birth year and recalc. sub /birth_year 10 -> /birth_year print "New birth year /birth_year" -- Work Out their newage sub /current_year /birth_year -> /age -- Use /message1 to hold the message so the lines not too long. print "/message1" print "you would be /age years old" print "Done exiting now!" exitprog prog_loop. prog_stop = exitprog prog_stop.

  • RGB Color Sensor Demo 2

    < Back RGB Color Sensor Demo 2 This program is for the RGB color sensor, and plots the clear, red, green and blue color values as vertical bars on the show page. Program --- RGB Color Sensor Demo 2 --- prog_vars = d/red_line 0 d/green_line 0 d/blue_line 0 d/clear_line 0 prog_vars. prog_start = pclear d1000 ptl 10 5 ^ts=24^ "RGB Color Sensor Demo Program" -- Enable the I2c system i2con -- Display the Quit button pb 400 20 ^n=Quit^p=exitnow^ prog_start. prog_loop = -- main program loop -- Invert the values so the bars go up sub -1 /cs_clear -> /clear_line sub -1 /cs_red -> /red_line sub -1 /cs_green -> /green_line sub -1 /cs_blue -> /blue_line -- Display the colors as vertical bars pvl 25 300 /clear_line ^lc=yellow^lw=20^ pvl 75 300 /red_line ^lc=red^lw=20^ pvl 125 300 /green_line ^lc=green^lw=20^ pvl 175 300 /blue_line ^lc=blue^lw=20^ -- Display the values ptl 15 300 ^ts=16^ "/cs_clear" ptl 65 300 ^ts=16^ "/cs_red" ptl 115 300 ^ts=16^ "/cs_green" ptl 165 300 ^ts=16^ "/cs_blue" -- Set the USER 1 LED to the color. l1 /cs_red /cs_green /cs_blue prog_loop. prog_stop = ptl 100 200 ^ts=75^ "Bye" prog_stop.

  • Octagon Drawing Example

    < Back Octagon Drawing Example This program draws various shapes on the Show page and is a good way of getting started with the drawing commands in Octagon. Program --- Octagon Drawing Program --- prog_vars = d/step 0 d/color 0 d/opacity 1.0 d/arc_angle 0 d/arc_radius 0 prog_vars. prog_start = pclear ptl f a ^ts=20^tf=verdana^ "JackBord Oactagon Drawing Program" psq t e 100 ^fc=red ^ pcr t h 50 ^fc=cyan ^ prect o j f e ^fc=yellow ^lc=yellow^lw=5^ prog_start. prog_loop = -- main program loop repeat 35 -> pal /step /step /step /step ^lc=/color ^op=/opacity ^lw=50^ mapi 0 520 0 360 /step -> /arc_angle mapi 0 520 0 100 /step -> /arc_radius parc 400 200 /arc_radius 0 /arc_angle ^lc=/color ^fc=transparent^lw=16^ inc /step 15 dec /opacity 0.05 any /opacity <= 0 -> /opacity 1.0 inc /color any /color >= 15 -> /color 1 ptl t c "step /step" repeat. exitprog prog_loop. prog_stop = print "Bye" prog_stop.

  • Motor and Drive Commands

    < 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

bottom of page