' EndBASIC ' Copyright 2021 Julio Merino ' ' Licensed under the Apache License, Version 2.0 (the "License"); you may not ' use this file except in compliance with the License. You may obtain a copy ' of the License at: ' ' http://www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, WITHOUT ' WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the ' License for the specific language governing permissions and limitations ' under the License. button = 8 led = 18 CLS COLOR 11 PRINT PRINT " GPIO demo" PRINT "===========" COLOR PRINT PRINT "This demo showcases how to poll a hardware button attached to a GPIO" PRINT "pin and how to flash an LED attached to another one." PRINT COLOR 2 PRINT "To get started, follow these steps:" COLOR PRINT PRINT "1. Connect an LED to pin"; led; "and to ground; don't forget to add a" PRINT " resistor inline." PRINT PRINT "2. Connect a push button to pin"; button; "and to ground. We'll be" PRINT " using the built-in pull-up resistor for the input pin so there is" PRINT " no need to do any extra wiring." PRINT COLOR 1 PRINT "This demo is only functional on the Raspberry Pi and assumes you have" PRINT "built EndBASIC with --features=rpi. If these conditions are not met," PRINT "the demo will fail to run." COLOR PRINT INPUT "Press ENTER when you are ready or CTRL+C to exit the demo...", dummy$ CLS COLOR 11 PRINT PRINT " GPIO demo" PRINT "===========" COLOR PRINT ' Start by configuring the GPIO pins in the right modes. GPIO_SETUP button, "IN-PULL-UP" GPIO_SETUP led, "OUT" ' Now poll for a button press. Note that we wait until the line value goes ' low because we enabled the built-in pull-*up* resistor. PRINT "Waiting for a button press on pin"; button; "..." WHILE GPIO_READ(button) SLEEP 0.05 WEND ' The button was pressed, so now flash the LED a bunch of times. PRINT "Button pressed! Blinking LED on pin"; led; "..." FOR i = 5 TO 1 STEP -1 GPIO_WRITE led, TRUE SLEEP 0.1 GPIO_WRITE led, FALSE SLEEP 0.1 PRINT i NEXT