Added in the SN3218 LED controller IC - as used in the PiGlow
so write a little test program with it too. Updated gpio to use the sn3218 too.
This commit is contained in:
parent
8c8578a26b
commit
d24cf0630b
|
@ -42,7 +42,7 @@ SRC = blink.c blink8.c blink12.c \
|
|||
nes.c \
|
||||
softPwm.c softTone.c \
|
||||
delayTest.c serialRead.c serialTest.c okLed.c ds1302.c \
|
||||
rht03.c
|
||||
rht03.c piglow.c
|
||||
|
||||
OBJ = $(SRC:.c=.o)
|
||||
|
||||
|
@ -139,6 +139,10 @@ ds1302: ds1302.o
|
|||
@echo [link]
|
||||
@$(CC) -o $@ ds1302.o $(LDFLAGS) $(LDLIBS)
|
||||
|
||||
piglow: piglow.o
|
||||
@echo [link]
|
||||
@$(CC) -o $@ piglow.o $(LDFLAGS) $(LDLIBS)
|
||||
|
||||
|
||||
.c.o:
|
||||
@echo [CC] $<
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* piglow.c:
|
||||
* Very simple demonstration of the PiGlow board.
|
||||
* This uses the SN3218 directly - soon there will be a new PiGlow
|
||||
* devLib device which will handle the PiGlow board on a more easy
|
||||
* to use manner...
|
||||
*
|
||||
* 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>
|
||||
|
||||
#define LED_BASE 533
|
||||
|
||||
int main (void)
|
||||
{
|
||||
int i, j ;
|
||||
|
||||
wiringPiSetupSys () ;
|
||||
|
||||
sn3218Setup (LED_BASE) ;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
for (i = 0 ; i < 256 ; ++i)
|
||||
for (j = 0 ; j < 18 ; ++j)
|
||||
analogWrite (LED_BASE + j, i) ;
|
||||
|
||||
for (i = 255 ; i >= 0 ; --i)
|
||||
for (j = 0 ; j < 18 ; ++j)
|
||||
analogWrite (LED_BASE + j, i) ;
|
||||
}
|
||||
}
|
|
@ -49,6 +49,7 @@
|
|||
#include <mcp3004.h>
|
||||
#include <mcp4802.h>
|
||||
#include <mcp3422.h>
|
||||
#include <sn3218.h>
|
||||
|
||||
#include "extensions.h"
|
||||
|
||||
|
@ -466,6 +467,20 @@ static int doExtensionMcp4802 (char *progName, int pinBase, char *params)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* doExtensionSn3218:
|
||||
* Analog Output (LED Driver)
|
||||
* sn3218:base
|
||||
*********************************************************************************
|
||||
*/
|
||||
|
||||
static int doExtensionSn3218 (char *progName, int pinBase, char *params)
|
||||
{
|
||||
sn3218Setup (pinBase) ;
|
||||
return TRUE ;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* doExtensionMcp3422:
|
||||
* Analog IO
|
||||
|
@ -531,6 +546,7 @@ struct extensionFunctionStruct extensionFunctions [] =
|
|||
{ "mcp3422", &doExtensionMcp3422 },
|
||||
{ "max31855", &doExtensionMax31855 },
|
||||
{ "max5322", &doExtensionMax5322 },
|
||||
{ "sn3218", &doExtensionSn3218 },
|
||||
{ NULL, NULL },
|
||||
} ;
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ SRC = wiringPi.c \
|
|||
pcf8574.c pcf8591.c \
|
||||
mcp3002.c mcp3004.c mcp4802.c mcp3422.c \
|
||||
max31855.c max5322.c \
|
||||
sn3218.c \
|
||||
drc.c
|
||||
|
||||
OBJ = $(SRC:.c=.o)
|
||||
|
@ -112,6 +113,7 @@ install-headers:
|
|||
@install -m 0644 sr595.h $(DESTDIR)$(PREFIX)/include
|
||||
@install -m 0644 pcf8574.h $(DESTDIR)$(PREFIX)/include
|
||||
@install -m 0644 pcf8591.h $(DESTDIR)$(PREFIX)/include
|
||||
@install -m 0644 sn3218.h $(DESTDIR)$(PREFIX)/include
|
||||
|
||||
.PHONEY: install
|
||||
install: $(DYNAMIC) install-headers
|
||||
|
@ -151,6 +153,7 @@ uninstall:
|
|||
@rm -f $(DESTDIR)$(PREFIX)/include/sr595.h
|
||||
@rm -f $(DESTDIR)$(PREFIX)/include/pcf8574.h
|
||||
@rm -f $(DESTDIR)$(PREFIX)/include/pcf8591.h
|
||||
@rm -f $(DESTDIR)$(PREFIX)/include/sn3218.h
|
||||
@rm -f $(DESTDIR)$(PREFIX)/lib/libwiringPi.*
|
||||
@ldconfig
|
||||
|
||||
|
@ -184,4 +187,5 @@ mcp4802.o: wiringPi.h wiringPiSPI.h mcp4802.h
|
|||
mcp3422.o: wiringPi.h wiringPiI2C.h mcp3422.h
|
||||
max31855.o: wiringPi.h wiringPiSPI.h max31855.h
|
||||
max5322.o: wiringPi.h wiringPiSPI.h max5322.h
|
||||
sn3218.o: wiringPi.h wiringPiI2C.h sn3218.h
|
||||
drc.o: wiringPi.h wiringSerial.h drc.h
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
/*
|
||||
* sn3218.c:
|
||||
* Extend wiringPi with the SN3218 I2C LEd Driver
|
||||
* Copyright (c) 2012-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 <wiringPiI2C.h>
|
||||
|
||||
#include "sn3218.h"
|
||||
|
||||
/*
|
||||
* myAnalogWrite:
|
||||
* Write analog value on the given pin
|
||||
*********************************************************************************
|
||||
*/
|
||||
|
||||
static void myAnalogWrite (struct wiringPiNodeStruct *node, int pin, int value)
|
||||
{
|
||||
int fd = node->fd ;
|
||||
int chan = 0x01 + (pin - node->pinBase) ;
|
||||
|
||||
wiringPiI2CWriteReg8 (fd, chan, value & 0xFF) ; // Value
|
||||
wiringPiI2CWriteReg8 (fd, 0x16, 0x00) ; // Update
|
||||
}
|
||||
|
||||
/*
|
||||
* sn3218Setup:
|
||||
* Create a new wiringPi device node for an sn3218 on the Pi's
|
||||
* SPI interface.
|
||||
*********************************************************************************
|
||||
*/
|
||||
|
||||
int sn3218Setup (const int pinBase)
|
||||
{
|
||||
int fd ;
|
||||
struct wiringPiNodeStruct *node ;
|
||||
|
||||
if ((fd = wiringPiI2CSetup (0x54)) < 0)
|
||||
return fd ;
|
||||
|
||||
// Setup the chip - initialise all 18 LEDs to off
|
||||
|
||||
//wiringPiI2CWriteReg8 (fd, 0x17, 0) ; // Reset
|
||||
wiringPiI2CWriteReg8 (fd, 0x00, 1) ; // Not Shutdown
|
||||
wiringPiI2CWriteReg8 (fd, 0x13, 0x3F) ; // Enable LEDs 0- 5
|
||||
wiringPiI2CWriteReg8 (fd, 0x14, 0x3F) ; // Enable LEDs 6-11
|
||||
wiringPiI2CWriteReg8 (fd, 0x15, 0x3F) ; // Enable LEDs 12-17
|
||||
wiringPiI2CWriteReg8 (fd, 0x16, 0x00) ; // Update
|
||||
|
||||
node = wiringPiNewNode (pinBase, 18) ;
|
||||
|
||||
node->fd = fd ;
|
||||
node->analogWrite = myAnalogWrite ;
|
||||
|
||||
return 0 ;
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* sn3218.c:
|
||||
* Extend wiringPi with the SN3218 I2C LED driver board.
|
||||
* Copyright (c) 2012-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 int sn3218Setup (int pinBase) ;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
Loading…
Reference in New Issue