Skip to content

Commit ad11746

Browse files
committed
Initial commit of my sample files
0 parents  commit ad11746

File tree

4 files changed

+220
-0
lines changed

4 files changed

+220
-0
lines changed

example.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"github.com/ddrager/go-pi-blaster"
6+
)
7+
8+
9+
10+
func main() {
11+
fmt.Printf("Running\n")
12+
a := []int64{17, 22, 24}
13+
14+
var b piblaster.Blaster
15+
16+
17+
b.Start(a)
18+
b.Apply(17, 1.1);
19+
20+
b.Apply(22, -7.0);
21+
22+
b.Apply(24, .56);
23+
24+
b.DumpCurrent();
25+
}

led-cycle.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package main
2+
3+
import (
4+
"os"
5+
"os/signal"
6+
"time"
7+
"fmt"
8+
"github.com/ddrager/go-pi-blaster"
9+
)
10+
11+
const redPin = 17
12+
const greenPin = 22
13+
const bluePin = 24
14+
15+
const jump = 5
16+
17+
18+
var a []int64
19+
var b piblaster.Blaster
20+
21+
func setRGB(red int64, green int64, blue int64) {
22+
b.Apply(redPin, float64(red)/255.0)
23+
b.Apply(greenPin, float64(green)/255.0)
24+
b.Apply(bluePin, float64(blue)/255.0)
25+
}
26+
27+
func main() {
28+
fmt.Printf("Running\n")
29+
var red int64 = 255
30+
var green int64 = 0
31+
var blue int64 = 0
32+
a := []int64{redPin, greenPin, bluePin}
33+
34+
b.Start(a)
35+
36+
c := make(chan os.Signal, 1)
37+
signal.Notify(c, os.Interrupt)
38+
39+
40+
// main loop
41+
go func() {
42+
timer := time.Tick(time.Millisecond * 1)
43+
for _ = range timer {
44+
if red >= 255 && blue <= 0 && green < 255 {
45+
green = green + jump
46+
} else if green >= 255 && blue <= 0 && red > 0 {
47+
red = red - jump
48+
} else if red <= 0 && green >= 255 && blue < 255 {
49+
blue = blue + jump
50+
} else if red <= 0 && blue >= 255 && green > 0 {
51+
green = green - jump
52+
} else if green <= 0 && blue >= 255 && red < 255 {
53+
red = red + jump
54+
} else if red >= 255 && green <= 0 && blue > 0 {
55+
blue = blue - jump
56+
}
57+
setRGB(red, green, blue)
58+
//fmt.Printf("Red: %d, Green: %d, Blue: %d\n", red, green, blue)
59+
}
60+
}()
61+
62+
//time.Sleep(time.Millisecond * 15000)
63+
64+
for sig := range c {
65+
fmt.Printf("captured %v, exiting..", sig)
66+
//b.DumpCurrent();
67+
b.Reset();
68+
os.Exit(1)
69+
}
70+
71+
72+
}

static/favicon.ico

806 Bytes
Binary file not shown.

web-led.go

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
package main
2+
3+
import (
4+
"os"
5+
"os/signal"
6+
"time"
7+
"fmt"
8+
"github.com/ddrager/go-pi-blaster"
9+
10+
"net/http"
11+
"github.com/zenazn/goji"
12+
"github.com/zenazn/goji/web"
13+
)
14+
15+
const (
16+
redPin = 17
17+
greenPin = 22
18+
bluePin = 24
19+
20+
jump = 17
21+
22+
staticFilesLocation = "/home/pi/gocode/src/github.com/ddrager/go-pi/static"
23+
)
24+
25+
var (
26+
a []int64
27+
b piblaster.Blaster
28+
control int = 0
29+
)
30+
31+
func setRGB(red int64, green int64, blue int64) {
32+
b.Apply(redPin, float64(red)/255.0)
33+
b.Apply(greenPin, float64(green)/255.0)
34+
b.Apply(bluePin, float64(blue)/255.0)
35+
}
36+
37+
// cycle colors
38+
func cycle(c web.C, w http.ResponseWriter, r *http.Request) {
39+
40+
// set initial colors
41+
var red int64 = 255
42+
var green int64 = 0
43+
var blue int64 = 0
44+
45+
control = 1
46+
47+
// main loop
48+
go func() {
49+
timer := time.Tick(time.Millisecond * 30)
50+
for _ = range timer {
51+
if red >= 255 && blue <= 0 && green < 255 {
52+
green = green + jump
53+
} else if green >= 255 && blue <= 0 && red > 0 {
54+
red = red - jump
55+
} else if red <= 0 && green >= 255 && blue < 255 {
56+
blue = blue + jump
57+
} else if red <= 0 && blue >= 255 && green > 0 {
58+
green = green - jump
59+
} else if green <= 0 && blue >= 255 && red < 255 {
60+
red = red + jump
61+
} else if red >= 255 && green <= 0 && blue > 0 {
62+
blue = blue - jump
63+
}
64+
setRGB(red, green, blue)
65+
66+
if control == 0 { break }
67+
68+
//fmt.Printf("Red: %d, Green: %d, Blue: %d\n", red, green, blue)
69+
}
70+
}()
71+
}
72+
73+
func clear(c web.C, w http.ResponseWriter, r *http.Request) {
74+
stopAndClear()
75+
setRGB(0, 0, 0)
76+
}
77+
78+
func stopAndClear() {
79+
control = 0
80+
// allow running processes to stop
81+
time.Sleep(100 * time.Millisecond)
82+
b.Reset();
83+
}
84+
85+
func menu(c web.C, w http.ResponseWriter, r *http.Request) {
86+
fmt.Fprintf(w, "Hello, %s!", c.URLParams["name"])
87+
}
88+
89+
func main() {
90+
fmt.Printf("Running\n")
91+
92+
// set initial pins and start interface
93+
a := []int64{redPin, greenPin, bluePin}
94+
b.Start(a)
95+
96+
control = 1
97+
98+
// reset pins when program ends
99+
c := make(chan os.Signal, 1)
100+
signal.Notify(c, os.Interrupt)
101+
102+
fmt.Printf("Launching web server...\n")
103+
104+
// web functionality
105+
goji.Get("/hello/:name", menu)
106+
goji.Get("/cycle", cycle)
107+
goji.Get("/clear", clear)
108+
109+
110+
goji.Handle("/*", http.FileServer(http.Dir(staticFilesLocation)))
111+
goji.Serve()
112+
113+
// capture control c, probably a better way to do this
114+
//time.Sleep(time.Millisecond * 15000)
115+
for sig := range c {
116+
fmt.Printf("captured %v, exiting..", sig)
117+
//b.DumpCurrent()
118+
stopAndClear()
119+
os.Exit(1)
120+
}
121+
122+
123+
}

0 commit comments

Comments
 (0)