範例一、內建範例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | /* This sketch shows how to use GPIO interrupt and doing task in interrupt handler At first we light on LED. As button pin meets voltage rise signal, then interrupt happen and invoke interrupt handler. Then we change LED state. If LED was light on, then turn it off. If LED was light off, then turn it on. Example guide: https://www.amebaiot.com/en/amebapro2-arduino-gpio-interrupt/ */ int button = PUSH_BTN; int led = LED_BUILTIN; int ledState = 1; void button_handler(uint32_t id, uint32_t event) { if (ledState == 0) { // turn on LED ledState = 1; digitalWrite(led, ledState); } else { // turn off LED ledState = 0; digitalWrite(led, ledState); } } void setup() { pinMode(led, OUTPUT); digitalWrite(led, ledState); pinMode(button, INPUT_IRQ_RISE); digitalSetIrqHandler(button, button_handler); } void loop() { delay(1000); } |
範例二、把LED控制接腳改成AMB_D0(PF_2 G)
接腳:
JQ6500 SPK+、SPK-接至喇叭的正負極。
JQ6500 Vcc、GND接至HUB 8735 Ultra Vcc和GND
JQ6500 K1接至PF_2
程式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | /* This sketch shows how to use GPIO interrupt and doing task in interrupt handler At first we light on LED. As button pin meets voltage rise signal, then interrupt happen and invoke interrupt handler. Then we change LED state. If LED was light on, then turn it off. If LED was light off, then turn it on. Example guide: https://www.amebaiot.com/en/amebapro2-arduino-gpio-interrupt/ */ int button = PUSH_BTN; int led = AMB_D0; int ledState = 1; void button_handler(uint32_t id, uint32_t event) { if (ledState == 0) { // turn on LED ledState = 1; digitalWrite(led, ledState); } else { // turn off LED ledState = 0; digitalWrite(led, ledState); } } void setup() { pinMode(led, OUTPUT); digitalWrite(led, ledState); pinMode(button, INPUT_IRQ_RISE); digitalSetIrqHandler(button, button_handler); } void loop() { delay(1000); } |