POV Project

fierojo

New Member
I'm havuing a little trouble with my POV project. Essentiaslly the LEDs don't light. Essentially its the same as the AXE135 except its built on a KiWi board, the LEDs are blue (2.0 VDC drop, 20 ma), and I'm using 180 ohm resistors instead of the 330 ohm resistors used in the AXE 135 kit. Initially I put the entire program together as listed, except that I used 27 sub-routines, one for each of the letters of the alphabet and the other for the heart symbol. The program editor provided no errors. I then read in one of the PIXAXE forums that there was a subroutine limit of 15, but that applies to the 20M, not the 20M2 I'm using. I did strip down the number of subroutuiines for trouble shooting purposes though. Still no luck. Finally I loaded the test program below, and only B0, B1, and B4 LED's lit up very breifly. After repeating the depression of the button, only B1 and B4 lit. After waiting a few seconds, I could get the initial three to flash.

Code:
#Picaxe 20M2
main: 
if pin3 = 1 then do_message ; wait for button push
goto main ; loop until buton push
do_message: : light LEDs
let pins = %11111111 ; test LED all on
pause 2000 ; delay all LEDs on for two seconds
return : loop back
Instead of remaining lit for 2 seconds, all I got was a brief flash.

Am I asking to much power from the 20M2? (8 x 20ma). If I am, what's the maximum I could get out of 8 LED, all which could be lit simultaniously?

The schematic can be found on page 4 of http://www.picaxe.com/docs/AXE135.pdf

The full program I initially used is below. I also replaced the "let pins = %00111111 (sample) with let outpinsB = %00111111 with no affect.

Code:
#Picaxe 20M2
dirsB = $FF ; set all B pins as output 
' start:
setfreq m8 ; double Picaxe speed
main: ; return point on loop
if pin3 = 1 then do_message ; wait for switch depression
goto main ; wait for button depression
do_message: ; begine actual message
pause 300 ; Delay beween switch depression and first character
gosub letter_E ; letter E in message
gosub letter_D;; letter D in message
gosub letter_D ; Letter D in message
gosub letter_I ; Letter I in message
gosub letter_E ; letter E in message
goto main ; loop back waiting for button depression again
letter_a:; Data subsoutines for letters A though Z
pause 2    ; Pause before first LED string lights
let outpinsB = %00111111
pause 2
let outpinsB = %01001000
pause 4
let outpinsB = %00111111
pause 2
let outpinsB = %00000000
return
letter_b:
pause 2
let outpinsB = %00111110
pause 2
let outpinsB = %01001001
pause 4
let outpinsB = %01111111
pause 2
let outpinsB = %00000000
return
letter_c:
pause 2
let outpinsB = %01111111
pause 2
let outpinsB = %01000001
pause 6
let outpinsB = %00000000
return
letter_d:
pause 2
let outpinsB = %01111111
pause 2
let outpinsB = %01000001
pause 3
let outpinsB = %00100010
pause 2
let outpinsB = %00011100
pause 1
let outpinsB = %00000000
return
letter_e:
pause 2
let outpinsB = %01111111
pause 2
let outpinsB = %01001001
pause 3
let outpinsB = %01000001
pause 2
let outpinsB = %00000000
return
letter_f:
pause 2
let outpinsB = %01111111
pause 2
let outpinsB = %01001000
pause 4
let outpinsB = %01000000
pause 1
let outpinsB = %00000000
return
letter_g:
pause 2
let outpinsB = %00111110
pause 2
let outpinsB = %01000001
pause 1
let outpinsB = %01001001
pause 2
let outpinsB = %01001110
pause 2
let outpinsB = %00000000
return
letter_h:
pause 2
let outpinsB = %01111111
pause 1
let outpinsB = %00001000
pause 4
let outpinsB = %01111111
pause 1
let outpinsB = %00000000
return
letter_i:
pause 2
let outpinsB = %01000001
pause 1
let outpinsB = %01111111
pause 2
let outpinsB = %01000001
pause 1
let outpinsB = %00000000
return
letter_j: 
pause 2
let outpinsB = %01000000
pause 2
let outpinsB = %01111111
pause 2
let outpinsB = %01000001
pause 2
let outpinsB = %01000010
pause 1
let outpinsB = %00000000
return
letter_k: 
pause 2
let outpinsB = %01111111
pause 2
let outpinsB = %00001000
pause 1
let outpinsB = %00010100
pause 1
let outpinsB = %00100010
pause 1
let outpinsB = %01000001
pause 1
let outpinsB = %00000000
return
letter_l:
pause 2
let outpinsB = %00000001
pause 4
let outpinsB = %01111111
pause 2
let outpinsB = %00000000
return
letter_m: 
pause 2
let outpinsB = %01111111
pause 2
let outpinsB = %00100000
pause 1
let outpinsB = %00010000
pause 1
let outpinsB = %00001000
pause 1
let outpinsB = %00000100
pause 1
let outpinsB = %00000010
pause 1
let outpinsB = %00000100
pause 1
let outpinsB = %00001000
pause 1
let outpinsB = %00010000
pause 1
let outpinsB = %00100000
pause 1
let outpinsB = %01111111
pause 2
let outpinsB = %00000000
return
letter_n: 
pause 2
let outpinsB = %01111111
pause 2
let outpinsB = %00100000
pause 1
let outpinsB = %00010000
pause 1
let outpinsB = %00001000
pause 1
let outpinsB = %00000100
pause 1
let outpinsB = %01111110
pause 2
let outpinsB = %00000000
return
letter_o:
pause 2
let outpinsB = %00111110
pause 2
let outpinsB = %01000001
pause 4
let outpinsB = %00111110
pause 2
let outpinsB = %00000000
return
letter_p: 
pause 2
let outpinsB = %01111111
pause 2
let outpinsB = %01001000
pause 2
let outpinsB = %01111000
pause 2
let outpinsB = %00000000
return
letter_q: 
pause 2
let outpinsB = %00111110
pause 2
let outpinsB = %01000001
pause 1
let outpinsB = %01000101
pause 1
let outpinsB = %01000011
pause 1
let outpinsB = %01111111
pause 2
let outpinsB = %00000000
return
letter_r:
pause 2
let outpinsB = %01111111
pause 2
let outpinsB = %01001100
pause 1
let outpinsB = %01001010
pause 1
let outpinsB = %01001001
pause 1
let outpinsB = %00000000
return
letter_s: 
pause 2
let outpinsB = %00111001
pause 2
let outpinsB = %00010001
pause 1
let outpinsB = %01001001
pause 1
let outpinsB = %00100111
pause 2
let outpinsB = %00000000
return
letter_t: 
pause 2
let outpinsB = %01000000
pause 2
let outpinsB = %01111111
pause 2
let outpinsB = %01000000
pause 2
let outpinsB = %00000000
return
letter_u: 
pause 2
let outpinsB = %01111110
pause 1
let outpinsB = %00000001
pause 2
let outpinsB = %01111110
pause 1
let outpinsB = %00000000
return
letter_v: 
pause 2
let outpinsB = %01100000
pause 2
let outpinsB = %00010000
pause 1
let outpinsB = %00001000
pause 1
let outpinsB = %00000100
pause 1
let outpinsB = %00000011
pause 1
let outpinsB = %00000100
pause 1
let outpinsB = %00000100
pause 1
let outpinsB = %00001000
pause 1
let outpinsB = %00010000
pause 1
let outpinsB = %00100000
pause 1
let outpinsB = %01111111
pause 2
let outpinsB = %00000000
return
letter_w: 
pause 2
let outpinsB = %01111111
pause 1
let outpinsB = %00000010
pause 1
let outpinsB = %00000100
pause 1
let outpinsB = %00001000
pause 1
let outpinsB = %00000100
pause 1
let outpinsB = %00000010
pause 1
let outpinsB = %01111111
pause 1
let outpinsB = %00000000
return
letter_x: 
pause 2
let outpinsB = %01000001
pause 1
let outpinsB = %00100010
pause 1
let outpinsB = %00010100
pause 1
let outpinsB = %00001000
pause 1
let outpinsB = %00010100
pause 1
let outpinsB = %00100010
pause 1
let outpinsB = %01000001
pause 1
let outpinsB = %00000000
return
letter_y: 
pause 2
let outpinsB = %01000000
pause 2
let outpinsB = %00100000
pause 1
let outpinsB = %00011111
pause 1
let outpinsB = %00100000
pause 1
let outpinsB = %01000000
pause 1
let outpinsB = %00000000
return
letter_z: 
pause 2
let outpinsB = %01000001
pause 1
let outpinsB = %01100001
pause 1
let outpinsB = %01010001
pause 1
let outpinsB = %01001001
pause 1
let outpinsB = %01000101
pause 1
let outpinsB = %01000001
pause 1
let outpinsB = %00000000
 
Last edited by a moderator:

PaulRB

Senior Member
Hi fierojo,

Yes, 8 x 20ma = 160ma is really pushing it for the picaxe. Try around half that. Could be the picaxe is resetting to protect itself.

The 15 subroutine limit is 15 nested subroutines, not 15 in total, so that's not the problem.

Can you please edit your post and put CODE tags around the code, before the moderators get annoyed?

Here's some code I wrote to do a similar thing - the POV sign says "Sue"

Code:
; POV sign
; P. Beard 31/10/2012

#picaxe 20m2

data (%01000110)
data (%10001001)
data (%10001001)
data (%01110010)
data (%00000000)
data (%01111000)
data (%10000000)
data (%10000000)
data (%01111000)
data (%00000000)
data (%01110000)
data (%10101000)
data (%10101000)
data (%01010000)
data (%00000000)
data (%00000000)

main:

	setfreq m4
	dirsB = %11111111
	
	do
		
		for b2 = 0 to 15
			
			read b2, pinsB
			pause 5
			
		next
		
	loop
		
end
Paul
 

nick12ab

Senior Member
You haven't set the output pins as outputs - use this line at the beginning of the code:
Code:
dirsB = $FF
 

fierojo

New Member
Nick,

That did it, thanks.

How can I add it to the code from Techsupplies as well as a couple of other changes?

Sincerely,

Joe
 

nick12ab

Senior Member
How can I add it to the code from Techsupplies as well as a couple of other changes?
Code:
#Picaxe 20M2
start:
[B]dirsB = $FF[/B]
setfreq m8 ; double Picaxe speed
main: 
if pin3 = 1 then do_message ; wait for switch depression
goto main
do_message:
pause 300 ; adjust this delay
gosub letter_E
gosub letter_D
gosub letter_D
gosub letter_I
gosub letter_E
goto main
letter_a:
pause 2
let pins = %00111111
pause 2
let pins = %01001000
pause 4
let pins = %00111111
pause 2
let pins = %00000000
return
letter_b:
pause 2
let pins = %00111110
pause 2
let pins = %01001001
pause 4
let pins = %01111111
pause 2
let pins = %00000000
return
letter_c:
pause 2
let pins = %01111111
pause 2
let pins = %01000001
pause 6
let pins = %00000000
return
letter_d:
pause 2
let pins = %01111111
pause 2
let pins = %01000001
pause 3
let pins = %00100010
pause 2
let pins = %00011100
pause 1
let pins = %00000000
return
letter_e:
pause 2
let pins = %01111111
pause 2
let pins = %01001001
pause 3
let pins = %01000001
pause 2
let pins = %00000000
return
letter_f:
pause 2
let pins = %01111111
pause 2
let pins = %01001000
pause 4
let pins = %01000000
pause 1
let pins = %00000000
return
letter_g:
pause 2
let pins = %00111110
pause 2
let pins = %01000001
pause 1
let pins = %01001001
pause 2
let pins = %01001110
pause 2
let pins = %00000000
return
letter_h:
pause 2
let pins = %01111111
pause 1
let pins = %00001000
pause 4
let pins = %01111111
pause 1
let pins = %00000000
return
letter_i:
pause 2
let pins = %01000001
pause 1
let pins = %01111111
pause 2
let pins = %01000001
pause 1
let pins = %00000000
return
letter_j: 
pause 2
let pins = %01000000
pause 2
let pins = %01111111
pause 2
let pins = %01000001
pause 2
let pins = %01000010
pause 1
let pins = %00000000
return
letter_k: 
pause 2
let pins = %01111111
pause 2
let pins = %00001000
pause 1
let pins = %00010100
pause 1
let pins = %00100010
pause 1
let pins = %01000001
pause 1
let pins = %00000000
return
letter_l:
pause 2
let pins = %00000001
pause 4
let pins = %01111111
pause 2
let pins = %00000000
return
letter_m: 
pause 2
let pins = %01111111
pause 2
let pins = %00100000
pause 1
let pins = %00010000
pause 1
let pins = %00001000
pause 1
let pins = %00000100
pause 1
let pins = %00000010
pause 1
let pins = %00000100
pause 1
let pins = %00001000
pause 1
let pins = %00010000
pause 1
let pins = %00100000
pause 1
let pins = %01111111
pause 2
let pins = %00000000
return
letter_n: 
pause 2
let pins = %01111111
pause 2
let pins = %00100000
pause 1
let pins = %00010000
pause 1
let pins = %00001000
pause 1
let pins = %00000100
pause 1
let pins = %01111110
pause 2
let pins = %00000000
return
letter_o:
pause 2
let pins = %00111110
pause 2
let pins = %01000001
pause 4
let pins = %00111110
pause 2
let pins = %00000000
return
letter_p: 
pause 2
let pins = %01111111
pause 2
let pins = %01001000
pause 2
let pins = %01111000
pause 2
let pins = %00000000
return
letter_q: 
pause 2
let pins = %00111110
pause 2
let pins = %01000001
pause 1
let pins = %01000101
pause 1
let pins = %01000011
pause 1
let pins = %01111111
pause 2
let pins = %00000000
return
letter_r:
pause 2
let pins = %01111111
pause 2
let pins = %01001100
pause 1
let pins = %01001010
pause 1
let pins = %01001001
pause 1
let pins = %00000000
return
letter_s: 
pause 2
let pins = %00111001
pause 2
let pins = %00010001
pause 1
let pins = %01001001
pause 1
let pins = %00100111
pause 2
let pins = %00000000
return
letter_t: 
pause 2
let pins = %01000000
pause 2
let pins = %01111111
pause 2
let pins = %01000000
pause 2
let pins = %00000000
return
letter_u: 
pause 2
let pins = %01111110
pause 1
let pins = %00000001
pause 2
let pins = %01111110
pause 1
let pins = %00000000
return
letter_v: 
pause 2
let pins = %01100000
pause 2
let pins = %00010000
pause 1
let pins = %00001000
pause 1
let pins = %00000100
pause 1
let pins = %00000011
pause 1
let pins = %00000100
pause 1
let pins = %00000100
pause 1
let pins = %00001000
pause 1
let pins = %00010000
pause 1
let pins = %00100000
pause 1
let pins = %01111111
pause 2
let pins = %00000000
return
letter_w: 
pause 2
let pins = %01111111
pause 1
let pins = %00000010
pause 1
let pins = %00000100
pause 1
let pins = %00001000
pause 1
let pins = %00000100
pause 1
let pins = %00000010
pause 1
let pins = %01111111
pause 1
let pins = %00000000
return
letter_x: 
pause 2
let pins = %01000001
pause 1
let pins = %00100010
pause 1
let pins = %00010100
pause 1
let pins = %00001000
pause 1
let pins = %00010100
pause 1
let pins = %00100010
pause 1
let pins = %01000001
pause 1
let pins = %00000000
return
letter_y: 
pause 2
let pins = %01000000
pause 2
let pins = %00100000
pause 1
let pins = %00011111
pause 1
let pins = %00100000
pause 1
let pins = %01000000
pause 1
let pins = %00000000
return
letter_z: 
pause 2
let pins = %01000001
pause 1
let pins = %01100001
pause 1
let pins = %01010001
pause 1
let pins = %01001001
pause 1
let pins = %01000101
pause 1
let pins = %01000001
pause 1
let pins = %00000000
heart: 
pause 4
let pins = 56
pause 2
let pins = 124
pause 2
let pins = 126
pause 2
let pins = 63
pause 2
let pins = 126
pause 2
let pins = 124
pause 2
let pins = 56
pause 2
let pins = 0
return
 

fierojo

New Member
Nick,

Sorry, bad wording on my part. I meant to ask how to make editorial changes to the document from Techsupplies correcting the missing instruction, deleting others, and correcting the number of subroutines allowed?

Thanks.

Joe
 

nick12ab

Senior Member
Sorry, bad wording on my part. I meant to ask how to make editorial changes to the document from Techsupplies correcting the missing instruction, deleting others, and correcting the number of subroutines allowed?
You'll have to ask Rev-Ed to update the document to reflect the superior capabilities of the newer PICAXE-20M2.

On this subject I think Rev-Ed could release a new version of the Spacewriter Kit with more buttons on it as the superiorness of the M2/X2 parts means that there's the potential to program it to allow the message to be changed without having to use a computer. There's definitely enough room to have three buttons and they could also eliminate the need for the external resistors by using the internal pullups - use pins C.0, C.6 and C.7 in order to make it compatible with the 20X2 too.
 

hippy

Ex-Staff (retired)
I meant to ask how to make editorial changes to the document from Techsupplies correcting the missing instruction, deleting others, and correcting the number of subroutines allowed?
The usual course is to request a change from us ( Rev-Ed / Techsupplies ) and that gets assessed and things will get updated when it is considered warranted to do so.

In this particular case the documentation and code looks to be correct for the PICAXE the product is supplied with (20M). However; I have made a note of the issue when using a 20M2 and that will get looked at.
 
Top