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 \ | nes.c \ | ||||
softPwm.c softTone.c \ | softPwm.c softTone.c \ | ||||
delayTest.c serialRead.c serialTest.c okLed.c ds1302.c \ | delayTest.c serialRead.c serialTest.c okLed.c ds1302.c \ | ||||
rht03.c | |||||
rht03.c piglow.c | |||||
OBJ = $(SRC:.c=.o) | OBJ = $(SRC:.c=.o) | ||||
@@ -139,6 +139,10 @@ ds1302: ds1302.o | |||||
@echo [link] | @echo [link] | ||||
@$(CC) -o $@ ds1302.o $(LDFLAGS) $(LDLIBS) | @$(CC) -o $@ ds1302.o $(LDFLAGS) $(LDLIBS) | ||||
piglow: piglow.o | |||||
@echo [link] | |||||
@$(CC) -o $@ piglow.o $(LDFLAGS) $(LDLIBS) | |||||
.c.o: | .c.o: | ||||
@echo [CC] $< | @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 <mcp3004.h> | ||||
#include <mcp4802.h> | #include <mcp4802.h> | ||||
#include <mcp3422.h> | #include <mcp3422.h> | ||||
#include <sn3218.h> | |||||
#include "extensions.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: | * doExtensionMcp3422: | ||||
* Analog IO | * Analog IO | ||||
* mcp3422:base:i2cAddr | * mcp3422:base:i2cAddr | ||||
@@ -531,6 +546,7 @@ struct extensionFunctionStruct extensionFunctions [] = | |||||
{ "mcp3422", &doExtensionMcp3422 }, | { "mcp3422", &doExtensionMcp3422 }, | ||||
{ "max31855", &doExtensionMax31855 }, | { "max31855", &doExtensionMax31855 }, | ||||
{ "max5322", &doExtensionMax5322 }, | { "max5322", &doExtensionMax5322 }, | ||||
{ "sn3218", &doExtensionSn3218 }, | |||||
{ NULL, NULL }, | { NULL, NULL }, | ||||
} ; | } ; | ||||
@@ -54,6 +54,7 @@ SRC = wiringPi.c \ | |||||
pcf8574.c pcf8591.c \ | pcf8574.c pcf8591.c \ | ||||
mcp3002.c mcp3004.c mcp4802.c mcp3422.c \ | mcp3002.c mcp3004.c mcp4802.c mcp3422.c \ | ||||
max31855.c max5322.c \ | max31855.c max5322.c \ | ||||
sn3218.c \ | |||||
drc.c | drc.c | ||||
OBJ = $(SRC:.c=.o) | OBJ = $(SRC:.c=.o) | ||||
@@ -112,6 +113,7 @@ install-headers: | |||||
@install -m 0644 sr595.h $(DESTDIR)$(PREFIX)/include | @install -m 0644 sr595.h $(DESTDIR)$(PREFIX)/include | ||||
@install -m 0644 pcf8574.h $(DESTDIR)$(PREFIX)/include | @install -m 0644 pcf8574.h $(DESTDIR)$(PREFIX)/include | ||||
@install -m 0644 pcf8591.h $(DESTDIR)$(PREFIX)/include | @install -m 0644 pcf8591.h $(DESTDIR)$(PREFIX)/include | ||||
@install -m 0644 sn3218.h $(DESTDIR)$(PREFIX)/include | |||||
.PHONEY: install | .PHONEY: install | ||||
install: $(DYNAMIC) install-headers | install: $(DYNAMIC) install-headers | ||||
@@ -151,6 +153,7 @@ uninstall: | |||||
@rm -f $(DESTDIR)$(PREFIX)/include/sr595.h | @rm -f $(DESTDIR)$(PREFIX)/include/sr595.h | ||||
@rm -f $(DESTDIR)$(PREFIX)/include/pcf8574.h | @rm -f $(DESTDIR)$(PREFIX)/include/pcf8574.h | ||||
@rm -f $(DESTDIR)$(PREFIX)/include/pcf8591.h | @rm -f $(DESTDIR)$(PREFIX)/include/pcf8591.h | ||||
@rm -f $(DESTDIR)$(PREFIX)/include/sn3218.h | |||||
@rm -f $(DESTDIR)$(PREFIX)/lib/libwiringPi.* | @rm -f $(DESTDIR)$(PREFIX)/lib/libwiringPi.* | ||||
@ldconfig | @ldconfig | ||||
@@ -184,4 +187,5 @@ mcp4802.o: wiringPi.h wiringPiSPI.h mcp4802.h | |||||
mcp3422.o: wiringPi.h wiringPiI2C.h mcp3422.h | mcp3422.o: wiringPi.h wiringPiI2C.h mcp3422.h | ||||
max31855.o: wiringPi.h wiringPiSPI.h max31855.h | max31855.o: wiringPi.h wiringPiSPI.h max31855.h | ||||
max5322.o: wiringPi.h wiringPiSPI.h max5322.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 | 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 |