Exercise 1.1
let port; let connectBtn; let baudrate = 9600; let lastMessage = ""; function setup() { createCanvas(400, 400); background(220); port = createSerial(); // in setup, we can open ports we have used previously // without user interaction let usedPorts = usedSerialPorts(); if (usedPorts.length > 0) { port.open(usedPorts[0], baudrate); } // any other ports can be opened via a dialog after // user interaction (see connectBtnClick below) connectBtn = createButton("Connect to Arduino"); connectBtn.position(80, 200); connectBtn.mousePressed(connectBtnClick); } function draw() { background("255"); // Read from the serial port. This non-blocking function // returns the complete line until the character or "" let str = port.readUntil("\n"); if (str.length > 0) { // Complete line received // console.log(str); lastMessage = str; } // Display the most recent message text("Last message: " + lastMessage, 10, height - 20); // change button label based on connection status if (!port.opened()) { connectBtn.html("Connect to Arduino"); } else { connectBtn.html("Disconnect"); } ellipse(lastMessage,10,20,20) } function connectBtnClick() { if (!port.opened()) { port.open("Arduino", baudrate); } else { port.close(); } }
Exercise 1.2
let port; let connectBtn; let baudrate = 9600; function setup() { createCanvas(255, 285); port = createSerial(); let usedPorts = usedSerialPorts(); if (usedPorts.length > 0) { port.open(usedPorts[0], baudrate); } else { connectBtn = createButton("Connect to Serial"); connectBtn.mousePressed(() => port.open(baudrate)); } } function draw() { background(225); circle(140,mouseY,25,25): let sendtoArduino = String(mouseY) + "\n" port.write(sendtoArduino); }
Exercise 1.3
int led = 5; void setup() { Serial.begin(9600); } void loop() { if (Serial.available()) { int ballState = Serial.parseInt(); if (ballState == 1) { digitalWrite(led, HIGH); // ball on ground } else { digitalWrite(led, LOW); // ball in air or default } } // read the input pin: int potentiometer = analogRead(A1); int mappedPotValue = map(potentiometer, 0, 1023, 0, 900); // print the value to the serial port. Serial.println(mappedPotValue); delay(100); }