// hello.button-blink.RP2040.1.ino // Jeff Ritchie 02/13/26 // FabAcademy // Based on Seeed XIAO RP2040 button, blink, echo hello-world, single core // Neil Gershenfeld 12/28/23 // This work may be reproduced, modified, distributed, // performed, and displayed for any purpose, but must // acknowledge this project. Copyright is retained and // must be preserved. The work is provided as is; no // warranty is provided, and users accept all liability. // add RP2040 core // https://github.com/earlephilhower/arduino-pico #define led_pin D7 // pin 7 on the RP2040 is D7 #define button_pin D0 // pin 0 and pin d0 String serialInput = ""; //declares a variable serialInput and sets as a string //function that will check serial input void checkSerial(){ serialInput = Serial.readString(); //sets serial input variable to result of readString() serialInput.trim(); //removes end of line /r and /n Serial.print("you typed: "); Serial.println(serialInput); } void setup() { pinMode(led_pin,OUTPUT); //assigns the led_pin as output GPIO pinMode(button_pin,INPUT_PULLUP); //assigns to the button_pin GPIO Serial.begin(115200); //set baud rate Serial.setTimeout(10); } void loop() { if (Serial.available()){ //run check serial function checkSerial(); } if (serialInput == "hello") { digitalWrite(led_pin,HIGH); //blink LED three times delay(200); digitalWrite(led_pin,LOW); delay(200); digitalWrite(led_pin,HIGH); delay(200); digitalWrite(led_pin,LOW); delay(200); digitalWrite(led_pin,HIGH); delay(200); digitalWrite(led_pin,LOW); serialInput = ""; //reset serialInput variable } if (serialInput == "world") { digitalWrite(led_pin,HIGH); //blink LED five times delay(200); digitalWrite(led_pin,LOW); delay(200); digitalWrite(led_pin,HIGH); delay(200); digitalWrite(led_pin,LOW); delay(200); digitalWrite(led_pin,HIGH); delay(200); digitalWrite(led_pin,LOW); delay(200); digitalWrite(led_pin,HIGH); delay(200); digitalWrite(led_pin,LOW); delay(200); digitalWrite(led_pin,HIGH); delay(200); digitalWrite(led_pin,LOW); delay(200); serialInput = ""; //reset serialInput variable } if ((digitalRead(button_pin) == LOW)) { //while button is pressed, turn on LED digitalWrite(led_pin,HIGH); Serial.println("button pressed"); } else if ((digitalRead(button_pin) == HIGH)) { //default- LED off digitalWrite(led_pin,LOW); } }