2025年4月8日 星期二

修改HUB 8735 Ultra內建範例來控制JQ 6500來播放MP3音樂

 前篇文章:國產WiFi晶片8735 Ultra初體驗


範例一、內建範例

 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);
}


沒有留言:

張貼留言