Skip to content

kashimAstro/ofxGPIO

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

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:

  • Raspberry pi (2/3/Zero/A/A+/B+)
  • nRF24L01
fritzing example:

alt tag

Example simple Button Read state:

  • Raspberry pi (2/3/Zero/A/A+/B+)
  • Button
fritzing example:

alt tag

Example simple Led Blink:

  • Raspberry pi (2/3/Zero/A/A+/B+)
  • Led
fritzing example:

alt tag

Example simple Relay on / off Light:

  • Raspberry pi (2/3/Zero/A/A+/B+)
  • Relay 5v
  • Lamp
fritzing example:

alt tag

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

  • Raspberry pi (2/3/Zero/A/A+/B+)
  • GPS breakout v3
fritzing example:

alt tag

Example i2c multiple byte read MPU6050:

  • Raspberry pi (2/3/Zero/A/A+/B+)
  • MPU6050
fritzing example:

alt tag

Example Led Matrix8x8:

  • Raspberry pi (2/3/Zero/A/A+/B+)
  • Led Matrix
fritzing example:

alt tag

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

  • Raspberry pi (2/3/Zero/A/A+/B+)
  • Servo Motor
fritzing example:

alt tag

Example GPIO read/write stepper rotation:

  • Raspberry PI
  • Stepper Motor bipolar
  • sn754410ne H-Bridge
  • Button
  • wiring

fritzing example:

alt tag

sn754410ne H-Bridge:

alt tag


video: http://www.youtube.com/watch?v=lwRd5D9EuU0 video

Example GPIO I2C communication:

  • Raspberry PI
  • Arduino
  • LED
  • Resistor 75 ohm
  • wiring

fritzing example:

alt tag


video: http://www.youtube.com/watch?v=SRz750EdjfY video

Example GPIO SPI add Analog pin MCP3008 potentiometer:

  • Raspberry
  • MCP3008
  • Potentiometer
  • wiring

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