SwiftyGPIO - A Swift library for hardware projects on Linux/ARM boards with support for GPIOs/SPI/I2C/PWM/UART/1Wire

  •        102

A Swift library for hardware projects on Linux/ARM boards with support for GPIOs/SPI/I2C/PWM/UART/1Wire. This library provides an easy way to interact with external sensors and devices using the digital GPIOs, SPI/I2C interfaces, 1-Wire buses, PWM signals and serial ports that boards like the Raspberry Pi provide, on Linux using Swift.




Related Projects

adafruit-beaglebone-io-python - Adafruit's BeagleBone IO Python Library

  •    C

Adafruit BBIO is an API to enable GPIO, PWM, ADC, UART, SPI and eQEP (Quadrature Encoder) hardware access from Python applications running on the Beaglebone. New versions of Adafruit_BBIO may break backwards compatibility. Please read the changelog.

node-rpio - Raspberry Pi GPIO library for node.js

  •    C

This is a high performance node.js addon which provides access to the Raspberry Pi GPIO interface, supporting regular GPIO as well as i²c, PWM, and SPI. Newer versions of node.js require you to install the GCC 4.8 packages for C++11 support. If you see compilation problems related to C++11, this is the likely cause.

LEDscape - Beagle Bone Black cape and firmware for driving a large number of WS281x LED strips.

  •    C

This code works with the PRU units on the Beagle Bone and can easily cause hard crashes. It is still being debugged and developed. Be careful hot-plugging things into the headers -- it is possible to damage the pin drivers and cause problems in the ARM, especially if there are +5V signals involved. The WS281x LED chips are built like shift registers and make for very easy LED strip construction. The signals are duty-cycle modulated, with a 0 measuring 250 ns long and a 1 being 600 ns long, and 1250 ns between bits. Since this doesn't map to normal SPI hardware and requires an 800 KHz bit clock, it is typically handled with a dedicated microcontroller or DMA hardware on something like the Teensy 3.

elixir_ale - Interact with hardware in Elixir - GPIOs, I2C and SPI

  •    C

elixir_ale provides high level abstractions for interfacing to GPIOs, I2C buses and SPI peripherals on Linux platforms. Internally, it uses the Linux sysclass interface so that it does not require platform-dependent code. elixir_ale works great with LEDs, buttons, many kinds of sensors, and simple control of motors. In general, if a device requires high speed transactions or has hard real-time constraints in its interactions, this is not the right library. For those devices, it is recommended to look at other driver options, such as using a Linux kernel driver.

Adafruit_Python_GPIO - Library to provide a cross-platform GPIO interface on the Raspberry Pi and Beaglebone Black using the RPi

  •    Python

Library to provide a cross-platform GPIO interface on the Raspberry Pi and Beaglebone Black using the RPi.GPIO and Adafruit_BBIO libraries. The library is currently in an early stage, but you can see how its used in the Adafruit Nokia LCD library to write Python code that is easily portable between the Raspberry Pi and Beaglebone Black.


  •    C

Set of various C-routines for Atmel AVR MCUs, packed in several libraries, with fancy Makefile system for easy integration with user projects. Contains functions for UART, SPI, HD44780 or T6963C LCD\'s, Dallas 1-Wire bus, AVR bootloader and more.

periph - Go·Hardware·Lean

  •    Go

periph was initiated with ❤️️ and passion by Marc-Antoine Ruel. The full list of contributors is in AUTHORS and CONTRIBUTORS.This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.

pigpio - Fast GPIO, PWM, servo control, state change notification and interrupt handling with Node

  •    Javascript

A wrapper for the pigpio C library to enable fast GPIO, PWM, servo control, state change notification and interrupt handling with Node.js on the Raspberry Pi Zero, 1, 2 or 3.pigpio supports Node.js versions 0.10, 0.12, 4, 5, 6, 7, 8 and 9.

NeoPixelBus - Adafruit enhanced NeoPixel support library

  •    C++

A library to control one wire protocol RGB and RGBW leds like SK6812, WS2811, WS2812 and WS2813 that are commonly refered to as NeoPixels and two wire protocol RGB like APA102 commonly refered to as DotStars. Supports most Arduino platforms. This is the most functional library for the Esp8266 as it provides solutions for all Esp8266 module types even when WiFi is used. For quick questions jump on Gitter and ask away.

pi4j - Java I/O library for Raspberry Pi (GPIO, I2C, SPI, UART)

  •    Java

Parent Maven POM for the Pi4J Project


  •    Python

Full documentation with installation instructions and examples can be found on https://luma-led-matrix.readthedocs.io. A LED matrix can be acquired for a few pounds from outlets like Banggood. Likewise 7-segment displays are available from Ali-Express or Ebay.

rt-thread - RT-Thread is an open source IoT operating system from China.

  •    C

RT-Thread is an open source IoT operating system from China, which has strong scalability: from a tiny kernel running on a tiny core, for example ARM Cortex-M0, or Cortex-M3/4/7, to a rich feature system running on MIPS32, ARM Cortex-A8, ARM Cortex-A9 DualCore etc. The device driver is more like a driver framework, UART, IIC, SPI, SDIO, USB device/host, EMAC, MTD NAND etc. The developer can easily add low level driver and board configuration, then combined with the upper framework, he/she can use lots of features.

Adafruit_NeoPixel - Neo Pixels!

  •    C++

Arduino library for controlling single-wire-based LED pixels and strip such as the Adafruit 60 LED/meter Digital LED strip, the Adafruit FLORA RGB Smart Pixel, the Adafruit Breadboard-friendly RGB Smart Pixel, the Adafruit NeoPixel Stick, and the Adafruit NeoPixel Shield. After downloading, rename folder to 'Adafruit_NeoPixel' and install in Arduino Libraries folder. Restart Arduino IDE, then open File->Sketchbook->Library->Adafruit_NeoPixel->strandtest sketch.

rpi-rgb-led-matrix - Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO

  •    C++

A library to control commonly available 64x64, 32x32 or 16x32 RGB LED panels with the Raspberry Pi. Can support PWM up to 11Bit per channel, providing true 24bpp color with CIE1931 profile. Supports 3 chains with many panels each. On a Raspberry Pi 2 or 3, you can easily chain 12 panels in that chain (so 36 panels total), but you can theoretically stretch that to up to 96-ish panels (32 chain length) and still reach around 100Hz refresh rate with full 24Bit color (theoretical - never tested this; there might likely be timing problems with the panels that will creep up then).

mraa - Linux Library for low speed IO Communication in C with bindings for C++, Python, Node

  •    C

Libmraa is a C/C++ library with bindings to Java, Python and JavaScript to interface with the IO on Galileo, Edison & other platforms, with a structured and sane API where port names/numbering matches the board that you are on. Use of libmraa does not tie you to specific hardware with board detection done at runtime you can create portable code that will work across the supported platforms. The intent is to make it easier for developers and sensor manufacturers to map their sensors & actuators on top of supported hardware and to allow control of low level communication protocol by high level languages & constructs.


  •    Java

JAVA library for accessing the 1-Wire LCD controller from Louis Swart. The library provides a convenient interface as well as a low level interface. For use with any Dallas Semiconductor 1-Wire network. Runs on TINI microcontrollers too.

quick2wire-python-api - Python API for controlling GPIO and I2C devices connected to the Raspberry Pi

  •    Python

A Python library for controlling the hardware attached to the Raspberry Pi's header pins, without running as the root user. The I2C and SPI API depend on support in the kernel. Recent raspbian kernels should be fine.

autonomous-rc-car - Autonomous RC car using Raspberry Pi and ANN

  •    Python

This project aims to build an autonomous rc car using supervised learning of a neural network with a single hidden layer. We have not used any Machine Learning libraries since we wanted to implement the neural network from scratch to understand the concepts better. We have modified a remote controlled car to remove the dependency on the RF remote controller. A Raspberry Pi controls the DC motors via an L293D Motor Driver IC. You can find a post explaining this project in detail here. Here's a video of the car in action. We will be referring the DC motor controlling the left/right direction as the front motor and the motor controlling the forward/reverse direction as the back motor. Connect the BACK_MOTOR_DATA_ONE and BACK_MOTOR_DATA_TWO GPIO pins(GPIO17 and GPIO27) of the Raspberry Pi to the Input pins for Motor 1(Input 1, Input 2) and the BACK_MOTOR_ENABLE_PIN GPIO pin(GPIO22) to the Enable pin for Motor 1(Enable 1,2) in the L293D Motor Driver IC. Connect the Output pins for Motor 1(Output 1, Output 2) of the IC to the back motor.

owfs and owhttpd

  •    Perl

Easy way to use the 1-wire sensors like temperature, voltage and more.


  •    C

A open LCD controller (both hardware and software) offering I2C, SPI and Serial interfaces.