mirror of
https://github.com/clockworkpi/WiringPi.git
synced 2025-12-13 16:18:52 +01:00
Added in PiGlow devLib and a couple of examples for the PiGlow
bumped version.
This commit is contained in:
parent
d24cf0630b
commit
cbf6d642b5
@ -42,7 +42,8 @@ LIBS =
|
|||||||
|
|
||||||
SRC = ds1302.c maxdetect.c piNes.c \
|
SRC = ds1302.c maxdetect.c piNes.c \
|
||||||
gertboard.c piFace.c \
|
gertboard.c piFace.c \
|
||||||
lcd128x64.c lcd.c
|
lcd128x64.c lcd.c \
|
||||||
|
piGlow.c
|
||||||
|
|
||||||
OBJ = $(SRC:.c=.o)
|
OBJ = $(SRC:.c=.o)
|
||||||
|
|
||||||
@ -86,6 +87,7 @@ install-headers:
|
|||||||
@install -m 0644 piFace.h $(DESTDIR)$(PREFIX)/include
|
@install -m 0644 piFace.h $(DESTDIR)$(PREFIX)/include
|
||||||
@install -m 0644 lcd128x64.h $(DESTDIR)$(PREFIX)/include
|
@install -m 0644 lcd128x64.h $(DESTDIR)$(PREFIX)/include
|
||||||
@install -m 0644 lcd.h $(DESTDIR)$(PREFIX)/include
|
@install -m 0644 lcd.h $(DESTDIR)$(PREFIX)/include
|
||||||
|
@install -m 0644 piGlow.h $(DESTDIR)$(PREFIX)/include
|
||||||
|
|
||||||
.PHONEY: install
|
.PHONEY: install
|
||||||
install: $(DYNAMIC) install-headers
|
install: $(DYNAMIC) install-headers
|
||||||
@ -111,6 +113,7 @@ uninstall:
|
|||||||
@rm -f $(DESTDIR)$(PREFIX)/include/piFace.h
|
@rm -f $(DESTDIR)$(PREFIX)/include/piFace.h
|
||||||
@rm -f $(DESTDIR)$(PREFIX)/include/lcd128x64.h
|
@rm -f $(DESTDIR)$(PREFIX)/include/lcd128x64.h
|
||||||
@rm -f $(DESTDIR)$(PREFIX)/include/lcd.h
|
@rm -f $(DESTDIR)$(PREFIX)/include/lcd.h
|
||||||
|
@rm -f $(DESTDIR)$(PREFIX)/include/piGlow.h
|
||||||
@rm -f $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.*
|
@rm -f $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.*
|
||||||
@ldconfig
|
@ldconfig
|
||||||
|
|
||||||
@ -128,3 +131,4 @@ gertboard.o: gertboard.h
|
|||||||
piFace.o: piFace.h
|
piFace.o: piFace.h
|
||||||
lcd128x64.o: font.h lcd128x64.h
|
lcd128x64.o: font.h lcd128x64.h
|
||||||
lcd.o: lcd.h
|
lcd.o: lcd.h
|
||||||
|
piGlow.o: piGlow.h
|
||||||
|
|||||||
117
devLib/piGlow.c
Normal file
117
devLib/piGlow.c
Normal 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
devLib/piGlow.h
Normal file
36
devLib/piGlow.h
Normal 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
examples/PiGlow/Makefile
Normal file
69
examples/PiGlow/Makefile
Normal 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
|
||||||
223
examples/PiGlow/piGlow1.c
Normal file
223
examples/PiGlow/piGlow1.c
Normal 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 ;
|
||||||
|
}
|
||||||
@ -51,7 +51,7 @@ extern void doReadallOld (void) ;
|
|||||||
# define FALSE (1==2)
|
# define FALSE (1==2)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define VERSION "2.09"
|
#define VERSION "2.10"
|
||||||
#define I2CDETECT "/usr/sbin/i2cdetect"
|
#define I2CDETECT "/usr/sbin/i2cdetect"
|
||||||
|
|
||||||
int wpMode ;
|
int wpMode ;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user