so write a little test program with it too.
Updated gpio to use the sn3218 too.
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)
@echo [link]
@$(CC) -o $@ ds1302.o $(LDFLAGS) $(LDLIBS)
+piglow: piglow.o
+ @echo [link]
+ @$(CC) -o $@ piglow.o $(LDFLAGS) $(LDLIBS)
+
.c.o:
@echo [CC] $<
--- /dev/null
+/*
+ * 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) ;
+ }
+}
#include <mcp3004.h>
#include <mcp4802.h>
#include <mcp3422.h>
+#include <sn3218.h>
#include "extensions.h"
}
+/*
+ * doExtensionSn3218:
+ * Analog Output (LED Driver)
+ * sn3218:base
+ *********************************************************************************
+ */
+
+static int doExtensionSn3218 (char *progName, int pinBase, char *params)
+{
+ sn3218Setup (pinBase) ;
+ return TRUE ;
+}
+
+
/*
* doExtensionMcp3422:
* Analog IO
{ "mcp3422", &doExtensionMcp3422 },
{ "max31855", &doExtensionMax31855 },
{ "max5322", &doExtensionMax5322 },
+ { "sn3218", &doExtensionSn3218 },
{ NULL, NULL },
} ;
pcf8574.c pcf8591.c \
mcp3002.c mcp3004.c mcp4802.c mcp3422.c \
max31855.c max5322.c \
+ sn3218.c \
drc.c
OBJ = $(SRC:.c=.o)
@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
@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
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
--- /dev/null
+/*
+ * 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 ;
+}
--- /dev/null
+/*
+ * 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