kashimAstro / ofxGPIO

Library C++ for raspberrypi and orangepi, GPIO interfaces compatible with openframeworks.
MIT License
191 stars 44 forks source link
banana-pi c-plus-plus gpio gtk i2c internet-of-things io jetson-nano jetson-tx1 jetson-tx2 library network openframeworks openframeworks-addon orange-pi raspberry-pi spi tcp ui

ofxGPIO

A small library in C++ for the use of GPIO raspberrypi (A/B/2/3/Zero) orangepi (one/zero/plus) this library is compatible with the toolkit for creative coding Openframeworks. Interface GPIO: SPI (Serial Peripheral Interface), I2C (Inter Integrated Circuit), IO Pin read/write. With utilities such as: graphical gui (Gtk+ / Zenity) and TCP Unix socket implementation.

Documentation

/* define for activated more functionality */

-D COMPILE_WITHOUT_OPENFRAMEWORKS /* if = 1 work pure c++ without openframeworks toolkit */
-D GTK_UI             /* if = 1 activated c++ simple bridge for UI gtk+ */
-D ENABLE_BCM2835         /* if = 1 activated c header BCM2835 */
-D ENABLE_ZENITY                  /* if = 1 activated zenity for UI debug */


Sample simple syntax ofxGPIO I/O

#include <iostream>
#include "ofxGPIO.h"

int main() 
{
        GPIO gpio;
        string state;
        int i = 0;

        gpio.setup(GPIO17,OUT,LOW);

        while(i<100)
        {
            gpio.set(HIGH);
            state = "State pin17: "+to_string(gpio.get());
            Log(state,FG_RED,BG_WHITE) <<"\n";
            sleep(2);

            gpio.set(LOW);
            state = "State pin17: "+to_string(gpio.get());
            Log(state,FG_BLUE,BG_WHITE) <<"\n";
            sleep(2);

            i++;
        }

        gpio.close();
        return 0;
}


GPIO support

Simple Gtk+ UI Utility

Sample syntax ofxGPIO i2c

I2c * bus;

bus = new I2c("/dev/i2c-1");
bus->addressSet(0x04);

while(1) 
{
    bus->writeByte(0x04,1);
    usleep(500000);
    bus->writeByte(0x04,0);
    usleep(500000);
}

Zenity UI Utility

Sample

Sample syntax ofxGPIO SPI

SPI2 spi;
char data[2];

data[0] = 1;
data[1] = 2;

spi.setup("/dev/spidev0.0",1000000);
spi.readWrite(1, (unsigned char *)data, 2);

Example ofxGPIO

Example scanner with nRF24L01:

fritzing example: alt tag

Example simple Button Read state:

fritzing example: alt tag

Example simple Led Blink:

fritzing example: alt tag

Example simple Relay on / off Light:

fritzing example: alt tag

Example GPS UART: http://aprs.gids.nl/nmea/

fritzing example: alt tag

Example i2c multiple byte read MPU6050:

fritzing example: alt tag

Example Led Matrix8x8:

fritzing example: alt tag

Example Servo motor(Attention raspberry not to have pin PWM, for this we use a CLK pin, advice integrated pwm):

fritzing example: alt tag

Example GPIO read/write stepper rotation:


fritzing example: alt tag sn754410ne H-Bridge:
alt tag
video: http://www.youtube.com/watch?v=lwRd5D9EuU0 video

Example GPIO I2C communication:


fritzing example: alt tag
video: http://www.youtube.com/watch?v=SRz750EdjfY video

Example GPIO SPI add Analog pin MCP3008 potentiometer:


fritzing example: alt tag MCP3008 8-Channel 10-Bit ADC
alt tag
video: http://www.youtube.com/watch?v=PkDkCJyZ2go video


for i2c and SPI configuration visit this page:

https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-spi
https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c



Datasheet integrated list:

Drive motor:
http://www.ti.com/lit/ds/symlink/l293.pdf
http://www.ti.com/lit/ds/symlink/sn754410.pdf
http://www.ti.com/lit/ds/symlink/uln2003a.pdf
http://www.st.com/content/ccc/resource/technical/document/datasheet/f3/6e/c8/64/4d/b3/4e/38/CD00001244.pdf/files/CD00001244.pdf/jcr:content/translations/en.CD00001244.pdf

Motor stepper Bipolar / Unipolar:
http://motion.schneider-electric.com/downloads/datasheets/14_mtr.pdf
http://www.mitsumi.co.jp/latest/Catalog/pdf/motor_m35sp_9_e.pdf

A/D Converters:
https://cdn-shop.adafruit.com/datasheets/MCP3008.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/21295C.pdf

ATmega48A/PA/88A/PA/168A/PA/328/P:
http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf

MPU-6000 / MPU-6050:
https://www.cdiweb.com/datasheets/invensense/MPU-6050_DataSheet_V3%204.pdf

Adafruit Ultimate GPS:
https://cdn-learn.adafruit.com/downloads/pdf/adafruit-ultimate-gps.pdf

Adafruit LED Backpacks:
https://cdn-learn.adafruit.com/downloads/pdf/adafruit-led-backpack.pdf

EEPROM
http://www.bucek.name/pdf/24c16.pdf http://www.st.com/content/ccc/resource/technical/document/datasheet/5c/df/52/a5/15/f2/48/bd/CD00259166.pdf/files/CD00259166.pdf/jcr:content/translations/en.CD00259166.pdf