Stian Remvik Datagrafikk

Wiring Pi on openFrameworks

https://github.com/openFrameworks-RaspberryPi/openFrameworks/wiki/Raspberry-Pi-Using-the-GPIO-pins-with-Wiring-Pi-and-openFrameworks

Using WiringPi with OpenFrameworks for Raspberry Pi to access the GPIO-pins

Important: The GPIO pins on the Raspberry Pi is 3.3V, even though there is also a 5V supply. Be sure not to connect a higher voltage than 3.3V to the GPIO pins or you could severely damage your Pi.

WiringPi is a C-library by Drogon making it easy to read and write to the GPIO pins in an Arduino style. See https://projects.drogon.net/raspberry-pi/wiringpi/ for details.

To get and install the library do the following (from projects.drogon.net):

To obtain WiringPi using GIT:

$ git clone git://git.drogon.net/wiringPi

If you have already used the clone operation for the first time, then cd wiringPi git pull origin

Will fetch an updated version then you can re-run the build script below. To build/install there is a new simplified script:

$ cd wiringPi
$ ./build

The new build script will compile and install it all for you – it does use the sudo command at one point, so you may wish to inspect the script before running it.

Then in your projects config.make-file include the following line (in bold) in the PROJECT LINKER FLAGS-section:

################################################################################
# PROJECT LINKER FLAGS
#   These flags will be sent to the linker when compiling the executable.
#
#   Note: Leave a leading space when adding list items with the += operator
################################################################################

# Currently, shared libraries that are needed are copied to the 
# $(PROJECT_ROOT)/bin/libs directory.  The following LDFLAGS tell the linker to
# add a runtime path to search for those shared libraries, since they aren't 
# incorporated directly into the final executable application binary.
# TODO: should this be a default setting?
PROJECT_LDFLAGS=-Wl,-rpath=./libs
PROJECT_LDFLAGS += -lwiringPi

Then in your testApp.h include the library by placing the following line near the top:

#include “wiringPi.h”

and while you’re in there let’s prepare the example:

bool sensor0;
bool sensor3;
bool sensor7;

Now in your testApp.cpp an example of the use could be the following. In the setup-function put:

if(wiringPiSetup() == -1){
    printf("Error on wiringPi setup\n");
}

    pinMode(0,INPUT);
    pinMode(3,INPUT);
    pinMode(7,INPUT);

This will make it possible to read the pins 0, 3 and 7 (see connections for the GPIO pins on https://projects.drogon.net/raspberry-pi/wiringpi/pins/ ). Also put:

bool sensor0 = false;
bool sensor3 = false;
bool sensor7 = false;

Now in the update-function:

if(digitalRead(0)!=0){
    sensor0 = true;
} else {
    sensor0 = false;
}

if(digitalRead(3)!=0){
    sensor3 = true;
} else {
    sensor3 = false;
}

if(digitalRead(7)!=0){
    sensor7 = true;
} else {
    sensor7 = false;
}
And in the draw function:

ofBackground(ofColor(0,0,0));

ofSetColor(190);
    if (sensor0 == true){
        ofDrawBitmapString("Sensor at pin 0 activated", 50, 50);
    }
    if (sensor3 == true){
    ofDrawBitmapString("Sensor at pin 3 activated", 50, 70);
    }
    if (sensor7 == true){
    ofDrawBitmapString("Sensor at pin 7 activated", 50, 90);
    }

That’s it. Note that some of the pins should be treated different than others e.g. pin 8 and 9 have pull-up resistors. In general you should read https://projects.drogon.net/raspberry-pi/wiringpi/special-pin-functions/ to be sure you understand how you are using the pins.

https://learn.adafruit.com/reading-a-analog-in-and-controlling-audio-volume-with-the-raspberry-pi

https://github.com/andreasmuller/RaspberryPiWorkshop/tree/master/wiringPiPotentiometerExample

https://learn.adafruit.com/send-raspberry-pi-data-to-cosm

https://github.com/patriciogonzalezvivo/ofxPulseSensor

https://www.adafruit.com/products/856

http://www.raspberrypi-spy.co.uk/2013/10/analogue-sensors-on-the-raspberry-pi-using-an-mcp3008/

https://github.com/kashimAstro/ofxGPIO

"BITWaves" iOS app
Raspberry Pi Notes
"Neighbours" video installation
Electronic Vintage Bit20 concert visuals
"Late into that night, and all the following nights" installation
"Bergen Leser" installation
"Cubes" animation
NRK3 identity film
"Hush!" installation
"The sound of pictures" installation
Photographs
Concert visuals Knekklectic
Hulen Bergen posters and design
Notes on programming and other technical difficulties
-----------------------------------------------------

Multi screen video with Multiscreener on Mac
Seamless looping video player on Raspberry Pi using openFrameworks