
I wanted to make some controllers for the pong game I’ve been plugging away at for ICM. Constructing the prototypes was pretty straight forward, but getting the code to work has been a whole other thing.
I had some slide pots already from a previous project, so all I really needed to do was make a housing for them. Cardboard is free, and I actually quite like it as a material.







The Arduino code seems to work just fine:
void setup() {
Serial.begin(9600);
}
void loop() {
//send two things separated by a commma
int slideOne = analogRead(A0); // read the input pin
int mappedSlideOne = map(slideOne, 0, 1023, 0, 255); // remap the pot value to fit in 1 byte
int slideTwo = analogRead(A5); // read the input pin
int mappedSlideTwo = map(slideTwo, 0, 1023, 0, 255); // remap the pot value to fit in 1 byte
Serial.print(mappedSlideOne); // print it out the serial port
Serial.print(",");
Serial.println(mappedSlideTwo);
delay(1);
}
But the p5.js code keeps coming up ‘undefined’. I can’t figure out what’s wrong with the code. After I’ve gotten that worked out it should be pretty easy to drop it into the pong code I’ve already been working on.
var serial; // variable to hold an instance of the serialport library
var portName = '/dev/cu.usbmodem1421'; // fill in your serial port name here
var inData; // for incoming serial data
var myData;
var input;
var input2;
var inString;
function setup() {
serial = new p5.SerialPort(); // make a new instance of the serialport library
serial.on('list', printList); // set a callback function for the serialport list event
serial.on('connected', serverConnected); // callback for connecting to the server
serial.on('open', portOpen); // callback for the port opening
serial.on('data', serialEvent); // callback for when new data arrives
serial.on('error', serialError); // callback for errors
serial.on('close', portClose); // callback for the port closing
serial.open(portName); // open a serial port
serial.list(); // list the serial ports
createCanvas(400, 300);
}
function draw() {
background(0);
fill(255);
//text("sensor value: " + input + "," + input2, 30, 30);
text("sensor value: " + input, 30, 30);
text("hello world", 30, 50);
print(inString);
}
function serverConnected() {
println('connected to server.');
}
function portOpen() {
println('the serial port opened.');
}
function serialEvent() {
inString = serial.readStringUntil('\r\n');
if (inString.length > 0) {
var parts = inString.split(","); //split the incoming into an array based on the comma
input = int(parts[0]);
input2 = int(parts[1]);
print(input2 + "Got data" + input);
}
}
function serialError(err) {
println('Something went wrong with the serial port. ' + err);
}
function portClose() {
println('The serial port closed.');
}
// get the list of ports:
function printList(portList) {
// portList is an array of serial port names
for (var i = 0; i < portList.length; i++) {
// Display the list the console:
println(i + " " + portList[i]);
}
}