so write a little test program with it too. Updated gpio to use the sn3218 too.pull/22/head
@@ -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" | |||
@@ -467,6 +468,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 | |||
* mcp3422:base:i2cAddr | |||
@@ -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 |