WS2803

REB100

New Member
Anyone working with the WS2803 LED Driver and picaxe processors?

I've been trying to get one working but so far no success.
 

tony_g

Senior Member
westaust55 did a tutorial for the WS2801 which is the 3 channel chip

http://www.picaxeforum.co.uk/showthread.php?22713-Getting-Started-with-the-WS2801-3-Channel-RGB-LED-Driver-with-PWM-output

if they work in a similar manner then it should be along the same routines.

if you post some of your code and a little more info about the issues you are encountering with it then the large number of knowledgeable people on here should be able to get you pointed in the right direction and on your way.

tony
 

REB100

New Member
westaust55 did a tutorial for the WS2801 which is the 3 channel chip

http://www.picaxeforum.co.uk/showthread.php?22713-Getting-Started-with-the-WS2801-3-Channel-RGB-LED-Driver-with-PWM-output

if they work in a similar manner then it should be along the same routines.

if you post some of your code and a little more info about the issues you are encountering with it then the large number of knowledgeable people on here should be able to get you pointed in the right direction and on your way.

tony
So far I have not been able to get any LEDs to light.

I used an 08m2 and the WS2803 (DIP version) on a breadboard with 18 LEDs of various colors.

The LEDs connect from +5v to the output pins on the WS2803 ( one LED per pin).
Power and ground connections were made to both chips.

I used a 1.8K resistor to connect IREF (Pin 2) of the WS2803 DIP-28 to ground. This should give a max current of 15ma for each LED.

I connected C.1 of the 08M2 to the CKI (Pin 4) of the WS2803.
I connected C.2 of the 08M2 to the SDI (Pin 5) of the WS2803.
I connected C.4 of the 08M2 to the reset pin of a ripple counter I used for troubleshooting. It counts 146 pulses at both the CKI and CKO pins of the WS2803.

I tried two different 08M2 chips and 3 different WS2803 chips.

I also tried connecting the SDI pin to +5v thru a 4.7K resistor (should read as all ones) and to ground (should read as all zeros).

I have used the Setfreq command at 4,8,16 and 32 MHz while making changes to the pauseus line to keep the 500us delay at the beginning and end of the data.

I have reached the point where I can't see the forest for the trees anymore. Any suggestions are welcome.

P.S. I have a WS2801 module from SparFun and it works just fine when I modify my for nex
Code:
setfreq m32


label1:
low c.1
pauseus 400
high c.1
'pause 1
high c.2
high c.4
low c.4
for w13=1 to 288
toggle c.1
next w13

low c.1
pauseus 400
high c.1
pause 1
low c.1
pause 5000


low c.1


toggle c.2
pause 5000
'debug
goto label1
 

westaust55

Moderator
Did you try using the code for the 18M2 that I had posted previously as a basis -see post 3 at the link provided by tony_g above (at post 2) with a few IO re-assigned?

You only need to change a few SYMBOL statements, as shown below, and adjust to account for 18 bytes per WS2803 in lieu of the 3 bytes per chip for the SW2801.
My code was sending out 9 bytes for 3 daisy-chained WS2801 chips.

Code:
; -----[ I/O Definitions ]-------------------------------------------------- 

; - - - DIGITAL INPUT PINS  - - -
; none used
;
; - - - DIGITAL OUTPUT PINS - - - 
SYMBOL SData	= pin[COLOR="#FF0000"]C.2[/COLOR] ; SDI Pin on WS2801 - used to transfer 1 bit of data to a pin
SYMBOL S_Data	= [COLOR="#FF0000"]C.2[/COLOR] ; SDI Pin	- also defined this way to use with the LOW command in Init:
SYMBOL SClock	= [COLOR="#FF0000"]C.1[/COLOR] ; CKI Pin on WS2801

I suspect your code even at 32 MHz PICAXE clock speed will not clock out the data fast enough when in a FOR...NEXT loop. With the M2 parts you need to open out the loop tp load a bytes and send all the bits very quickly. The WS datasheets are a little vague on some time requirements. FOr the WS2803, the only clear time duration I saw at a glance was that 600us stop in transmissions was enought to cause the WS2801 to reset if the clock input line is held low.
Suggest you try a modified very of my 18M2 code as a starting point.
 
Last edited:

REB100

New Member
Did you try using the code for the 18M2 that I had posted previously as a basis -see post 3 at the link provided by tony_g above (at post 2) with a few IO re-assigned?


I suspect your code even at 32 MHz PICAXE clock speed will not clock out the data fast enough when in a FOR...NEXT loop. With the M2 parts you need to open out the loop tp load a bytes and send all the bits very quickly. The WS datasheets are a little vague on some time requirements. FOr the WS2803, the only clear time duration I saw at a glance was that 600us stop in transmissions was enought to cause the WS2801 to reset if the clock input line is held low.
Suggest you try a modified very of my 18M2 code as a starting point.

I ripped out the 08m2 and put in a 18M2+.

I had three of the Sparkfun 2801 Modules so I wired them up and got your program working.

I then hooked up the WS2803, doubled up the data in your program and changed the number of modules to 6.

Now I have 18 blinking LEDs on my board.

Thanks to everyone who posted suggestions.
 

REB100

New Member
Another update.

I went back to try the 08m2.

No go, no lights. I modified the program for the pin differences between the 18M2+ and the 08M2 and the program loaded with no errors but also no lights.


Here is the working code for the 18M2+

This code will light 16 LEDs.
On the WS2803 outputs 0 and 17 are not used.
Limits on the internal EEprom kept me from using all 18 LEDs.

Many other posiblities exist for modifing this program.
Code:
; =================================================
; File....... 18M2 3xWS2801
; Purpose.... A demo program to show control of a WS2801 RGB LED drivers
; Author..... Westaust55
  ; E-mail.....
; Started.... 25-11-2012
; Updated.... DD-MM-YYYY
; =================================================
; 'Modified by  Rob Bell
  'Jan 29 2013
  ' For use with a WS2803 18 channel LED driver.
  'This program will drive 16 LEDs.
  'Outputs 0 and 17 on the WS2803 are NOT used.
; -----[ Program Description ]---------------------------------------------
; A program to demonstrate the control of a short string of three WS2801 RGB LED driver chips
;
; -----[ Revision History ]---------------------------------------------------
;
; A = 25-11-2012 First release total program size = 113 bytes
#PICAXE 18M2
SETFREQ M32
; -----[ I/O Definitions ]--------------------------------------------------
; - - - DIGITAL INPUT PINS - - -
; none used
;
; - - - DIGITAL OUTPUT PINS - - -
SYMBOL SData = pinB.6 ; SDI Pin on WS2801 - used to transfer 1 bit of data to a pin
SYMBOL S_Data = B.6 ; SDI Pin - also defined this way to use with the LOW command in Init:
SYMBOL SClock = B.7 ; CKI Pin on WS2801
; -----[ Constants ]-------------------------------------------------------
SYMBOL TotalMods = 6
SYMBOL Data_Sets = 14
SYMBOL SeqStep_Delay = 4000 ; for 0.75 sec delay at 16 MHz
SYMBOL DataBaseAddr = $80
; -----[ Variables ]-------------------------------------------------------
SYMBOL LED_Data = b0 ; NOTE: - this must be b0 for SendData sub routine to work
SYMBOL DataTransf = b1
SYMBOL No_LEDs = b2
SYMBOL CycleLen = b3
SYMBOL MemAddr = b4
SYMBOL Cntr = b5
SYMBOL AllSent = b6
; -----[ EEPROM Data ]-----------------------------------------------------
; Put the RGB LED data into EEPROM as 3 bytes per LED at quarter intensity - $FF for max intensity
EEPROM $00, ($00,$3F,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$3F,$00) ; LED dataset 1
EEPROM $12, ($00,$00,$3F, $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00, $3F,$00,$00) ; LED dataset 2
EEPROM $24, ($00,$00,$00, $3F,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$3F, $00,$00,$00) ; LED dataset 3
EEPROM $36, ($00,$00,$00, $00,$3F,$00, $00,$00,$00, $00,$00,$00, $00,$3F,$00, $00,$00,$00) ; LED dataset 4
EEPROM $48, ($00,$00,$00, $00,$00,$3F, $00,$00,$00, $00,$00,$00, $3F,$00,$00, $00,$00,$00) ; LED dataset 5
EEPROM $5A, ($00,$00,$00, $00,$00,$00, $3F,$00,$00, $00,$00,$3F, $00,$00,$00, $00,$00,$00) ; LED dataset 6
EEPROM $6C, ($00,$00,$00, $00,$00,$00, $00,$3F,$00, $00,$3F,$00, $00,$00,$00, $00,$00,$00) ; LED dataset 7
EEPROM $7E, ($00,$00,$00, $00,$00,$00, $00,$00,$3F, $3F,$00,$00, $00,$00,$00, $00,$00,$00) ; LED dataset 8
EEPROM $90, ($00,$00,$00, $00,$00,$00, $00,$3F,$00, $00,$3F,$00, $00,$00,$00, $00,$00,$00) ; LED dataset 9
EEPROM $A2, ($00,$00,$00, $00,$00,$00, $3F,$00,$00, $00,$00,$3F, $00,$00,$00, $00,$00,$00) ; LED dataset 10
EEPROM $B4, ($00,$00,$00, $00,$00,$3F, $00,$00,$00, $00,$00,$00, $3F,$00,$00, $00,$00,$00) ; LED dataset 11
EEPROM $C6, ($00,$00,$00, $00,$3F,$00, $00,$00,$00, $00,$00,$00, $00,$3F,$00, $00,$00,$00) ; LED dataset 12
EEPROM $D8, ($00,$00,$00, $3F,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$3F, $00,$00,$00) ; LED dataset 13
EEPROM $EA, ($00,$00,$3F, $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00, $3F,$00,$00) ; LED dataset 14




; -----[ Initialization ]--------------------------------------------------
Init:
Low S_Data ; by using LOW command we automatically also set the pin as an output
Low Sclock ; by using LOW command we automatically also set the pin as an output
MemAddr = 0 ; set the EEPROM data pointer to the first location
No_LEDs = 3 * TotalMods ; calculate the total number of individual LED channels
AllSent = DataBaseAddr + No_LEDs ; the upper RAM location for M2 RAM "scratchpad" area
CycleLen = No_LEDs * Data_Sets ; calculate the number of bytes of EEPROM data in the cycle
;
; -----[ Program Code ]----------------------------------------------------
Main:
DO
GOSUB FetchData
IF MemAddr = CycleLen THEN
MemAddr = 0
ENDIF
GOSUB SendData
PAUSE SeqStep_Delay ; provide a delay between updates so user can see new pattern
LOOP
;
; -----[ Subroutines ]-----------------------------------------------------
;
; ***** Subroutine to fetch the data from EEPROM and save into Scratchpad for 2 RGB LED modules
FetchData:
bptr = DataBaseAddr
DO
READ MemAddr, LED_Data ; fetch a byte of data from EEPROM
@bPtrInc = LED_Data ; and save into the scratchpad area
INC MemAddr ; increment the EEPROM address pointer
LOOP UNTIL bPtr = AllSent ; loop until a complete new set of data has been obtained
RETURN
;
; Subroutine to serially clock out the data through the SW2801 chips for the RGB LEDs
SendData:
bptr = DataBaseAddr ; set the RAM start location for RGB LED string data
DO
LED_Data = @bptrinc ; load the data into b0 so we can extract each bit quickly
SData = bit7 : PulsOut SClock, 1 ; msb first to the data pin and clock out
SData = bit6 : PulsOut SClock, 1
SData = bit5 : PulsOut SClock, 1
SData = bit4 : PulsOut SClock, 1
SData = bit3 : PulsOut SClock, 1
SData = bit2 : PulsOut SClock, 1
SData = bit1 : PulsOut SClock, 1
SData = bit0 : PulsOut SClock, 1 ; lsb of the current data byte to be clocked out
LOOP UNTIL bptr = AllSent ; continue until all data is sent for all RGB LEDs in string

RETURN
 

Technical

Technical Support
Staff member
For an 08M2 you will need to change this:
SYMBOL DataBaseAddr = $80
as it only has addresses 00-7F so you are out of range.
 

westaust55

Moderator
Great to read that you have the WS2803 circuit/code working.

I will make a note on the RAM capacity of the 08M2 being less than 18M2.
I Should in fact recheck for all M2 parts.

EDIT:
I have now added a note in my WS2801 thread about the reduced available RAM capacity of the 08M2 and need to define a new starting address for the temp storage of the "current data" in the SYMBOL statement.
 
Last edited:

REB100

New Member
Great to read that you have the WS2803 circuit/code working.

I will make a note on the RAM capacity of the 08M2 being less than 18M2.
I Should in fact recheck for all M2 parts.

EDIT:
I have now added a note in my WS2801 thread about the reduced available RAM capacity of the 08M2 and need to define a new starting address for the temp storage of the "current data" in the SYMBOL statement.
That note served to remind me I am a complete newbie with the picaxe hardware.
However, the weather here lately makes it easy to spend time read the manuals.( -30 C and fog (technically ice crystals).
Something like 70+ degrees cooler than your local weather?

Any reason why one could not modify the contents of the EEPROM between cycles?
Currently building a light string to sweep in from the ends to met in the middle and then sweep out again with each cycle having an increase in brightness to maximum and then decrase back down to a minimum.

There is justr enough space to hold the sweep in and out which I have working now I need to play with changing the memory for the next pass.

Yet another silly light toy. ( Watched too much original Star Trek growing up)(In black and white I should add.)

Will post code here when I get it working.
 

westaust55

Moderator
Any reason why one could not modify the contents of the EEPROM between cycles?
RAM has no limitations on how many times you can write to it.
EEPROM has a limitation on how many time you can write to a location before the possibility of failure occurs.

If you were only writing now an again to EEPROM this is not a problem, but writing new data to EEPROM for each step of a pattern cycle may expedite failure of the EEPROM locations to which you keep rewriting every millisecond or so.
 

REB100

New Member
RAM has no limitations on how many times you can write to it.
EEPROM has a limitation on how many time you can write to a location before the possibility of failure occurs.

If you were only writing now an again to EEPROM this is not a problem, but writing new data to EEPROM for each step of a pattern cycle may expedite failure of the EEPROM locations to which you keep rewriting every millisecond or so.
Ok, Plan B will have to be created.
 

REB100

New Member
Ok, Plan B will have to be created.

More like plan D but I got it working. The code is below. Modify the RAM between cycles to change the brightness instead of changing the EEPROM data.

The values stored in EEPROM now just serve as markers and not data.

It should be possible to store the data in the EEPROM at the bit level instead of in bytes to provide room for a more complex pattern.

Lots of ways to modify this setup.


Code:
; =================================================
; File....... 18M2 3xWS2801
; Purpose.... A demo program to show control of a WS2801 RGB LED drivers
  '		modified Jan 29 2013 to drive WS2803 
; Author..... Westaust55
  'Modified by  Rob Bell
; E-mail.....
; Started.... 25-11-2012
; Updated.... DD-MM-YYYY
; =================================================
; '  Modifications
  
; -----[ Program Description ]---------------------------------------------
; A program to demonstrate the control of a short string of three WS2801 RGB LED driver chips
;
; -----[ Revision History ]---------------------------------------------------
;
; A = 25-11-2012 First release total program size = 113 bytes
#PICAXE 08M2
SETFREQ M32
; -----[ I/O Definitions ]--------------------------------------------------
; - - - DIGITAL INPUT PINS - - -
; none used
;
; - - - DIGITAL OUTPUT PINS - - -
SYMBOL SData = pinC.2 ; SDI Pin on WS2801 - used to transfer 1 bit of data to a pin
SYMBOL S_Data = C.2 ; SDI Pin - also defined this way to use with the LOW command in Init:
SYMBOL SClock = C.1 ; CKI Pin on WS2801
; -----[ Constants ]-------------------------------------------------------
SYMBOL TotalMods = 6
SYMBOL Data_Sets = 14
SYMBOL SeqStep_Delay = 4000 ; for 0.75 sec delay at 16 MHz
SYMBOL DataBaseAddr = $10
; -----[ Variables ]-------------------------------------------------------
SYMBOL LED_Data = b0 ; NOTE: - this must be b0 for SendData sub routine to work
SYMBOL DataTransf = b1
SYMBOL No_LEDs = b2
SYMBOL CycleLen = b3
SYMBOL MemAddr = b4
SYMBOL Cntr = b5
SYMBOL AllSent = b6
SYMBOL Bright = b7


; -----[ EEPROM Data ]-----------------------------------------------------
; Put the RGB LED data into EEPROM as 3 bytes per LED at quarter intensity - $FF for max intensity
EEPROM $00, ($00,$3F,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$3F,$00) ; LED dataset 1
EEPROM $12, ($00,$00,$3F, $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00, $3F,$00,$00) ; LED dataset 2
EEPROM $24, ($00,$00,$00, $3F,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$3F, $00,$00,$00) ; LED dataset 3
EEPROM $36, ($00,$00,$00, $00,$3F,$00, $00,$00,$00, $00,$00,$00, $00,$3F,$00, $00,$00,$00) ; LED dataset 4
EEPROM $48, ($00,$00,$00, $00,$00,$3F, $00,$00,$00, $00,$00,$00, $3F,$00,$00, $00,$00,$00) ; LED dataset 5
EEPROM $5A, ($00,$00,$00, $00,$00,$00, $3F,$00,$00, $00,$00,$3F, $00,$00,$00, $00,$00,$00) ; LED dataset 6
EEPROM $6C, ($00,$00,$00, $00,$00,$00, $00,$3F,$00, $00,$3F,$00, $00,$00,$00, $00,$00,$00) ; LED dataset 7
EEPROM $7E, ($00,$00,$00, $00,$00,$00, $00,$00,$3F, $3F,$00,$00, $00,$00,$00, $00,$00,$00) ; LED dataset 8
EEPROM $90, ($00,$00,$00, $00,$00,$00, $00,$3F,$00, $00,$3F,$00, $00,$00,$00, $00,$00,$00) ; LED dataset 9
EEPROM $A2, ($00,$00,$00, $00,$00,$00, $3F,$00,$00, $00,$00,$3F, $00,$00,$00, $00,$00,$00) ; LED dataset 10
EEPROM $B4, ($00,$00,$00, $00,$00,$3F, $00,$00,$00, $00,$00,$00, $3F,$00,$00, $00,$00,$00) ; LED dataset 11
EEPROM $C6, ($00,$00,$00, $00,$3F,$00, $00,$00,$00, $00,$00,$00, $00,$3F,$00, $00,$00,$00) ; LED dataset 12
EEPROM $D8, ($00,$00,$00, $3F,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$3F, $00,$00,$00) ; LED dataset 13
EEPROM $EA, ($00,$00,$3F, $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00, $3F,$00,$00) ; LED dataset 14




; -----[ Initialization ]--------------------------------------------------
Init:
Low S_Data ; by using LOW command we automatically also set the pin as an output
Low Sclock ; by using LOW command we automatically also set the pin as an output
MemAddr = 0 ; set the EEPROM data pointer to the first location
No_LEDs = 3 * TotalMods ; calculate the total number of individual LED channels
AllSent = DataBaseAddr + No_LEDs ; the upper RAM location for M2 RAM "scratchpad" area
CycleLen = No_LEDs * Data_Sets ; calculate the number of bytes of EEPROM data in the cycle
Bright = $02
; -----[ Program Code ]----------------------------------------------------
Main:

DO
GOSUB FetchData
IF MemAddr = CycleLen THEN
MemAddr = 0

Bright = Bright + Bright



ENDIF

if bright =0 then 
bright =02 
endif

GOSUB SendData

'GOSUB Brightloop

if bright=$FF then
Bright=$1F
endif
debug
PAUSE SeqStep_Delay ; provide a delay between updates so user can see new pattern






LOOP
;
; -----[ Subroutines ]-----------------------------------------------------
;
; ***** Subroutine to fetch the data from EEPROM and save into Scratchpad for 2 RGB LED modules
FetchData:
bptr = DataBaseAddr
DO
READ MemAddr, LED_Data ; fetch a byte of data from EEPROM
if led_data<>$00 then
led_data =Bright
b9=led_data
@bptrinc = led_data
else

@bPtrInc = LED_Data ; and save into the scratchpad area
b10 = led_data
endif
INC MemAddr ; increment the EEPROM address pointer
LOOP UNTIL bPtr = AllSent ; loop until a complete new set of data has been obtained
RETURN

#rem
Brightloop:
bptr = DataBaseAddr
DO
LED_Data = @bptrinc
if led_data<>$00 then 
led_data = b9
led_data = Bright
@bptrinc = led_data
b8=b8+1
endif
LOOP UNTIL bptr = AllSent
;



Return
#endrem
; Subroutine to serially clock out the data through the SW2801 chips for the RGB LEDs
SendData:
bptr = DataBaseAddr ; set the RAM start location for RGB LED string data
DO
LED_Data = @bptrinc ; load the data into b0 so we can extract each bit quickly
SData = bit7 : PulsOut SClock, 1 ; msb first to the data pin and clock out
SData = bit6 : PulsOut SClock, 1
SData = bit5 : PulsOut SClock, 1
SData = bit4 : PulsOut SClock, 1
SData = bit3 : PulsOut SClock, 1
SData = bit2 : PulsOut SClock, 1
SData = bit1 : PulsOut SClock, 1
SData = bit0 : PulsOut SClock, 1 ; lsb of the current data byte to be clocked out
LOOP UNTIL bptr = AllSent ; continue until all data is sent for all RGB LEDs in string

RETURN
 

johnhr

New Member
I'm using a 40X2 chip with the WS2803 led driver. I've followed Westaust55 with his WS2801 and now your code for the WS2803.

In your code, I'm confused. I don't know if you're using the 18M2 or the 8M2, but you call your SDI and CKI pins as C.2 and C.1 under output pins, but SDI and CKI are input pins on the WS2803 and are pin 5 and pin 4, aren't they. Since C.2 and C.1 are output pins do you mean SDA and SCL, on the PICAXE chip? On the 40X2 the SCL and the SDA pins are C.3 and C.4, I believe.

I'm driving 6 RGB LEDs with one WS2803, does this mean that I use 18 for DataSets and 1 for TotalMods?

Thanks
 

westaust55

Moderator
I think that you are confused with the I2C bus IO pins.

The WS2801 and WS2803 use a serial SPI like interface.

Within the PICAXE program, SData is the name given to the pin used as the serial data output pin which has been designated as pin C.2. Then in turn is wired to pin SDI = Serial Data In (physical pin 2 on the WS2801 and pin 5 on the WS2803).
The same concept applies to the clock pin when SClock is pin C.1 on PICAXE and wired to SCI on the Ws2801/WS2803.

Yes, you can define modules = 1 when there is one chip.
Then one Datasheet has 18 bytes of data.
The total datasets is the total number of steps in the lighting sequence.
 

johnhr

New Member
Thanks westaust,

I got my 6 RGB LEDs to light on my board with your program, adjusted for my WS2803. Next I will add the 2 other WS2803s for my 18 total RGB LEDs. I have an 11 foot strand of the 18 leds all wired together waiting for my program.

In your EEPROM data will I need to triple it from, say for Magenta: EEPROM $09, ($3F, $00, $3F) to EEPROM $09, ($3F, $00, $3F, $3F, $00, $3F, $3F, $00, $3F) for each WS2803 module, or will I need to type out all 18 ($3F, $00, $3F)s? Once I understand the code I'll be able to create my own patterns and runs with different colors.

Thanks again.
 
Last edited:

westaust55

Moderator
No, the three bytes representing a colour such as magenta remain unchanged - each of the three bytes represent one primary colour as red, green and blue. You can expand the colour data held in EEPROM to hold more colour definitions.

Yes you will need to expand the number of bytes sent to each Ws2803.
You need to send 3 bytes for each RGB LED time six for a completely "populated" WS2803
 

johnhr

New Member
Westaust, I'm making a schematic with my AXE022 Protoboard and the 40X2 chip with three WS2803s. I've brought the 40X2 diagram into DesignSpark but cannot find the AXE022 that you used back in 18/09/2008. On your labeling you mention PICAXE EXPERIMETERS BOX. I've done a search within PICAXE but cannot find the PICAXE Experimenters Box. Did you design that yourself or did you pull it in from somewhere?
Thanks
 

westaust55

Moderator
Yes, the PICAXE Experimenters Box is my own creation.

A plastic case with inbuilt AXE022 with 40X1, SPE030, AXE111, board with DS1338+uMFPU V2.0. power supply based on 3xAA cells plus 7805 from mains plugpack, and SRF08 (on rear with battery box).
On the lid including 3x16-button keypads, 8 x LEDs driven via an IO Expander port, a pot, an LDR, a DS18B20, an IR LED, a Mag field sensor, and 4x20 LCD module.
Finally a 15-pin DA-15 connector as an expansion port allowing me to plug many add-on modules in having 8xdigital IO, 1 analogue Input i2c bus and 5V dc supply.
I did post some photos early in the construction - recall there was a thread several years ago about breadboards where folks posted some photo's of their best boards.

Edit to save you searching it is shown in post 62 here:
http://www.picaxeforum.co.uk/showthread.php?9285-Breadboards-Tips-Tricks-and-Photos

Worth having a look through the entire thread to see what others have done in the past.
 
Last edited:
Top