Git Product home page Git Product logo

breakfastserial's Introduction

BreakfastSerial

A Firmata based framework for interacting with Arduinos over serial.

Arduino Setup

In order to use BreakfastSerial, you need to have an arduino running the standard firmata.

  1. Download the Arduino IDE from the arduino website
  1. Plug in your Arduino or Arduino compatible microcontroller via USB
  2. Open the Arduino IDE, select: File > Examples > Firmata > StandardFirmata
  3. Click the "Upload" button.

Installation

Using PyPi

pip install BreakfastSerial

From Source

git clone git://github.com/theycallmeswift/BreakfastSerial.git && cd BreakfastSerial

python setup.py install

Getting Started

The BreakfastSerial library provides a simple abstraction for a number of common components. Make sure your arduino is plugged in and is running firmata.

Arduino

If you create a Arduino object without any parameters, it will attempt to auto discover the serial port that the Arduino is attached to and connect automatically. Optionally, you can supply the path to a serial port (Ex. "/dev/tty.usbmodem4111").

from BreakfastSerial import Arduino
board = Arduino() # This will autodiscover the device

Blink an LED

To use the led object, import Led from BreakfastSerial. The constructor takes an Arduino object and a pin number as its arguments.

from BreakfastSerial import Arduino, Led
from time import sleep

board = Arduino()
pin = 13
led = Led(board, pin)

led.on()
sleep(2)
led.off()

You can also use the blink method and pass it a number of milliseconds to automate the blinking process

millis = 200
led.blink(millis)

Push a button

The Button component has a number of helper methods that make it easy to work with buttons. The constructor takes an Arduino object and a pin number as its arguments.

from BreakfastSerial import Button, Arduino

board = Arduino()
button = Button(board, 8)

def down_cb():
  print "button down"

def up_cb():
  print "button up"

def hold_cb():
  print "button held"

button.down(down_cb)
button.up(up_cb)
button.hold(hold_cb)

The down and up functions are just nice wrappers around the underlying event emitter. The Button component emits the following events:

  • change - The button value changed
  • down - The button is pressed
  • up - The button is not being pressed
  • hold - The button was held for at least 1 second

Use an RGB Led

The RGBLed component lets us change the colors of an RGB Led without having to interact with the three underlying leds.

from BreakfastSerial import Arduino, RGBLed
from time import sleep

board = Arduino()
led = RGBLed(board, { "red": 10, "green": 9, "blue": 8 })

led.red()
sleep(1)

led.green()
sleep(1)

led.blue()
sleep(1)

led.yellow()
sleep(1)

led.cyan()
sleep(1)

led.purple()
sleep(1)

led.white()
sleep(1)

led.off()

Read a sensor

The Sensor component lets us read in data from a sensor (analog or digital). The constructor takes in an Arduino object and a pin number.

from BreakfastSerial import Arduino, Sensor
from time import sleep

board = Arduino()
sensor = Sensor(board, "A0")

for i in range(40):
  print sensor.value
  sleep(0.5)

The value property of a Sensor object is the value of the underlying pin.

Control a servo

The Servo component let's us control a servo. The constructor takes in an Arduino object and a pin number.

from BreakfastSerial import Arduino, Servo
from time import sleep

board = Arduino()
servo = Servo(board, "10")

servo.set_position(180)
sleep(2)
servo.move(-135)
sleep(2)
servo.center()
sleep(2)
servo.reset()

The value property of a Servo object is the current position of the servo in degrees

Moar!

There are a bunch of examples in the examples/ folder. Additional components will be added over time, so be sure to check back regularly.

breakfastserial's People

Contributors

theycallmeswift avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.