Hardware components | ||||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
Software apps and online services | ||||||
| ||||||
Hand tools and fabrication machines | ||||||
| ||||||
| ||||||
| ||||||
| ||||||
|
To make a fast, agile, and easy to use RC car with the Quantum platform.
VideoBuild ProcessStep 1: PCB Assembly and SolderingDownload the Steering Car DIY Kit Bill of Materials:
Gather your Steering Car Kit PCB and all required components listed in the BOM.
It is especially important to follow the BOM exactingly as it tells you where to place the components on the PCB. The fifth column on the BOM is the “parts” column. This column designates which position on the PCB you are to pace the component. For example, if under the parts column you have a resistor labeled r1 you would then find the position marked r1 on the PCB and place the resistor there.
Step 2: Connecting the Motors and Servo to the boardHere you can see the junctions labeled M1 and M2. These are the terminals in which you will connect your motor leads.
Connect the positive and negative leads from your motors as follows.
Take care to ensure that your motors are wired correctly. Otherwise, the two motors will spin in opposite directions.
Now, wire your servo to the PCB as follows.
This will complete the hardware wiring on your PCB!
Step 3: Wiring your Chassis to the Builder BaseOnce all your motors are wired and mounted, you can connect your PCB to the Builder Base. You can follow along to the diagram and table below to ensure you have the appropriate wiring.
Be careful to make sure that you connect the PCB to 5V and not 3.3V
Step 3: Build the FirmwareRemember: All Apps and Firmware Files are available in the resources section at the bottom of the page!
Navigate to the Firmware Builder and create a new Firmware file. We named ours Mecanum Kit.
Next, click the “+ Add Hardware” button and find the Motor device via the search bar, select it, name it, and then click “Add Hardware”. We named ours Motor BL.
Repeat these steps again, but this time name the motor Motor BR.
Next, add a servo. We named ours Servo.
You should now have two motors and a servo in your devices list.
To configure the drivers for the Motor BL device, select the L293D H-Bridge driver from the driver dropdown menu.
Now, configure the driver as follows:
We will now configure the Motor BR driver:
Lastly, we will configure the Servo driver.
Select the Generic driver from the driver dropdown menu
That’s it for the firmware! Save your file by clicking the blue “Save” Button at the bottom of the screen.
Now you can upload your firmware to the client that you have attached to the Steering Car.
Remember: All Apps and Firmware Files are available in the resources section at the bottom of the page!
Navigate to the Applications page and click the “+ Create New Button”, name your application, and click create.
You will now be directed to the App Builder Canvas.
Using the search bar in the left hand tool-bar search for the Motor code object and drag two of them onto the canvas.
Name the Motor Objects as we do. This will help you to identify the motors during the application mapping. To rename them click on the motor object and change the name in the properties panel on the right.
In order to save the names you must click the “Save Properties” button at the bottom of the properties tab.
Next, search for and drag a Manual Ranging object onto the canvas.
Configure the manual Ranging object as follows:
To configure each port on the object click on the port and change the properties in the properties panel on the right side of the screen, and hit save properties at the bottom of the screen. If you don’t your changes will not be saved!
Next, connect the Value out port from the Manual Ranging object to the Motor objects as follows:
Now search for the “Joystick” object and drag two of them onto the canvas. Name one Left, and the other Right.
Now connect the Y-Axis port from the Joystick Left object to the Manual Ranging object as follows:
Your steering car will now move forwards and backwards with the left joystick, now we will work on the steering.
Search for and drag onto the canvas another Manual Ranging object and a Servo object.
We suggest that you name both of these objects.
Configure the ports on the Manual Ranging object as follows:
We set the out min as 180 and the out Max at 0 so that when the right joystick is at rest in the centered position 90 will be output by output by the joystick instead of 0.
With the Manual Ranging object configured we will connect the code objects as follows:
It is possible that you will have to adjust your 0 and 180 offsets to get the proper range of motion on your servo. If this is the case, you can follow our tutorial on offset adjustment here.
Your Steering Car is now totally usable with a set of joysticks. However, we will add some code objects that will allow the car to be controlled via the dashboard interface.
First we will start with steering. Drag three button interface objects and three static number objects onto the canvas. Arrange and name them as shown:
Now, label each of the Button objects to make them easily identifiable on the dashboard. Be sure to save the properties for each button. If you don’t, your changes will be lost!
Now make the connections highlighted in blue:
We will now move on to make the car drive forwards using the interface buttons.
Drag a Digital Toggle code object and an interface button onto the canvas. Be sure to name and label the button
Now make the following connections that are highlighted in blue:
Congrats, your app is now complete!
Hit “Save App” and go back to your applications page.
Step 5: Map Your ApplicationYou should now be back on the Apps page.
Find your “Steering Car” app and hit the play button.
A list containing all of the devices in your application will expand.
Next click on the “Motor BL” device and the client dropdown menu will appear on the right.
Select the Motor BL driver from the dropdown menu and hit “Done”.
Repeat the same steps for the Motor BR and Servo devices, ensuring that you match the device name to the object name.
You can map the Joystick Devices in the same way, but make sure that you match the Left and Right Joystick drivers with the Left and Right Joystick devices.
If you have yet to build a Joystick project or DIY kit you can find out how to build them here.
Notice how the status symbols have changed to green checkmarks.
When mapping firmware devices to objects in your Apps it is important to note that only devices and objects of the same type can be mapped together. Using this app for example, we are only given the option to map the client with the button firmware to the button object.
Step 6: Run the Application!Next, hit “Save + Run”
Congratulations! Your Steering Car Kit is now complete, have fun!
LINKS:
For more information about this project, check out our Steering Car Project Info Page
For more information about Quantum as well as any resources needed, check out our Website
Steering Car PCB App
JSON{"id":"278","name":"Steering Car","identifier":"Steering Car","offsetX":251.2852686847421,"offsetY":182.80238319748392,"zoom":22.458414713541693,"gridSize":0,"links":[{"id":"31531","internalFlowId":"31518","type":"default","selected":false,"points":[{"id":"1dd9be9d-6782-49b0-bdf4-975886f6e9a5","selected":false,"x":786.5781375817294,"y":234.95315892699043},{"id":"efe082d1-000e-43de-a7ec-34ac0c5d9e3f","selected":false,"x":1011.1407562002595,"y":223.92198077691484}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"3","target":"2","sourcePort":"14517","targetPort":"14510"},{"id":"31532","internalFlowId":"31519","type":"default","selected":false,"points":[{"id":"dc74bece-3c99-4230-af71-f8a9035058f1","selected":false,"x":786.5781375817294,"y":234.95315892699043},{"id":"66f333ca-44dc-4243-ba93-01c447dbbbe7","selected":false,"x":1005.3907373317445,"y":413.687514166823}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"3","target":"1","sourcePort":"14517","targetPort":"14505"},{"id":"31533","internalFlowId":"31520","type":"default","selected":false,"points":[{"id":"59c53a2e-9730-45d1-8ec3-772ec9cade67","selected":false,"x":302.9686642986263,"y":218.96885753145665},{"id":"2761656c-7b03-46b5-bf0c-87c185f706d8","selected":false,"x":622.5780676301617,"y":234.95315892699043}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"4","target":"3","sourcePort":"14519","targetPort":"14511"},{"id":"31534","internalFlowId":"31521","type":"default","selected":false,"points":[{"id":"6269a4cf-ad7b-4158-acd5-ba09c8fdbed7","selected":false,"x":800.4531230851873,"y":692.9843812570033},{"id":"adb1020a-a40d-4664-bc17-b7e9b834b3fe","selected":false,"x":1049.4218436894216,"y":738.8594477570133}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"7","target":"6","sourcePort":"14534","targetPort":"14525"},{"id":"31535","internalFlowId":"31522","type":"default","selected":false,"points":[{"id":"d3321546-8c56-4511-b1e7-b87ca3ed4adf","selected":false,"x":368.34378878480436,"y":705.3594578815823},{"id":"c1c5c744-a13e-4f2e-9f29-8bd89f0d804a","selected":false,"x":636.4530531336196,"y":692.9843812570033}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"5","target":"7","sourcePort":"14521","targetPort":"14528"},{"id":"31536","internalFlowId":"31523","type":"default","selected":false,"points":[{"id":"22b5c241-1620-4047-81cc-bd2cb08a77e7","selected":false,"x":-13.406353419369339,"y":926.5782074789005},{"id":"c4a76e8f-6eb4-4300-9242-428183dec04f","selected":false,"x":115.5938177778885,"y":918.5781872297626}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"8","target":"11","sourcePort":"14537","targetPort":"14544"},{"id":"31537","internalFlowId":"31524","type":"default","selected":false,"points":[{"id":"0976e9b6-258e-4d83-a481-22e54e47728a","selected":false,"x":-16.609398889729192,"y":1089.9063281932167},{"id":"00123478-d5c9-492f-b9e6-c6145a801967","selected":false,"x":115.5938177778885,"y":1085.1093534144381}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"9","target":"12","sourcePort":"14540","targetPort":"14547"},{"id":"31538","internalFlowId":"31525","type":"default","selected":false,"points":[{"id":"53813929-cc09-465a-808e-f3d63dd115a7","selected":false,"x":-16.609398889729192,"y":1250.0312653748674},{"id":"ad22a82a-3ce9-47a8-997f-c2f437b65ba5","selected":false,"x":114.00002653177496,"y":1243.6250363718434}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"10","target":"13","sourcePort":"14543","targetPort":"14550"},{"id":"31539","internalFlowId":"31526","type":"default","selected":false,"points":[{"id":"efb8d893-488e-4d05-89ea-a6afbdd668c5","selected":false,"x":279.5937496671514,"y":918.5781872297626},{"id":"dd86b134-660c-4738-9425-f6f0bfb61e99","selected":false,"x":564.2547701276108,"y":738.7972927043112},{"id":"e7bf51f0-a6ef-4fd1-83ea-5d82759492ed","selected":false,"x":636.4530531336196,"y":692.9843812570033}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"11","target":"7","sourcePort":"14546","targetPort":"14528"},{"id":"31540","internalFlowId":"31527","type":"default","selected":false,"points":[{"id":"11ce3b42-6c49-49b0-89bd-b59655816aee","selected":false,"x":279.5937496671514,"y":1085.1093534144381},{"id":"93e1da47-7a5d-4fee-afd6-c042c3d0c35d","selected":false,"x":564.2547701276108,"y":674.9923542656973},{"id":"814c3a02-bd29-4c59-ad8a-f21576ab707d","selected":false,"x":636.4530531336196,"y":692.9843812570033}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"12","target":"7","sourcePort":"14549","targetPort":"14528"},{"id":"31541","internalFlowId":"31528","type":"default","selected":false,"points":[{"id":"8fabf5d3-9c63-46e4-b66e-4481a14e203b","selected":false,"x":277.9999584210379,"y":1243.6250363718434},{"id":"703fed04-89a7-48c7-8025-98fc3fde1872","selected":false,"x":545.7849195269595,"y":723.6855967583236},{"id":"b295ded0-da0f-45a8-8dac-c94b55c432f5","selected":false,"x":636.4530531336196,"y":692.9843812570033}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"13","target":"7","sourcePort":"14552","targetPort":"14528"},{"id":"31542","internalFlowId":"31529","type":"default","selected":false,"points":[{"id":"fa466bca-111e-46af-b52c-d5b39b12cf57","selected":false,"x":32.95303564572795,"y":444.4687811369812},{"id":"76a4e506-6a07-417d-b724-919871d6804f","selected":false,"x":142.6404994043729,"y":439.6875454609454}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"15","target":"14","sourcePort":"14560","targetPort":"14553"},{"id":"31543","internalFlowId":"31530","type":"default","selected":false,"points":[{"id":"95ff18e4-a4a7-431f-b414-6916eab33264","selected":false,"x":309.96869927441014,"y":439.6875454609454},{"id":"dc9aa6bb-1a8f-4131-98fe-3fbb989c82c3","selected":false,"x":622.5780676301617,"y":234.95315892699043}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"14","target":"3","sourcePort":"14556","targetPort":"14511"}],"nodes":[{"id":"1","internalFlowId":"1","type":"quantum","selected":false,"x":987.394,"y":301.197,"name":"Motor BR","mappingDescription":"No instructions defined!","description":"The DC Motor control is just a bi-directional motor. States are open, close and off, with speed control.","color":"#02B0EF","qType":"Widget","originalName":"Motor","factoryId":null,"properties":{"executableWidgetCode":"let out = '0';\n\nif(inPorts[1].value && !inPorts[2].value){\n out = '1';\n}else if(!inPorts[1].value && inPorts[2].value){\n out = '-1';\n}else if(inPorts[1].value && inPorts[2].value){\n if(trigger === 1){\n out = '1';\n }else{\n out = '-1';\n }\n}\n\nfunction joyOut(value) {\n const ret = (value - 0) * (255 - (-255)) / (4095 - 0) + (-255);\n\n if (value === 2048) {\n return 0;\n } if (value < 2048) {\n return Math.ceil(ret);\n }\n return Math.floor(ret);\n}\nswitch(trigger){\n case 0: {\n return [inPorts[0].value];\n }; break;\n case 1: {\n return [out * (inPorts[3].value || 0)]; \n }; break;\n case 2: {\n return [out * (inPorts[3].value || 0)];\n }; break;\n case 3: {\n return [inPorts[3].value * (out || 0)];\n }; break;\n case 4: {\n return [joyOut(inPorts[4].value)];\n }; break;\n default: break;\n}","mappableCategory":{"category":4,"subCategory":3},"multiWidget":false,"manufacturer":"generic"},"ports":[{"id":"14501","internalFlowId":"10141","type":"quantum","selected":false,"name":"63c1d1c6-97b9-43b1-80fd-689043da4fbc","in":true,"label":"Motor","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"hidden":true,"clientService":{"key":"q_dc_motor","name":"DC Motor","uuid":"fa008e38-f01d-5100-992d-45364f79a961","value_len":"2","props":["write"],"propChar":[],"signalType":{"key":"motor","name":"Motor","baseType":{"name":"Number"},"range":{"min":-255,"max":255},"internal":true},"drivers":["custom_pca9865_motor","custom_pca9865_motor_speed_dir","custom_tlc5940_motor","custom_tri_state_motor","custom_tri_state_motor_speed_dir"]}},"signalType":{"key":"motor","name":"Motor","baseType":{"name":"Number"},"range":{"min":-255,"max":255},"internal":true},"index":0,"clients":[{"id":3637,"createdAt":"2020-08-14T01:50:46.331Z","updatedAt":"2020-08-14T01:50:46.331Z","clientId":256,"subClientId":1771,"serviceId":6874,"PortId":14501,"client":{"id":256,"name":"Q #03220","mac_address":"08:6b:d7:49:0c:94","proxy":"02:81:e6:8e:59:ca","state":"ON","rssi":-44,"batteryLevel":100,"batteryMode":"USB","lifeCycle":false,"manufacturer":"Quantum","category":{"category":null},"advertisement":{"localName":"Q #03220","txPowerLevel":1,"serviceData":[],"serviceUuids":["5155414e54554d430000ffffffffffff"],"solicitationServiceUuids":[],"serviceSolicitationUuids":[]},"energyInformation":{"batteryLevel":"100%","batteryVoltage":"3314mV","deviceVoltage":"3.314V","internalResistance":"0.03","powerTypeNumeric":1,"powerType":"USB"},"createdAt":"2020-08-14T01:46:40.880Z","updatedAt":"2020-08-14T01:48:27.931Z","proxyLinkId":1},"subClient":{"id":1771,"name":"Motor BR","category":{"category":4,"subCategory":3},"index":2,"createdAt":"2020-08-14T01:48:23.561Z","updatedAt":"2020-08-14T01:48:27.149Z","ClientId":256},"service":{"id":6874,"client_mac_address":null,"name":"Motor","signalType":"DC Motor","serviceKey":"q_dc_motor","uuid":"fa008e38f01d5101992d45364f79a961","characteristics":[{"uuid":"6375a20d31ae4456aaf68fc84e3cce26","name":null,"type":null,"properties":["read"],"value":"Motor"},{"uuid":"a97ba6d9c40941188735b5bef87b9afd","name":null,"type":null,"properties":["write"],"value":""},{"uuid":"93d79faa21ed4ce7b658d9bcb06bd943","name":null,"type":null,"properties":["read"],"value":"-"},{"uuid":"1270fde2fd5e4e4fb866241f105f7b15","name":null,"type":null,"properties":["read"],"value":"\u0001\u0001Motor BR~4~3"}],"type":null,"createdAt":"2020-08-14T01:48:23.897Z","updatedAt":"2020-08-14T01:48:27.634Z","SubClientId":1771}}],"NodeId":1},{"id":"14502","internalFlowId":"10142","type":"quantum","selected":false,"name":"cdc3e808-5b45-44bd-9608-70587e2ed315","in":true,"label":"Clockwise","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"virtual":true},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":1,"clients":[],"NodeId":1},{"id":"14503","internalFlowId":"10143","type":"quantum","selected":false,"name":"e439fd7f-bc69-498a-bc18-fef9233f6a9f","in":true,"label":"Counter Clockwise","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"virtual":true},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":1},{"id":"14504","internalFlowId":"10144","type":"quantum","selected":false,"name":"7446ef76-cbc3-4465-b263-95188963afe4","in":true,"label":"Speed","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"virtual":true},"signalType":{"key":"pwm","name":"PWM","baseType":{"name":"Number"},"range":{"min":0,"max":255}},"index":3,"clients":[],"NodeId":1},{"id":"14505","internalFlowId":"10145","type":"quantum","selected":false,"name":"c8402f27-dc16-4e2c-a1db-273e0524ce6e","in":true,"label":"Joystick Axle","description":"Nothing added here yet.","qTrigger":true,"defaultValue":null,"properties":{"virtual":true},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"index":4,"clients":[],"NodeId":1}],"category":"Actuators","version":"0.0.1"},{"id":"2","internalFlowId":"2","type":"quantum","selected":false,"x":993.149,"y":111.428,"name":"Motor BL","mappingDescription":"No instructions defined!","description":"The DC Motor control is just a bi-directional motor. States are open, close and off, with speed control.","color":"#02B0EF","qType":"Widget","originalName":"Motor","factoryId":null,"properties":{"executableWidgetCode":"let out = '0';\n\nif(inPorts[1].value && !inPorts[2].value){\n out = '1';\n}else if(!inPorts[1].value && inPorts[2].value){\n out = '-1';\n}else if(inPorts[1].value && inPorts[2].value){\n if(trigger === 1){\n out = '1';\n }else{\n out = '-1';\n }\n}\n\nfunction joyOut(value) {\n const ret = (value - 0) * (255 - (-255)) / (4095 - 0) + (-255);\n\n if (value === 2048) {\n return 0;\n } if (value < 2048) {\n return Math.ceil(ret);\n }\n return Math.floor(ret);\n}\nswitch(trigger){\n case 0: {\n return [inPorts[0].value];\n }; break;\n case 1: {\n return [out * (inPorts[3].value || 0)]; \n }; break;\n case 2: {\n return [out * (inPorts[3].value || 0)];\n }; break;\n case 3: {\n return [inPorts[3].value * (out || 0)];\n }; break;\n case 4: {\n return [joyOut(inPorts[4].value)];\n }; break;\n default: break;\n}","mappableCategory":{"category":4,"subCategory":3},"multiWidget":false,"manufacturer":"generic"},"ports":[{"id":"14506","internalFlowId":"10146","type":"quantum","selected":false,"name":"42836637-e15a-49f7-a6cc-eab63dd42178","in":true,"label":"Motor","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"hidden":true,"clientService":{"key":"q_dc_motor","name":"DC Motor","uuid":"fa008e38-f01d-5100-992d-45364f79a961","value_len":"2","props":["write"],"propChar":[],"signalType":{"key":"motor","name":"Motor","baseType":{"name":"Number"},"range":{"min":-255,"max":255},"internal":true},"drivers":["custom_pca9865_motor","custom_pca9865_motor_speed_dir","custom_tlc5940_motor","custom_tri_state_motor","custom_tri_state_motor_speed_dir"]}},"signalType":{"key":"motor","name":"Motor","baseType":{"name":"Number"},"range":{"min":-255,"max":255},"internal":true},"index":0,"clients":[{"id":3638,"createdAt":"2020-08-14T01:50:46.331Z","updatedAt":"2020-08-14T01:50:46.331Z","clientId":256,"subClientId":1770,"serviceId":6873,"PortId":14506,"client":{"id":256,"name":"Q #03220","mac_address":"08:6b:d7:49:0c:94","proxy":"02:81:e6:8e:59:ca","state":"ON","rssi":-44,"batteryLevel":100,"batteryMode":"USB","lifeCycle":false,"manufacturer":"Quantum","category":{"category":null},"advertisement":{"localName":"Q #03220","txPowerLevel":1,"serviceData":[],"serviceUuids":["5155414e54554d430000ffffffffffff"],"solicitationServiceUuids":[],"serviceSolicitationUuids":[]},"energyInformation":{"batteryLevel":"100%","batteryVoltage":"3314mV","deviceVoltage":"3.314V","internalResistance":"0.03","powerTypeNumeric":1,"powerType":"USB"},"createdAt":"2020-08-14T01:46:40.880Z","updatedAt":"2020-08-14T01:48:27.931Z","proxyLinkId":1},"subClient":{"id":1770,"name":"Motor BL","category":{"category":4,"subCategory":3},"index":1,"createdAt":"2020-08-14T01:48:23.464Z","updatedAt":"2020-08-14T01:48:26.961Z","ClientId":256},"service":{"id":6873,"client_mac_address":null,"name":"Motor","signalType":"DC Motor","serviceKey":"q_dc_motor","uuid":"fa008e38f01d5100992d45364f79a961","characteristics":[{"uuid":"6375a20d31ae4456aaf68fc84e3cce26","name":null,"type":null,"properties":["read"],"value":"Motor"},{"uuid":"a97ba6d9c40941188735b5bef87b9afd","name":null,"type":null,"properties":["write"],"value":""},{"uuid":"93d79faa21ed4ce7b658d9bcb06bd943","name":null,"type":null,"properties":["read"],"value":"-"},{"uuid":"1270fde2fd5e4e4fb866241f105f7b15","name":null,"type":null,"properties":["read"],"value":"\u0001\u0000Motor BL~4~3"}],"type":null,"createdAt":"2020-08-14T01:48:23.895Z","updatedAt":"2020-08-14T01:48:27.632Z","SubClientId":1770}}],"NodeId":2},{"id":"14507","internalFlowId":"10147","type":"quantum","selected":false,"name":"50f1d95e-917c-44c3-ad58-794d00b9604a","in":true,"label":"Clockwise","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"virtual":true},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":1,"clients":[],"NodeId":2},{"id":"14508","internalFlowId":"10148","type":"quantum","selected":false,"name":"c21abcc8-1380-4da9-993d-93918d0f92a2","in":true,"label":"Counter Clockwise","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"virtual":true},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":2},{"id":"14509","internalFlowId":"10149","type":"quantum","selected":false,"name":"6bdc3b69-9895-414e-8bca-c9c6f928640c","in":true,"label":"Speed","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"virtual":true},"signalType":{"key":"pwm","name":"PWM","baseType":{"name":"Number"},"range":{"min":0,"max":255}},"index":3,"clients":[],"NodeId":2},{"id":"14510","internalFlowId":"10150","type":"quantum","selected":false,"name":"8853d475-b26f-4149-82f5-65c4ac614840","in":true,"label":"Joystick Axle","description":"Nothing added here yet.","qTrigger":true,"defaultValue":null,"properties":{"virtual":true},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"index":4,"clients":[],"NodeId":2}],"category":"Actuators","version":"0.0.1"},{"id":"3","internalFlowId":"3","type":"quantum","selected":false,"x":604.579,"y":188.467,"name":"Manual Ranging","mappingDescription":null,"description":"Set custom Ranges to a numeric value.","color":"#DE00BC","qType":"Snippet","originalName":"Manual Ranging","factoryId":null,"properties":{"executeCode":"const value_between = (value, min, max) => {\n if(min > max){\n return value <= min && value >= max;\n }else if(max > min){\n return value >= min && value <= max;\n }else{\n return true;\n }\n}\n\n\nconst value = inPorts[0].value ? parseFloat(inPorts[0].value) : 0;\nconst newMin = inPorts[3].value ? parseFloat(inPorts[3].value) : 0;\nconst newMax = inPorts[4].value ? parseFloat(inPorts[4].value) : 0;\nconst oldMin = inPorts[1].value ? parseFloat(inPorts[1].value) : 0;\nconst oldMax = inPorts[2].value ? parseFloat(inPorts[2].value) : 0;\n\nif(value_between(value, oldMin, oldMax)){\n \n const retValue = ((value - oldMin) * (newMax - newMin) / (oldMax - oldMin) + newMin);\n \n if(inPorts[5].value)\n return [Math.round(retValue)];\n else{\n return [retValue];\n } \n}"},"ports":[{"id":"14511","internalFlowId":"10151","type":"quantum","selected":false,"name":"fd1aac42-6f07-4e63-952d-8d27fa2bf1a4","in":true,"label":"Value","description":null,"qTrigger":true,"defaultValue":"","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":0,"clients":[],"NodeId":3},{"id":"14512","internalFlowId":"10152","type":"quantum","selected":false,"name":"ef6557b3-d3db-46d7-a90f-3898d2f529e1","in":true,"label":"In Min","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":1,"clients":[],"NodeId":3},{"id":"14513","internalFlowId":"10153","type":"quantum","selected":false,"name":"585a1271-ddd2-4063-9579-a850e1d1cb00","in":true,"label":"In Max","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":2,"clients":[],"NodeId":3},{"id":"14514","internalFlowId":"10154","type":"quantum","selected":false,"name":"341b40a1-8db7-4559-821e-8542c8df86e7","in":true,"label":"Out Min","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":3,"clients":[],"NodeId":3},{"id":"14515","internalFlowId":"10155","type":"quantum","selected":false,"name":"4199dd39-83f1-468f-b342-aee57bd4812e","in":true,"label":"Out Max","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":4,"clients":[],"NodeId":3},{"id":"14516","internalFlowId":"10156","type":"quantum","selected":false,"name":"143543bc-7294-4cf9-9501-4d36e654fc54","in":true,"label":"Rounded","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":5,"clients":[],"NodeId":3},{"id":"14517","internalFlowId":"10157","type":"quantum","selected":false,"name":"cdc9dfb6-7099-42d1-af41-093612487102","in":false,"label":"Value","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":6,"clients":[],"NodeId":3}],"category":"Compare","version":"0.0.1"},{"id":"4","internalFlowId":"4","type":"quantum","selected":false,"x":120.982,"y":150.474,"name":"Left","mappingDescription":"No instructions defined!","description":"Joystick controller with optional button","color":"#02B0EF","qType":"Widget","originalName":"Joystick","factoryId":null,"properties":{"mappableCategory":{"category":7,"subCategory":2},"multiWidget":false,"manufacturer":"generic"},"ports":[{"id":"14518","internalFlowId":"10158","type":"quantum","selected":false,"name":"cb57ea22-e82b-4358-a8fb-87d4d585a4f2","in":false,"label":"X-axis","description":"Nothing added here yet.","qTrigger":null,"defaultValue":null,"properties":{"clientService":{"key":"q_analog_in","name":"Analog In","uuid":"b71c0915-8c3a-5100-8db8-7c5040729981","value_len":"4","props":["read","notify"],"propChar":[{"key":"resolution","title":"Resolution","len":2},{"key":"range","title":"Range","len":4}],"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"drivers":["custom_Q10k_pot_anl","custom_ADS1015"]}},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"index":0,"clients":[{"id":3639,"createdAt":"2020-08-14T01:50:46.331Z","updatedAt":"2020-08-14T01:50:46.331Z","clientId":255,"subClientId":1773,"serviceId":6884,"PortId":14518,"client":{"id":255,"name":"Q #02858","mac_address":"08:6b:d7:49:0b:2a","proxy":"02:81:e6:8e:59:ca","state":"ON","rssi":-58,"batteryLevel":100,"batteryMode":"USB","lifeCycle":false,"manufacturer":"Quantum","category":{"category":null},"advertisement":{"localName":"Q #02858","txPowerLevel":1,"serviceData":[],"serviceUuids":["5155414e54554d430001ffffffffffff"],"solicitationServiceUuids":[],"serviceSolicitationUuids":[]},"energyInformation":{"batteryLevel":"100%","batteryVoltage":"3282mV","deviceVoltage":"3.285V","internalResistance":"0.10","powerTypeNumeric":1,"powerType":"USB"},"createdAt":"2020-08-14T01:46:33.780Z","updatedAt":"2020-08-14T01:48:40.932Z","proxyLinkId":1},"subClient":{"id":1773,"name":"Left","category":{"category":7,"subCategory":2},"index":1,"createdAt":"2020-08-14T01:48:32.635Z","updatedAt":"2020-08-14T01:48:39.591Z","ClientId":255},"service":{"id":6884,"client_mac_address":null,"name":"X-axis","signalType":"Analog In","serviceKey":"q_analog_in","uuid":"b71c09158c3a51008db87c5040729981","characteristics":[{"uuid":"6375a20d31ae4456aaf68fc84e3cce26","name":null,"type":null,"properties":["read"],"value":"X-axis"},{"uuid":"a97ba6d9c40941188735b5bef87b9afd","name":null,"type":null,"properties":["read","notify"],"value":"\u0000\u0000\u0006"},{"uuid":"93d79faa21ed4ce7b658d9bcb06bd943","name":null,"type":null,"properties":["read"],"value":"124095124095"},{"uuid":"1270fde2fd5e4e4fb866241f105f7b15","name":null,"type":null,"properties":["read"],"value":"\u0001\u0000Left~7~2"}],"type":null,"createdAt":"2020-08-14T01:48:33.784Z","updatedAt":"2020-08-14T01:48:40.345Z","SubClientId":1773}}],"NodeId":4},{"id":"14519","internalFlowId":"10159","type":"quantum","selected":false,"name":"2f9ac4ec-7c4c-46c8-83c9-9d0f37055533","in":false,"label":"Y-axis","description":"Nothing added here yet.","qTrigger":null,"defaultValue":null,"properties":{"clientService":{"key":"q_analog_in","name":"Analog In","uuid":"b71c0915-8c3a-5100-8db8-7c5040729981","value_len":"4","props":["read","notify"],"propChar":[{"key":"resolution","title":"Resolution","len":2},{"key":"range","title":"Range","len":4}],"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"drivers":["custom_Q10k_pot_anl","custom_ADS1015"]}},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"index":1,"clients":[{"id":3640,"createdAt":"2020-08-14T01:50:46.331Z","updatedAt":"2020-08-14T01:50:46.331Z","clientId":255,"subClientId":1773,"serviceId":6885,"PortId":14519,"client":{"id":255,"name":"Q #02858","mac_address":"08:6b:d7:49:0b:2a","proxy":"02:81:e6:8e:59:ca","state":"ON","rssi":-58,"batteryLevel":100,"batteryMode":"USB","lifeCycle":false,"manufacturer":"Quantum","category":{"category":null},"advertisement":{"localName":"Q #02858","txPowerLevel":1,"serviceData":[],"serviceUuids":["5155414e54554d430001ffffffffffff"],"solicitationServiceUuids":[],"serviceSolicitationUuids":[]},"energyInformation":{"batteryLevel":"100%","batteryVoltage":"3282mV","deviceVoltage":"3.285V","internalResistance":"0.10","powerTypeNumeric":1,"powerType":"USB"},"createdAt":"2020-08-14T01:46:33.780Z","updatedAt":"2020-08-14T01:48:40.932Z","proxyLinkId":1},"subClient":{"id":1773,"name":"Left","category":{"category":7,"subCategory":2},"index":1,"createdAt":"2020-08-14T01:48:32.635Z","updatedAt":"2020-08-14T01:48:39.591Z","ClientId":255},"service":{"id":6885,"client_mac_address":null,"name":"Y-axis","signalType":"Analog In","serviceKey":"q_analog_in","uuid":"b71c09158c3a51018db87c5040729981","characteristics":[{"uuid":"6375a20d31ae4456aaf68fc84e3cce26","name":null,"type":null,"properties":["read"],"value":"Y-axis"},{"uuid":"a97ba6d9c40941188735b5bef87b9afd","name":null,"type":null,"properties":["read","notify"],"value":"\u0000\u0000\u0005"},{"uuid":"93d79faa21ed4ce7b658d9bcb06bd943","name":null,"type":null,"properties":["read"],"value":"124095124095"},{"uuid":"1270fde2fd5e4e4fb866241f105f7b15","name":null,"type":null,"properties":["read"],"value":"\u0001\u0000Left~7~2"}],"type":null,"createdAt":"2020-08-14T01:48:33.785Z","updatedAt":"2020-08-14T01:48:40.347Z","SubClientId":1773}}],"NodeId":4},{"id":"14520","internalFlowId":"10160","type":"quantum","selected":false,"name":"5cc8bd5f-c6dc-4e35-851d-98495410d0eb","in":false,"label":"Button","description":"Nothing added here yet.","qTrigger":null,"defaultValue":null,"properties":{"clientService":{"key":"q_digital_in","name":"Digital In","uuid":"4ae77ff2-1d7c-5100-96d0-50b42a0fc08a","value_len":"1","props":["read","notify"],"propChar":[],"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"drivers":["custom_gpio_in","custom_Q4x3keypad","custom_mcp23017_in","custom_HC_SR501","custom_osepp_prox_01","custom_pull_down_input_le","custom_floating_input_le","custom_pull_up_input_le"]}},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[{"id":3641,"createdAt":"2020-08-14T01:50:46.331Z","updatedAt":"2020-08-14T01:50:46.331Z","clientId":255,"subClientId":1773,"serviceId":6886,"PortId":14520,"client":{"id":255,"name":"Q #02858","mac_address":"08:6b:d7:49:0b:2a","proxy":"02:81:e6:8e:59:ca","state":"ON","rssi":-58,"batteryLevel":100,"batteryMode":"USB","lifeCycle":false,"manufacturer":"Quantum","category":{"category":null},"advertisement":{"localName":"Q #02858","txPowerLevel":1,"serviceData":[],"serviceUuids":["5155414e54554d430001ffffffffffff"],"solicitationServiceUuids":[],"serviceSolicitationUuids":[]},"energyInformation":{"batteryLevel":"100%","batteryVoltage":"3282mV","deviceVoltage":"3.285V","internalResistance":"0.10","powerTypeNumeric":1,"powerType":"USB"},"createdAt":"2020-08-14T01:46:33.780Z","updatedAt":"2020-08-14T01:48:40.932Z","proxyLinkId":1},"subClient":{"id":1773,"name":"Left","category":{"category":7,"subCategory":2},"index":1,"createdAt":"2020-08-14T01:48:32.635Z","updatedAt":"2020-08-14T01:48:39.591Z","ClientId":255},"service":{"id":6886,"client_mac_address":null,"name":"Button","signalType":"Digital In","serviceKey":"q_digital_in","uuid":"4ae77ff21d7c510296d050b42a0fc08a","characteristics":[{"uuid":"6375a20d31ae4456aaf68fc84e3cce26","name":null,"type":null,"properties":["read"],"value":"Button"},{"uuid":"a97ba6d9c40941188735b5bef87b9afd","name":null,"type":null,"properties":["read","notify"],"value":"\u0000"},{"uuid":"93d79faa21ed4ce7b658d9bcb06bd943","name":null,"type":null,"properties":["read"],"value":"-"},{"uuid":"1270fde2fd5e4e4fb866241f105f7b15","name":null,"type":null,"properties":["read"],"value":"\u0001\u0000Left~7~2"}],"type":null,"createdAt":"2020-08-14T01:48:33.787Z","updatedAt":"2020-08-14T01:48:40.350Z","SubClientId":1773}}],"NodeId":4}],"category":"Input Control","version":"0.0.1"},{"id":"5","internalFlowId":"5","type":"quantum","selected":false,"x":186.354,"y":658.866,"name":"Right","mappingDescription":"No instructions defined!","description":"Joystick controller with optional button","color":"#02B0EF","qType":"Widget","originalName":"Joystick","factoryId":null,"properties":{"mappableCategory":{"category":7,"subCategory":2},"multiWidget":false,"manufacturer":"generic"},"ports":[{"id":"14521","internalFlowId":"10161","type":"quantum","selected":false,"name":"942a1395-7eb9-44d4-bdcf-525074cb3a6d","in":false,"label":"X-axis","description":"Nothing added here yet.","qTrigger":null,"defaultValue":null,"properties":{"clientService":{"key":"q_analog_in","name":"Analog In","uuid":"b71c0915-8c3a-5100-8db8-7c5040729981","value_len":"4","props":["read","notify"],"propChar":[{"key":"resolution","title":"Resolution","len":2},{"key":"range","title":"Range","len":4}],"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"drivers":["custom_Q10k_pot_anl","custom_ADS1015"]}},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"index":0,"clients":[{"id":3642,"createdAt":"2020-08-14T01:50:46.331Z","updatedAt":"2020-08-14T01:50:46.331Z","clientId":255,"subClientId":1774,"serviceId":6887,"PortId":14521,"client":{"id":255,"name":"Q #02858","mac_address":"08:6b:d7:49:0b:2a","proxy":"02:81:e6:8e:59:ca","state":"ON","rssi":-58,"batteryLevel":100,"batteryMode":"USB","lifeCycle":false,"manufacturer":"Quantum","category":{"category":null},"advertisement":{"localName":"Q #02858","txPowerLevel":1,"serviceData":[],"serviceUuids":["5155414e54554d430001ffffffffffff"],"solicitationServiceUuids":[],"serviceSolicitationUuids":[]},"energyInformation":{"batteryLevel":"100%","batteryVoltage":"3282mV","deviceVoltage":"3.285V","internalResistance":"0.10","powerTypeNumeric":1,"powerType":"USB"},"createdAt":"2020-08-14T01:46:33.780Z","updatedAt":"2020-08-14T01:48:40.932Z","proxyLinkId":1},"subClient":{"id":1774,"name":"Right","category":{"category":7,"subCategory":2},"index":2,"createdAt":"2020-08-14T01:48:33.043Z","updatedAt":"2020-08-14T01:48:39.885Z","ClientId":255},"service":{"id":6887,"client_mac_address":null,"name":"X-axis","signalType":"Analog In","serviceKey":"q_analog_in","uuid":"b71c09158c3a51038db87c5040729981","characteristics":[{"uuid":"6375a20d31ae4456aaf68fc84e3cce26","name":null,"type":null,"properties":["read"],"value":"X-axis"},{"uuid":"a97ba6d9c40941188735b5bef87b9afd","name":null,"type":null,"properties":["read","notify"],"value":"\u0000\u0000\u0005y"},{"uuid":"93d79faa21ed4ce7b658d9bcb06bd943","name":null,"type":null,"properties":["read"],"value":"124095124095"},{"uuid":"1270fde2fd5e4e4fb866241f105f7b15","name":null,"type":null,"properties":["read"],"value":"\u0001\u0001Right~7~2"}],"type":null,"createdAt":"2020-08-14T01:48:33.788Z","updatedAt":"2020-08-14T01:48:40.353Z","SubClientId":1774}}],"NodeId":5},{"id":"14522","internalFlowId":"10162","type":"quantum","selected":false,"name":"33b658a8-0c01-4faf-871e-aa41f9d86e05","in":false,"label":"Y-axis","description":"Nothing added here yet.","qTrigger":null,"defaultValue":null,"properties":{"clientService":{"key":"q_analog_in","name":"Analog In","uuid":"b71c0915-8c3a-5100-8db8-7c5040729981","value_len":"4","props":["read","notify"],"propChar":[{"key":"resolution","title":"Resolution","len":2},{"key":"range","title":"Range","len":4}],"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"drivers":["custom_Q10k_pot_anl","custom_ADS1015"]}},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"index":1,"clients":[{"id":3643,"createdAt":"2020-08-14T01:50:46.331Z","updatedAt":"2020-08-14T01:50:46.331Z","clientId":255,"subClientId":1774,"serviceId":6888,"PortId":14522,"client":{"id":255,"name":"Q #02858","mac_address":"08:6b:d7:49:0b:2a","proxy":"02:81:e6:8e:59:ca","state":"ON","rssi":-58,"batteryLevel":100,"batteryMode":"USB","lifeCycle":false,"manufacturer":"Quantum","category":{"category":null},"advertisement":{"localName":"Q #02858","txPowerLevel":1,"serviceData":[],"serviceUuids":["5155414e54554d430001ffffffffffff"],"solicitationServiceUuids":[],"serviceSolicitationUuids":[]},"energyInformation":{"batteryLevel":"100%","batteryVoltage":"3282mV","deviceVoltage":"3.285V","internalResistance":"0.10","powerTypeNumeric":1,"powerType":"USB"},"createdAt":"2020-08-14T01:46:33.780Z","updatedAt":"2020-08-14T01:48:40.932Z","proxyLinkId":1},"subClient":{"id":1774,"name":"Right","category":{"category":7,"subCategory":2},"index":2,"createdAt":"2020-08-14T01:48:33.043Z","updatedAt":"2020-08-14T01:48:39.885Z","ClientId":255},"service":{"id":6888,"client_mac_address":null,"name":"Y-axis","signalType":"Analog In","serviceKey":"q_analog_in","uuid":"b71c09158c3a51048db87c5040729981","characteristics":[{"uuid":"6375a20d31ae4456aaf68fc84e3cce26","name":null,"type":null,"properties":["read"],"value":"Y-axis"},{"uuid":"a97ba6d9c40941188735b5bef87b9afd","name":null,"type":null,"properties":["read","notify"],"value":"\u0000\u0000\u0007\b"},{"uuid":"93d79faa21ed4ce7b658d9bcb06bd943","name":null,"type":null,"properties":["read"],"value":"124095124095"},{"uuid":"1270fde2fd5e4e4fb866241f105f7b15","name":null,"type":null,"properties":["read"],"value":"\u0001\u0001Right~7~2"}],"type":null,"createdAt":"2020-08-14T01:48:33.789Z","updatedAt":"2020-08-14T01:48:40.355Z","SubClientId":1774}}],"NodeId":5},{"id":"14523","internalFlowId":"10163","type":"quantum","selected":false,"name":"3e16e5b7-6dfe-47f1-8863-1855bb2a6404","in":false,"label":"Button","description":"Nothing added here yet.","qTrigger":null,"defaultValue":null,"properties":{"clientService":{"key":"q_digital_in","name":"Digital In","uuid":"4ae77ff2-1d7c-5100-96d0-50b42a0fc08a","value_len":"1","props":["read","notify"],"propChar":[],"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"drivers":["custom_gpio_in","custom_Q4x3keypad","custom_mcp23017_in","custom_HC_SR501","custom_osepp_prox_01","custom_pull_down_input_le","custom_floating_input_le","custom_pull_up_input_le"]}},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[{"id":3644,"createdAt":"2020-08-14T01:50:46.331Z","updatedAt":"2020-08-14T01:50:46.331Z","clientId":255,"subClientId":1774,"serviceId":6889,"PortId":14523,"client":{"id":255,"name":"Q #02858","mac_address":"08:6b:d7:49:0b:2a","proxy":"02:81:e6:8e:59:ca","state":"ON","rssi":-58,"batteryLevel":100,"batteryMode":"USB","lifeCycle":false,"manufacturer":"Quantum","category":{"category":null},"advertisement":{"localName":"Q #02858","txPowerLevel":1,"serviceData":[],"serviceUuids":["5155414e54554d430001ffffffffffff"],"solicitationServiceUuids":[],"serviceSolicitationUuids":[]},"energyInformation":{"batteryLevel":"100%","batteryVoltage":"3282mV","deviceVoltage":"3.285V","internalResistance":"0.10","powerTypeNumeric":1,"powerType":"USB"},"createdAt":"2020-08-14T01:46:33.780Z","updatedAt":"2020-08-14T01:48:40.932Z","proxyLinkId":1},"subClient":{"id":1774,"name":"Right","category":{"category":7,"subCategory":2},"index":2,"createdAt":"2020-08-14T01:48:33.043Z","updatedAt":"2020-08-14T01:48:39.885Z","ClientId":255},"service":{"id":6889,"client_mac_address":null,"name":"Button","signalType":"Digital In","serviceKey":"q_digital_in","uuid":"4ae77ff21d7c510596d050b42a0fc08a","characteristics":[{"uuid":"6375a20d31ae4456aaf68fc84e3cce26","name":null,"type":null,"properties":["read"],"value":"Button"},{"uuid":"a97ba6d9c40941188735b5bef87b9afd","name":null,"type":null,"properties":["read","notify"],"value":"\u0000"},{"uuid":"93d79faa21ed4ce7b658d9bcb06bd943","name":null,"type":null,"properties":["read"],"value":"-"},{"uuid":"1270fde2fd5e4e4fb866241f105f7b15","name":null,"type":null,"properties":["read"],"value":"\u0001\u0001Right~7~2"}],"type":null,"createdAt":"2020-08-14T01:48:33.791Z","updatedAt":"2020-08-14T01:48:40.358Z","SubClientId":1774}}],"NodeId":5}],"category":"Input Control","version":"0.0.1"},{"id":"6","internalFlowId":"6","type":"quantum","selected":false,"x":1031.429,"y":692.372,"name":"Servo","mappingDescription":"No instructions defined!","description":"The Servo can adjust to any position between 0 and 180 degrees","color":"#02B0EF","qType":"Widget","originalName":"Servo","factoryId":null,"properties":{"executableWidgetCode":"if(trigger === 0){\n return [inPorts[0].value]\n}else if(trigger === 1){\n return [{degrees: inPorts[1].value, bot_offset: inPorts[2].value || 0, top_offset: inPorts[3].value || 0}]\n}","mappableCategory":{"category":4,"subCategory":4},"multiWidget":false,"manufacturer":"generic"},"ports":[{"id":"14524","internalFlowId":"10164","type":"quantum","selected":false,"name":"17d27b7f-6bc5-4804-bdae-a2afee623e04","in":true,"label":"Servo","description":"Nothing added here yet.","qTrigger":true,"defaultValue":null,"properties":{"hidden":true,"clientService":{"key":"q_servo","name":"Servo Motor","uuid":"3248ed17-eb11-5100-90b3-a95cd4c64686","value_len":"1","props":["write"],"propChar":[],"signalType":{"key":"servo","name":"Servo","baseType":{"name":"JSON"},"internal":true},"drivers":["custom_generic_servo","custom_pca9865_servo","custom_tlc5940_servo"]}},"signalType":{"key":"servo","name":"Servo","baseType":{"name":"JSON"},"internal":true},"index":0,"clients":[{"id":3645,"createdAt":"2020-08-14T01:50:46.331Z","updatedAt":"2020-08-14T01:50:46.331Z","clientId":256,"subClientId":1772,"serviceId":6875,"PortId":14524,"client":{"id":256,"name":"Q #03220","mac_address":"08:6b:d7:49:0c:94","proxy":"02:81:e6:8e:59:ca","state":"ON","rssi":-44,"batteryLevel":100,"batteryMode":"USB","lifeCycle":false,"manufacturer":"Quantum","category":{"category":null},"advertisement":{"localName":"Q #03220","txPowerLevel":1,"serviceData":[],"serviceUuids":["5155414e54554d430000ffffffffffff"],"solicitationServiceUuids":[],"serviceSolicitationUuids":[]},"energyInformation":{"batteryLevel":"100%","batteryVoltage":"3314mV","deviceVoltage":"3.314V","internalResistance":"0.03","powerTypeNumeric":1,"powerType":"USB"},"createdAt":"2020-08-14T01:46:40.880Z","updatedAt":"2020-08-14T01:48:27.931Z","proxyLinkId":1},"subClient":{"id":1772,"name":"Servo","category":{"category":4,"subCategory":4},"index":3,"createdAt":"2020-08-14T01:48:23.654Z","updatedAt":"2020-08-14T01:48:27.303Z","ClientId":256},"service":{"id":6875,"client_mac_address":null,"name":"Servo","signalType":"Servo Motor","serviceKey":"q_servo","uuid":"3248ed17eb11510290b3a95cd4c64686","characteristics":[{"uuid":"6375a20d31ae4456aaf68fc84e3cce26","name":null,"type":null,"properties":["read"],"value":"Servo"},{"uuid":"a97ba6d9c40941188735b5bef87b9afd","name":null,"type":null,"properties":["write"],"value":""},{"uuid":"93d79faa21ed4ce7b658d9bcb06bd943","name":null,"type":null,"properties":["read"],"value":"-"},{"uuid":"1270fde2fd5e4e4fb866241f105f7b15","name":null,"type":null,"properties":["read"],"value":"\u0001\u0002Servo~4~4"}],"type":null,"createdAt":"2020-08-14T01:48:23.938Z","updatedAt":"2020-08-14T01:48:27.669Z","SubClientId":1772}}],"NodeId":6},{"id":"14525","internalFlowId":"10165","type":"quantum","selected":false,"name":"33b5a667-acdf-483b-ac84-ae150680f5d4","in":true,"label":"Degrees","description":"Nothing added here yet.","qTrigger":true,"defaultValue":null,"properties":{"virtual":true},"signalType":{"key":"scaled_number","name":"Scaled Number","baseType":{"name":"Number"},"range":{"min":0,"max":180}},"index":1,"clients":[],"NodeId":6},{"id":"14526","internalFlowId":"10166","type":"quantum","selected":false,"name":"d18cfc13-29c8-47d8-a557-9e84cbc14df3","in":true,"label":"0 Offsets","description":"Nothing added here yet.","qTrigger":true,"defaultValue":null,"properties":{"virtual":true},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":2,"clients":[],"NodeId":6},{"id":"14527","internalFlowId":"10167","type":"quantum","selected":false,"name":"41acaff7-c984-41f2-b902-ed1d3bc18f6d","in":true,"label":"180 Offsets","description":"Nothing added here yet.","qTrigger":true,"defaultValue":null,"properties":{"virtual":true},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":3,"clients":[],"NodeId":6}],"category":"Actuators","version":"0.0.1"},{"id":"7","internalFlowId":"7","type":"quantum","selected":false,"x":618.464,"y":646.487,"name":"Manual Ranging","mappingDescription":null,"description":"Set custom Ranges to a numeric value.","color":"#DE00BC","qType":"Snippet","originalName":"Manual Ranging","factoryId":null,"properties":{"executeCode":"const value_between = (value, min, max) => {\n if(min > max){\n return value <= min && value >= max;\n }else if(max > min){\n return value >= min && value <= max;\n }else{\n return true;\n }\n}\n\n\nconst value = inPorts[0].value ? parseFloat(inPorts[0].value) : 0;\nconst newMin = inPorts[3].value ? parseFloat(inPorts[3].value) : 0;\nconst newMax = inPorts[4].value ? parseFloat(inPorts[4].value) : 0;\nconst oldMin = inPorts[1].value ? parseFloat(inPorts[1].value) : 0;\nconst oldMax = inPorts[2].value ? parseFloat(inPorts[2].value) : 0;\n\nif(value_between(value, oldMin, oldMax)){\n \n const retValue = ((value - oldMin) * (newMax - newMin) / (oldMax - oldMin) + newMin);\n \n if(inPorts[5].value)\n return [Math.round(retValue)];\n else{\n return [retValue];\n } \n}"},"ports":[{"id":"14528","internalFlowId":"10168","type":"quantum","selected":false,"name":"17c6fca9-2485-4b8d-976e-64d3ae544462","in":true,"label":"Value","description":null,"qTrigger":true,"defaultValue":"","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":0,"clients":[],"NodeId":7},{"id":"14529","internalFlowId":"10169","type":"quantum","selected":false,"name":"524f25a3-f688-415b-92e1-1e22959ec122","in":true,"label":"In Min","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":1,"clients":[],"NodeId":7},{"id":"14530","internalFlowId":"10170","type":"quantum","selected":false,"name":"7ae11d9a-ebe2-43cd-81aa-852a43a4f164","in":true,"label":"In Max","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":2,"clients":[],"NodeId":7},{"id":"14531","internalFlowId":"10171","type":"quantum","selected":false,"name":"af9a84b2-138e-453c-93ad-b23b25210950","in":true,"label":"Out Min","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":3,"clients":[],"NodeId":7},{"id":"14532","internalFlowId":"10172","type":"quantum","selected":false,"name":"646f7619-05db-4a79-bb80-d9b9cf6a0af8","in":true,"label":"Out Max","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":4,"clients":[],"NodeId":7},{"id":"14533","internalFlowId":"10173","type":"quantum","selected":false,"name":"6dd41a73-7606-4919-8c3a-fbbcb987a45a","in":true,"label":"Rounded","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":5,"clients":[],"NodeId":7},{"id":"14534","internalFlowId":"10174","type":"quantum","selected":false,"name":"10e972b1-d8d0-40a0-aef8-04e926a816e8","in":false,"label":"Value","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":6,"clients":[],"NodeId":7}],"category":"Compare","version":"0.0.1"},{"id":"8","internalFlowId":"8","type":"quantum","selected":false,"x":-195.421,"y":880.09,"name":"Straight","mappingDescription":null,"description":"Adds a Button that can be clicked on the Interface. Outputs are True and False.","color":"#07D174","qType":"Gadget","originalName":"Button","factoryId":null,"properties":{"gadgetType":{"name":"Button"},"gadgetLabel":"Straight","gadgetColor":"info","gadgetGroup":"1","gadgetIcon":"buttonIcon","gadgetStyle":"full"},"ports":[{"id":"14535","internalFlowId":"10175","type":"quantum","selected":false,"name":"af2d2ae8-2554-47b5-9c47-4d1968d892cd","in":true,"label":"Label","description":null,"qTrigger":false,"defaultValue":null,"properties":{},"signalType":{"key":"string","name":"String","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":8},{"id":"14536","internalFlowId":"10176","type":"quantum","selected":false,"name":"15b64081-3158-4939-8e59-1c5844ab1b66","in":true,"label":"State","description":null,"qTrigger":true,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":1,"clients":[],"NodeId":8},{"id":"14537","internalFlowId":"10177","type":"quantum","selected":false,"name":"b121bc1a-7c38-45bc-ba94-214ca7eb264f","in":false,"label":"State","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":8}],"category":"Action","version":"0.0.1"},{"id":"9","internalFlowId":"9","type":"quantum","selected":false,"x":-198.624,"y":1043.415,"name":"Left","mappingDescription":null,"description":"Adds a Button that can be clicked on the Interface. Outputs are True and False.","color":"#07D174","qType":"Gadget","originalName":"Button","factoryId":null,"properties":{"gadgetType":{"name":"Button"},"gadgetLabel":"Left","gadgetColor":"info","gadgetGroup":"1","gadgetIcon":"buttonIcon","gadgetStyle":"full"},"ports":[{"id":"14538","internalFlowId":"10178","type":"quantum","selected":false,"name":"dbebf689-54ae-46c3-b71c-4d387927ca1c","in":true,"label":"Label","description":null,"qTrigger":false,"defaultValue":null,"properties":{},"signalType":{"key":"string","name":"String","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":9},{"id":"14539","internalFlowId":"10179","type":"quantum","selected":false,"name":"bbb5d43e-68df-4b8f-82cb-c3258179d3e2","in":true,"label":"State","description":null,"qTrigger":true,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":1,"clients":[],"NodeId":9},{"id":"14540","internalFlowId":"10180","type":"quantum","selected":false,"name":"3e3f8128-4058-4e2b-b3d0-f697a40dc9d5","in":false,"label":"State","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":9}],"category":"Action","version":"0.0.1"},{"id":"10","internalFlowId":"10","type":"quantum","selected":false,"x":-198.624,"y":1203.538,"name":"Right","mappingDescription":null,"description":"Adds a Button that can be clicked on the Interface. Outputs are True and False.","color":"#07D174","qType":"Gadget","originalName":"Button","factoryId":null,"properties":{"gadgetType":{"name":"Button"},"gadgetLabel":"Right","gadgetColor":"info","gadgetGroup":"1","gadgetIcon":"buttonIcon","gadgetStyle":"full"},"ports":[{"id":"14541","internalFlowId":"10181","type":"quantum","selected":false,"name":"ec822372-ef07-4dc5-917a-08ab8235eada","in":true,"label":"Label","description":null,"qTrigger":false,"defaultValue":null,"properties":{},"signalType":{"key":"string","name":"String","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":10},{"id":"14542","internalFlowId":"10182","type":"quantum","selected":false,"name":"b000e9a4-fb8a-413e-aa17-7daf3293226c","in":true,"label":"State","description":null,"qTrigger":true,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":1,"clients":[],"NodeId":10},{"id":"14543","internalFlowId":"10183","type":"quantum","selected":false,"name":"c79b147a-fd52-42ac-b975-a675de215c55","in":false,"label":"State","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":10}],"category":"Action","version":"0.0.1"},{"id":"11","internalFlowId":"11","type":"quantum","selected":false,"x":97.603,"y":872.083,"name":"90","mappingDescription":null,"description":"Set a static number that can be triggered.","color":"#DE00BC","qType":"Snippet","originalName":"Static Number","factoryId":null,"properties":{"executeCode":"if(trigger === 0){\n return [parseFloat(inPorts[1].value) || 0];\n} "},"ports":[{"id":"14544","internalFlowId":"10184","type":"quantum","selected":false,"name":"4fa320e8-b305-4d84-9f59-66abd8342445","in":true,"label":"Trigger","description":null,"qTrigger":true,"defaultValue":null,"properties":{"defaultHidden":true},"signalType":{"key":"trigger","name":"Trigger","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":11},{"id":"14545","internalFlowId":"10185","type":"quantum","selected":false,"name":"7a07bd83-3777-4dde-ac58-7babe51ff5e0","in":true,"label":"Value","description":null,"qTrigger":false,"defaultValue":"","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":1,"clients":[],"NodeId":11},{"id":"14546","internalFlowId":"10186","type":"quantum","selected":false,"name":"41b09ba6-66a8-4161-b909-2551deea2aad","in":false,"label":"Value","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":2,"clients":[],"NodeId":11}],"category":"Data","version":"0.0.1"},{"id":"12","internalFlowId":"12","type":"quantum","selected":false,"x":97.603,"y":1038.611,"name":"0","mappingDescription":null,"description":"Set a static number that can be triggered.","color":"#DE00BC","qType":"Snippet","originalName":"Static Number","factoryId":null,"properties":{"executeCode":"if(trigger === 0){\n return [parseFloat(inPorts[1].value) || 0];\n} "},"ports":[{"id":"14547","internalFlowId":"10187","type":"quantum","selected":false,"name":"b1d6251b-9124-4752-aa99-d1abd2a585f7","in":true,"label":"Trigger","description":null,"qTrigger":true,"defaultValue":null,"properties":{"defaultHidden":true},"signalType":{"key":"trigger","name":"Trigger","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":12},{"id":"14548","internalFlowId":"10188","type":"quantum","selected":false,"name":"ee2a788b-7ad2-430d-b8f1-3672a3ae3c5b","in":true,"label":"Value","description":null,"qTrigger":false,"defaultValue":"","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":1,"clients":[],"NodeId":12},{"id":"14549","internalFlowId":"10189","type":"quantum","selected":false,"name":"4cebcdca-56b7-4aba-ab4f-03dcfb27f487","in":false,"label":"Value","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":2,"clients":[],"NodeId":12}],"category":"Data","version":"0.0.1"},{"id":"13","internalFlowId":"13","type":"quantum","selected":false,"x":96.002,"y":1197.133,"name":"180","mappingDescription":null,"description":"Set a static number that can be triggered.","color":"#DE00BC","qType":"Snippet","originalName":"Static Number","factoryId":null,"properties":{"executeCode":"if(trigger === 0){\n return [parseFloat(inPorts[1].value) || 0];\n} "},"ports":[{"id":"14550","internalFlowId":"10190","type":"quantum","selected":false,"name":"b6edf25c-e384-45d7-8039-daafb729829b","in":true,"label":"Trigger","description":null,"qTrigger":true,"defaultValue":null,"properties":{"defaultHidden":true},"signalType":{"key":"trigger","name":"Trigger","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":13},{"id":"14551","internalFlowId":"10191","type":"quantum","selected":false,"name":"a9ed36ed-9928-4e7b-acd1-c100efc98e8d","in":true,"label":"Value","description":null,"qTrigger":false,"defaultValue":"","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":1,"clients":[],"NodeId":13},{"id":"14552","internalFlowId":"10192","type":"quantum","selected":false,"name":"3b895851-944a-4d44-8700-81725b240a95","in":false,"label":"Value","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":2,"clients":[],"NodeId":13}],"category":"Data","version":"0.0.1"},{"id":"14","internalFlowId":"14","type":"quantum","selected":false,"x":124.655,"y":393.189,"name":"Digital Toggle","mappingDescription":null,"description":"Can be used to Toggle a Digital Signal. Set is always True, Reset always false.","color":"#DE00BC","qType":"Snippet","originalName":"Digital TOGGLE","factoryId":null,"properties":{"executeCode":"switch (trigger) {\n case 0:\n context.state = true;\n break;\n case 1:\n context.state = false;\n break;\n case 2:\n {\n context.state = !context.state;\n break;\n };\n default:\n break;\n};\nreturn [context.state, !context.state];"},"ports":[{"id":"14553","internalFlowId":"10193","type":"quantum","selected":false,"name":"83815e22-f0fb-4b05-9bee-f576281abb12","in":true,"label":"Set","description":null,"qTrigger":true,"defaultValue":"","properties":{},"signalType":{"key":"trigger","name":"Trigger","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":14},{"id":"14554","internalFlowId":"10194","type":"quantum","selected":false,"name":"e0c08829-0edb-4afe-a426-86db9e084949","in":true,"label":"Reset","description":null,"qTrigger":true,"defaultValue":"","properties":{},"signalType":{"key":"trigger","name":"Trigger","baseType":{"name":"String"}},"index":1,"clients":[],"NodeId":14},{"id":"14555","internalFlowId":"10195","type":"quantum","selected":false,"name":"950ca94d-82c4-4195-a299-8bd5c89c5ecb","in":true,"label":"Toggle","description":null,"qTrigger":true,"defaultValue":"","properties":{},"signalType":{"key":"trigger","name":"Trigger","baseType":{"name":"String"}},"index":2,"clients":[],"NodeId":14},{"id":"14556","internalFlowId":"10196","type":"quantum","selected":false,"name":"9154708e-7121-41c3-9837-7b854c3a7947","in":false,"label":"Out","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":3,"clients":[],"NodeId":14},{"id":"14557","internalFlowId":"10197","type":"quantum","selected":false,"name":"d39a7ef6-c58c-497f-9dab-c99055f22bd8","in":false,"label":"Out inverted","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":4,"clients":[],"NodeId":14}],"category":"Logic","version":"0.0.1"},{"id":"15","internalFlowId":"15","type":"quantum","selected":false,"x":-149.053,"y":397.981,"name":"Forward","mappingDescription":null,"description":"Adds a Button that can be clicked on the Interface. Outputs are True and False.","color":"#07D174","qType":"Gadget","originalName":"Button","factoryId":null,"properties":{"gadgetType":{"name":"Button"},"gadgetLabel":"Button","gadgetColor":"info","gadgetGroup":"1475","gadgetIcon":"buttonIcon","gadgetStyle":"full"},"ports":[{"id":"14558","internalFlowId":"10198","type":"quantum","selected":false,"name":"46df6b85-da76-4bda-afc5-ba11e2067684","in":true,"label":"Label","description":null,"qTrigger":false,"defaultValue":null,"properties":{},"signalType":{"key":"string","name":"String","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":15},{"id":"14559","internalFlowId":"10199","type":"quantum","selected":false,"name":"e569e6ca-ec92-4744-942d-00bdab6738de","in":true,"label":"State","description":null,"qTrigger":true,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":1,"clients":[],"NodeId":15},{"id":"14560","internalFlowId":"10200","type":"quantum","selected":false,"name":"0f7acd0e-b520-447d-a844-0c0af0375af0","in":false,"label":"State","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":15}],"category":"Action","version":"0.0.1"}],"status":"Stopped","rendering":{"id":"1215","tabs":[{"id":"1363","internalFlowId":"1362","name":"Tab 1","position":0,"groups":[{"id":"1743","internalFlowId":"1742","name":"Group 1","position":0,"gadgets":[{"id":"9368","NodeId":8,"GadgetGroupId":1743,"position":0},{"id":"9369","NodeId":9,"GadgetGroupId":1743,"position":1},{"id":"9370","NodeId":10,"GadgetGroupId":1743,"position":2},{"id":"9371","NodeId":15,"GadgetGroupId":1743,"position":3}]}]}]},"createdAt":"2020-08-14T01:39:34.138Z","errorLog":null,"debugFlag":false,"version":"0.0.1"}
Steering Car PCB Firmware
JSON{"id":188,"name":"Steering Car","commit":"1.2.3-development-3a6d1287","lifecycle":false,"signal":[{"disabled":false,"subClientIndex":0,"subClientName":"Motor BL","subClientCategory":4,"subClientSubCategory":3,"serviceName":"Motor","service":"q_dc_motor","driver":"custom_tri_state_motor","driverValues":{"enablePort":"gpioPortF","enablePin":"2","enableChannel":"26","firstDcPort":"gpioPortB","firstDcPin":"11","secondDcPort":"gpioPortF","secondDcPin":"3"},"signalType":{"key":"motor","name":"Motor","baseType":{"name":"Number"},"range":{"min":-255,"max":255},"internal":true}},{"disabled":false,"subClientIndex":1,"subClientName":"Motor BR","subClientCategory":4,"subClientSubCategory":3,"serviceName":"Motor","service":"q_dc_motor","driver":"custom_tri_state_motor","driverValues":{"enablePort":"gpioPortF","enablePin":"1","enableChannel":"25","firstDcPort":"gpioPortD","firstDcPin":"13","secondDcPort":"gpioPortD","secondDcPin":"14"},"signalType":{"key":"motor","name":"Motor","baseType":{"name":"Number"},"range":{"min":-255,"max":255},"internal":true}},{"disabled":false,"subClientIndex":2,"subClientName":"Servo","subClientCategory":4,"subClientSubCategory":4,"serviceName":"Servo","service":"q_servo","driver":"custom_generic_servo","driverValues":{"port":"gpioPortD","pin":"15","channel":"23"},"signalType":{"key":"servo","name":"Servo","baseType":{"name":"JSON"},"internal":true}}],"version":"0.0.1"}
Comments