Browse Source

Added in PiGlow devLib and a couple of examples for the PiGlow

bumped version.
pull/22/head
Gordon Henderson 11 years ago
parent
commit
cbf6d642b5
7 changed files with 451 additions and 2 deletions
  1. +5
    -1
      devLib/Makefile
  2. +117
    -0
      devLib/piGlow.c
  3. +36
    -0
      devLib/piGlow.h
  4. +69
    -0
      examples/PiGlow/Makefile
  5. +0
    -0
      examples/PiGlow/piGlow0.c
  6. +223
    -0
      examples/PiGlow/piGlow1.c
  7. +1
    -1
      gpio/gpio.c

+ 5
- 1
devLib/Makefile View File

@@ -42,7 +42,8 @@ LIBS =

SRC = ds1302.c maxdetect.c piNes.c \
gertboard.c piFace.c \
lcd128x64.c lcd.c
lcd128x64.c lcd.c \
piGlow.c

OBJ = $(SRC:.c=.o)

@@ -86,6 +87,7 @@ install-headers:
@install -m 0644 piFace.h $(DESTDIR)$(PREFIX)/include
@install -m 0644 lcd128x64.h $(DESTDIR)$(PREFIX)/include
@install -m 0644 lcd.h $(DESTDIR)$(PREFIX)/include
@install -m 0644 piGlow.h $(DESTDIR)$(PREFIX)/include

.PHONEY: install
install: $(DYNAMIC) install-headers
@@ -111,6 +113,7 @@ uninstall:
@rm -f $(DESTDIR)$(PREFIX)/include/piFace.h
@rm -f $(DESTDIR)$(PREFIX)/include/lcd128x64.h
@rm -f $(DESTDIR)$(PREFIX)/include/lcd.h
@rm -f $(DESTDIR)$(PREFIX)/include/piGlow.h
@rm -f $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.*
@ldconfig

@@ -128,3 +131,4 @@ gertboard.o: gertboard.h
piFace.o: piFace.h
lcd128x64.o: font.h lcd128x64.h
lcd.o: lcd.h
piGlow.o: piGlow.h

+ 117
- 0
devLib/piGlow.c View File

@@ -0,0 +1,117 @@
/*
* piGlow.c:
* Easy access to the Pimoroni PiGlow board.
*
* Copyright (c) 2013 Gordon Henderson.
***********************************************************************
* This file is part of wiringPi:
* https://projects.drogon.net/raspberry-pi/wiringpi/
*
* wiringPi is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* wiringPi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
***********************************************************************
*/

#include <wiringPi.h>
#include <sn3218.h>

#include "piGlow.h"

static int myBase ;

static int leg0 [6] = { 6, 7, 8, 5, 4, 9 } ;
static int leg1 [6] = { 17, 16, 15, 13, 11, 10 } ;
static int leg2 [6] = { 0, 1, 2, 3, 14, 12 } ;


/*
* piGlow1:
* Light up an individual LED
*********************************************************************************
*/

void piGlow1 (const int leg, const int ring, const int intensity)
{
int *legLeds ;

if ((leg < 0) || (leg > 2)) return ;
if ((ring < 0) || (ring > 5)) return ;

/**/ if (leg == 0)
legLeds = leg0 ;
else if (leg == 1)
legLeds = leg1 ;
else
legLeds = leg2 ;

analogWrite (myBase + legLeds [ring], intensity) ;
}

/*
* piGlowLeg:
* Light up all 6 LEDs on a leg
*********************************************************************************
*/

void piGlowLeg (const int leg, const int intensity)
{
int i ;
int *legLeds ;

if ((leg < 0) || (leg > 2))
return ;

/**/ if (leg == 0)
legLeds = leg0 ;
else if (leg == 1)
legLeds = leg1 ;
else
legLeds = leg2 ;

for (i = 0 ; i < 6 ; ++i)
analogWrite (myBase + legLeds [i], intensity) ;
}


/*
* piGlowRing:
* Light up 3 LEDs in a ring. Ring 0 is the outermost, 5 the innermost
*********************************************************************************
*/

void piGlowRing (const int ring, const int intensity)
{
if ((ring < 0) || (ring > 5))
return ;

analogWrite (myBase + leg0 [ring], intensity) ;
analogWrite (myBase + leg1 [ring], intensity) ;
analogWrite (myBase + leg2 [ring], intensity) ;
}

/*
* piGlowSetup:
* Initialise the board & remember the pins we're using
*********************************************************************************
*/

void piGlowSetup (const int pinBase)
{
sn3218Setup (myBase = pinBase) ;

// Turn all off to start with

piGlowLeg (0, 0) ;
piGlowLeg (1, 0) ;
piGlowLeg (2, 0) ;
}

+ 36
- 0
devLib/piGlow.h View File

@@ -0,0 +1,36 @@
/*
* piglow.h:
* Easy access to the Pimoroni PiGlow board.
*
* Copyright (c) 2013 Gordon Henderson.
***********************************************************************
* This file is part of wiringPi:
* https://projects.drogon.net/raspberry-pi/wiringpi/
*
* wiringPi is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* wiringPi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
***********************************************************************
*/

#ifdef __cplusplus
extern "C" {
#endif

extern void piGlow1 (const int leg, const int ring, const int intensity) ;
extern void piGlowLeg (const int leg, const int intensity) ;
extern void piGlowRing (const int ring, const int intensity) ;
extern void piGlowSetup (const int pinBase) ;

#ifdef __cplusplus
}
#endif

+ 69
- 0
examples/PiGlow/Makefile View File

@@ -0,0 +1,69 @@
#
# Makefile:
# wiringPi - Wiring Compatable library for the Raspberry Pi
# https://projects.drogon.net/wiring-pi
#
# Copyright (c) 2012-2013 Gordon Henderson
#################################################################################
# This file is part of wiringPi:
# Wiring Compatable library for the Raspberry Pi
#
# wiringPi is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# wiringPi is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
#################################################################################


#DEBUG = -g -O0
DEBUG = -O3
CC = gcc
INCLUDE = -I/usr/local/include
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe

LDFLAGS = -L/usr/local/lib
LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm

# Should not alter anything below this line
###############################################################################

SRC = piGlow0.c piGlow1.c

OBJ = $(SRC:.c=.o)

BINS = $(SRC:.c=)

all: $(BINS)

piGlow0: piGlow0.o
@echo [link]
@$(CC) -o $@ piGlow0.o $(LDFLAGS) $(LDLIBS)

piGlow1: piGlow1.o
@echo [link]
@$(CC) -o $@ piGlow1.o $(LDFLAGS) $(LDLIBS)

.c.o:
@echo [CC] $<
@$(CC) -c $(CFLAGS) $< -o $@

clean:
@echo "[Clean]"
@rm -f $(OBJ) *~ core tags $(BINS)

tags: $(SRC)
@echo [ctags]
@ctags $(SRC)

depend:
makedepend -Y $(SRC)

# DO NOT DELETE

examples/piglow.c → examples/PiGlow/piGlow0.c View File


+ 223
- 0
examples/PiGlow/piGlow1.c View File

@@ -0,0 +1,223 @@
/*
* piGlow1.c:
* Very simple demonstration of the PiGlow board.
* This uses the piGlow devLib.
*
* Copyright (c) 2013 Gordon Henderson.
***********************************************************************
* This file is part of wiringPi:
* https://projects.drogon.net/raspberry-pi/wiringpi/
*
* wiringPi is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* wiringPi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
***********************************************************************
*/

#include <stdio.h>
#include <stdlib.h>
#include <poll.h>

#include <wiringPi.h>
#include <piGlow.h>

#define PIGLOW_BASE 533


/*
* keypressed: clearKeypressed:
* Simple but effective ways to tell if the enter key has been pressed
*********************************************************************************
*/

static int keypressed (void)
{
struct pollfd polls ;

polls.fd = fileno (stdin) ;
polls.events = POLLIN ;

return poll (&polls, 1, 0) != 0 ;
}

static void clearKeypressed (void)
{
while (keypressed ())
(void)getchar () ;
}


/*
* pulseLed:
* Pulses the LED at position leg, ring from off to a max. value,
* then off again
*********************************************************************************
*/

static void pulseLed (int leg, int ring)
{
int i ;

for (i = 0 ; i < 140 ; ++i)
{
piGlow1 (leg, ring, i) ;
delay (1) ;
}
delay (10) ;
for (i = 140 ; i >= 0 ; --i)
{
piGlow1 (leg, ring, i) ;
delay (1) ;
}
}

/*
* pulseLeg:
* Same as above, but a whole leg at a time
*********************************************************************************
*/

static void pulseLeg (int leg)
{
int i ;

for (i = 0 ; i < 140 ; ++i)
{
piGlowLeg (leg, i) ; delay (1) ;
}
delay (10) ;
for (i = 140 ; i >= 0 ; --i)
{
piGlowLeg (leg, i) ; delay (1) ;
}
}


/*
* pulse Ring:
* Same as above, but a whole ring at a time
*********************************************************************************
*/

static void pulseRing (int ring)
{
int i ;

for (i = 0 ; i < 140 ; ++i)
{
piGlowRing (ring, i) ; delay (1) ;
}
delay (10) ;
for (i = 140 ; i >= 0 ; --i)
{
piGlowRing (ring, i) ; delay (1) ;
}
}


/*
* main:
* Our little demo prgoram
*********************************************************************************
*/

int main (void)
{
int i ;
int ring, leg ;

// Always initialise wiringPi:
// Use the Sys method if you don't need to run as root

wiringPiSetupSys () ;

// Initialise the piGlow devLib with our chosen pin base

piGlowSetup (PIGLOW_BASE) ;

// LEDs, one at a time

printf ("LEDs, one at a time\n") ;
for (; !keypressed () ;)
for (leg = 0 ; leg < 3 ; ++leg)
{
for (ring = 0 ; ring < 6 ; ++ring)
{
pulseLed (leg, ring) ;
if (keypressed ())
break ;
}
if (keypressed ())
break ;
}
clearKeypressed () ;

// Rings, one at a time

printf ("Rings, one at a time\n") ;
for (; !keypressed () ;)
for (ring = 0 ; ring < 6 ; ++ring)
{
pulseRing (ring) ;
if (keypressed ())
break ;
}
clearKeypressed () ;

// Legs, one at a time

printf ("Legs, one at a time\n") ;
for (; !keypressed () ;)
for (leg = 0 ; leg < 3 ; ++leg)
{
pulseLeg (leg) ;
if (keypressed ())
break ;
}
clearKeypressed () ;

delay (1000) ;

// Sequence - alternating rings, legs and random

printf ("Sequence now\n") ;

for (; !keypressed () ;)
{
for (i = 0 ; i < 20 ; ++i)
for (leg = 2 ; leg >= 0 ; --leg)
{
piGlowLeg (leg, 100) ;
delay (100) ;
piGlowLeg (leg, 0) ;
}

for (i = 0 ; i < 20 ; ++i)
for (ring = 5 ; ring >= 0 ; --ring)
{
piGlowRing (ring, 100) ;
delay (50) ;
piGlowRing (ring, 0) ;
}

for (i = 0 ; i < 1000 ; ++i)
{
leg = random () % 3 ;
ring = random () % 6 ;
piGlow1 (leg, ring, random () % 256) ;
delay (5) ;
piGlow1 (leg, ring, 0) ;
}
}

return 0 ;
}

+ 1
- 1
gpio/gpio.c View File

@@ -51,7 +51,7 @@ extern void doReadallOld (void) ;
# define FALSE (1==2)
#endif

#define VERSION "2.09"
#define VERSION "2.10"
#define I2CDETECT "/usr/sbin/i2cdetect"

int wpMode ;


Loading…
Cancel
Save