forked from hybridgroup/gobot
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
bb8: add initial support for Sphero BB-8 platform
Signed-off-by: deadprogram <[email protected]>
- Loading branch information
1 parent
80952bf
commit 8510bd9
Showing
9 changed files
with
143 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package main | ||
|
||
import ( | ||
"os" | ||
"time" | ||
|
||
"gobot.io/x/gobot" | ||
"gobot.io/x/gobot/platforms/ble" | ||
"gobot.io/x/gobot/platforms/sphero/bb8" | ||
) | ||
|
||
func main() { | ||
bleAdaptor := ble.NewClientAdaptor(os.Args[1]) | ||
bb8 := bb8.NewDriver(bleAdaptor) | ||
|
||
work := func() { | ||
gobot.Every(1*time.Second, func() { | ||
r := uint8(gobot.Rand(255)) | ||
g := uint8(gobot.Rand(255)) | ||
b := uint8(gobot.Rand(255)) | ||
bb8.SetRGB(r, g, b) | ||
}) | ||
} | ||
|
||
robot := gobot.NewRobot("bbBot", | ||
[]gobot.Connection{bleAdaptor}, | ||
[]gobot.Device{bb8}, | ||
work, | ||
) | ||
|
||
robot.Start() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
Copyright (c) 2014-2016 The Hybrid Group | ||
|
||
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
# Sphero BB-8 | ||
|
||
The Sphero BB-8 is a toy robot from Sphero that is controlled using Bluetooth LE. For more information, go to [http://www.sphero.com/bb8](http://www.sphero.com/bb8) | ||
|
||
## How to Install | ||
``` | ||
go get -d -u gobot.io/x/gobot/... && go install gobot.io/x/gobot/platforms/ble | ||
``` | ||
|
||
## How to Use | ||
```go | ||
package main | ||
|
||
import ( | ||
"os" | ||
"time" | ||
|
||
"gobot.io/x/gobot" | ||
"gobot.io/x/gobot/platforms/ble" | ||
"gobot.io/x/gobot/platforms/sphero/bb8" | ||
) | ||
|
||
func main() { | ||
bleAdaptor := ble.NewClientAdaptor(os.Args[1]) | ||
bb8 := bb8.NewDriver(bleAdaptor) | ||
|
||
work := func() { | ||
gobot.Every(1*time.Second, func() { | ||
r := uint8(gobot.Rand(255)) | ||
g := uint8(gobot.Rand(255)) | ||
b := uint8(gobot.Rand(255)) | ||
bb8.SetRGB(r, g, b) | ||
}) | ||
} | ||
|
||
robot := gobot.NewRobot("bb", | ||
[]gobot.Connection{bleAdaptor}, | ||
[]gobot.Device{bb8}, | ||
work, | ||
) | ||
|
||
robot.Start() | ||
} | ||
``` | ||
|
||
## How to Connect | ||
|
||
The Sphero BB-8 is a Bluetooth LE device. | ||
|
||
You need to know the BLE ID of the BB-8 you want to connect to. The Gobot BLE client adaptor also lets you connect by friendly name, aka "BB-1247". | ||
|
||
### OSX | ||
|
||
To run any of the Gobot BLE code you must use the `GODEBUG=cgocheck=0` flag in order to get around some of the issues in the CGo-based implementation. | ||
|
||
For example: | ||
|
||
GODEBUG=cgocheck=0 go run examples/bb8.go BB-1247 | ||
|
||
OSX uses its own Bluetooth ID system which is different from the IDs used on Linux. The code calls thru the XPC interfaces provided by OSX, so as a result does not need to run under sudo. | ||
|
||
### Ubuntu | ||
|
||
On Linux the BLE code will need to run as a root user account. The easiest way to accomplish this is probably to use `go build` to build your program, and then to run the requesting executable using `sudo`. | ||
|
||
For example: | ||
|
||
go build examples/bb8.go | ||
sudo ./bb8 BB-1247 | ||
|
||
### Windows | ||
|
||
Hopefully coming soon... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package bb8 | ||
|
||
import ( | ||
"gobot.io/x/gobot/platforms/sphero/ollie" | ||
) | ||
|
||
// Driver represents a Sphero BB-8 | ||
type Driver struct { | ||
*ollie.Driver | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
package bb8 | ||
|
||
import "gobot.io/x/gobot" | ||
|
||
var _ gobot.Driver = (*Driver)(nil) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
/* | ||
Package bb8 contains the Gobot driver for the Sphero BB-8. | ||
For more information refer to the BB-8 README: | ||
https://gobot.io/x/gobot/blob/master/platforms/sphero/bb8/README.md | ||
*/ | ||
package bb8 // import "gobot.io/x/gobot/platforms/sphero/bb8" |