Sorry for my late submission , I was facing a lot of problems that I was not aware how to solve, apparently my browser (Opera GX) does not support p5 – arduino communication, it took me ages to realize, and I compensated with putting extra effort into my assignment.
1)
2)
3)
// bounce detection and wind control // pin setup const int potPin = A0; // pot for wind control const int ledPin = 9; // led that lights up on bounce // vars int potValue = 0; // store pot reading float windValue = 0; // mapped wind value String inputString = ""; // string to hold incoming data boolean stringComplete = false; // flag for complete string unsigned long ledTimer = 0; // timer for led boolean ledState = false; // led state tracking const long ledDuration = 200; // led flash duration ms void setup() { // set led pin as output pinMode(ledPin, OUTPUT); // start serial comm Serial.begin(9600); // reserve 200 bytes for inputString inputString.reserve(200); } void loop() { // read pot val potValue = analogRead(potPin); // map to wind range -2 to 2 windValue = map(potValue, 0, 1023, -20, 20) / 10.0; // send wind value to p5 Serial.print("W:"); Serial.println(windValue); // check for bounce info if (stringComplete) { // check if it was a bounce message if (inputString.startsWith("BOUNCE")) { // turn on led digitalWrite(ledPin, HIGH); ledState = true; ledTimer = millis(); } // clear string inputString = ""; stringComplete = false; } // check if led should turn off if (ledState && (millis() - ledTimer >= ledDuration)) { digitalWrite(ledPin, LOW); ledState = false; } // small delay to prevent serial flood delay(50); } // serial event occurs when new data arrives void serialEvent() { while (Serial.available()) { // get new byte char inChar = (char)Serial.read(); // add to input string if not newline if (inChar == '\n') { stringComplete = true; } else { inputString += inChar; } } }