-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathButtonBlinky.java
More file actions
60 lines (51 loc) · 1.32 KB
/
Copy pathButtonBlinky.java
File metadata and controls
60 lines (51 loc) · 1.32 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import board.*;
import pico.*;
import pimoroni.*;
@Board(Type.Tiny2040)
class ButtonBlinky
{
public static int IRQ_PIN = 3;
public static int RED_LED = tiny2040.LED_R_PIN;
public static int GREEN_LED = tiny2040.LED_G_PIN;
public static int BLUE_LED = tiny2040.LED_B_PIN;
public static int RED_LED_2 = 7;
public static int GREEN_LED_2 = 6;
public static void main(String[] args)
{
stdio.init_all();
gpio.init(IRQ_PIN);
gpio.set_dir(IRQ_PIN, gpio.INPUT);
gpio.pull_up(IRQ_PIN);
gpio.set_input_enabled(IRQ_PIN, true);
gpio.set_irq_enabled_with_callback(IRQ_PIN, gpio.IRQ_EDGE_RISE, true, ButtonBlinky::gpio_irq_callback);
gpio.init(RED_LED);
gpio.set_dir(RED_LED, gpio.OUTPUT);
gpio.init(GREEN_LED);
gpio.set_dir(GREEN_LED, gpio.OUTPUT);
gpio.init(BLUE_LED);
gpio.set_dir(BLUE_LED, gpio.OUTPUT);
gpio.init(RED_LED_2);
gpio.set_dir(RED_LED_2, gpio.OUTPUT);
gpio.init(GREEN_LED_2);
gpio.set_dir(GREEN_LED_2, gpio.OUTPUT);
gpio.put(BLUE_LED, 1);
gpio_irq_callback(IRQ_PIN, gpio.IRQ_EDGE_RISE);
while (true)
{
time.sleep_ms(1000);
}
}
static int i = 0;
static void gpio_irq_callback(int pin, int events)
{
if (events == gpio.IRQ_EDGE_RISE)
{
int k = i;
i = (i + 1) % 2;
gpio.put(GREEN_LED, i);
gpio.put(RED_LED, k);
gpio.put(GREEN_LED_2, k);
gpio.put(RED_LED_2, i);
}
}
}