This is old but helpful.
This was written in PBASIC 2.0 so you need to add the lines '{$STAMP BS2} and '{$PBASIC 2.0} to the top of the program.
' {$STAMP BS2}
' Compiler Directive - Tells the compiler that the target device is a BASIC Stamp 2
' {PBASIC 2.0}
' Compiler Directive - Tells the compiler that the program uses PBASIC 2.0 syntax
I'm working on drawing the schematic... LOL, I'm not very good with my TurboCad 18, it took me a ton of time to just draw the basic MAX7219 and the (4) 7-segment display... now, drawing the connecting lines is proving to be a bigger challenge
BTW, the 5V breadboard power supply recommends a 9V wall power supply. I have one that's labeled as having 9V output, but I measured it, and its more like 11.4. Then I have one labeled 12V, and puts out 12.5V.
Will either of these work? Or do I need to get another one?
I talked with the Jameco tech support. They also said the same about the unregulated power supply. But, the power supply also has an "USB" connector that supplies a steady voltage.
In this photo, there's 2 jumpers (shorting blocks) installed basically in the middle. The upper one puts 3.3V on one bus strip. The lower one puts 5V on the other bus strip... Both can work at the same time.
I got this at Jameco. It's part number 2157853. It's only $7.95, fully assembled
That's cool. And half an amp will be more than adequate for the LEDs you have there. Be sure to connect ground to Vss on your homework board so every thing has a common reference.
Yea, this 5V power supply has been a great "relief" to me getting this project working!!!
I'm using the "Stamp works" experiment #29 as a template. I have most of it basically "wired" .
My current biggest isssue, is that on page 171 (of the PDF file) there's a set of switches connecting
I/O 0-4 to +5. I don't have any of these switches.... is there another option?
I'm confused. In my copy of Stampworks (v2.1), experiment 29 is temperature measurement using a DS1620. And no switches.
If what you are working from calls for switches, I'd think that would be for manual input (say to set a clock). A different option for that specific problem would be to use DEBUGIN and get the time directly from the console.
Yea, this 5V power supply has been a great "relief" to me getting this project working!!!
I'm using the "Stamp works" experiment #29 as a template. I have most of it basically "wired" .
My current biggest isssue, is that on page 171 (of the PDF file) there's a set of switches connecting
I/O 0-4 to +5. I don't have any of these switches.... is there another option?
The switches can be replaced by wires. have wires plugged into P0-P4 and plug them into ground to produce the desired effect. Plugging the into ground is the same as pushing a button in the schematic.
The switches can be replaced by wires. have wires plugged into P0-P4 and plug them into ground to produce the desired effect. Plugging them into ground is the same as pushing a button in the schematic.
Ohhhhh. I didn't understand this experiment until now. These switches are more important than I first thought... I was confused by the dotted line surrounding the switches, and D0-D4 connected to I/O P0-P4.
Would individual momentary "ON" switches work ok? (as long as I had the 10k resistors for each)
The switches can be replaced by wires. have wires plugged into P0-P4 and plug them into ground to produce the desired effect. Plugging them into ground is the same as pushing a button in the schematic.
Ohhhhh. I didn't understand this experiment until now. These switches are more important than I first thought... I was confused by the dotted line surrounding the switches, and D0-D4 connected to I/O P0-P4.
Would individual momentary "ON" switches work ok? (as long as I had the 10k resistors for each)
Yes, momentary switches would work just fine. The resistors in the circuit are called "pull-up" resistors. They keep the inputs "high" before the switch is pushed. Pushing the switch brings the input to ground.
So, I've made the basic circuit... And... None of the (4) 7 segments are lighting. I'm totally reviewing all the connections.
But, one idea... I may be having an issue with Vss and Vdd. I have 3 separate "boards". (1) The BASIC Stamp, (2) the breadboard that holds the (4) 7 segment display and (3) the breadboard that holds the 5 switches...
Earlier in this discussion, Tomcrawford said that I needed to make sure I connected ground to Vss on the HomeWork Board. (BTW, the breadboard with the 7-segment displays has the 5V power supply)
If I've not totally confused everyone.... can someone give me an idea how to connect (inter-connect) the Vdd (5V power from the BASIC Stamp HomeWork board and the 5V breadboard power supply on the "Display" breadboard) and the Vss?
So, I've made the basic circuit... And... None of the (4) 7 segments are lighting. I'm totally reviewing all the connections.
If I've not totally confused everyone.... can someone give me an idea how to connect (inter-connect) the Vdd (5V power from the BASIC Stamp HomeWork board and the 5V breadboard power supply on the "Display" breadboard) and the Vss
You can take one of two approaches: Don't use (or even connect to the breadboard) your 5V/ 3.3V external supply. Rather, take power from your homework board. Connect Vdd to the +5 rail on the breadboard.
OR: If you really want to have separate supplies, do NOT connect them together. Try to arrange things so that the two supplies power up at more or less simultaneously.
Of course, you will have to program the MAX7219, right?
Edit: However you arrange the power, you still need to connect grounds together (vss on homework board and ground rail on the breadboard(s))
Earlier, you posted a comment that I needed to "make sure I connected ground to Vss on the HomeWork Board".
This is between which boards? (the HomeWork Board and????)
Connect Vss on the homework board to Vss (ground rail) on both of your breadboards. "Be as one with ground".
Apparently, there are at least TWO Stampworks books. The one that came with product 27297 and the one you pointed to above. That explains my confusion (well, to the extent my normal state of confusion is explainable). Okay, so I now have a copy of your Experiment #29.
Attached is a short little program that controls a MAX7219 driving a four-digit common cathode seven-segment LED. I think this will be easier for you to get working than the Stampworks 1.2 experiment 29.
Note that I very carefully and deliberately initialize the 7219 by first sending a NOP (to get its interface in sync with me) followed by a command to get it out of lamp test mode in case it came up in lamp test (which it is prone to do regardless of what the data sheet says). I then go on to set intensity, etc etc.
This code suppresses leading zeroes because I was unable to not make it do that.
Remember, DIG is your friend.
' {$STAMP BS2}
' {$PBASIC 2.5}
'***************define the pins that connect to max7219
DIN PIN 0 'Pin 1 on MAX72219
CS PIN 1 'pin 12 on MAX
CLK PIN 2 'pin 13 on MAX
'Define the register names
NOP CON $00 'nop command
Decode CON $09 'decode command
Inten CON $0A 'set intensity
SLimit CON $0B 'scan limit
SDown CON $0C 'shutdown
DTest CON $0F 'display test
MyWord VAR Word 'the 16-bit value for MAX
MaxReg VAR MyWord.HIGHBYTE 'register address (bits 15-8)
MaxVal VAR MyWord.LOWBYTE 'value to write (bits 7-0)
Index VAR Nib 'used to select digit
Numeral VAR Word 'number to display (4 digits)
Blank VAR Bit '0 indicates suppressing leading zeroes
Begin: HIGH CS 'make these outputs
LOW DIN
LOW CLK
MaxReg = NOP 'get it in sync
MaxVal = 0 'this is actually a dont care
GOSUB SetMax 'do it
MaxReg = DTest 'turn off lamp test mode
MaxVal = 0 'off
GOSUB SetMax
MaxReg = Decode 'decode all digits
MaxVal = $0F
GOSUB SetMax
MaxReg = Inten 'set intensity
MaxVal = 4 'sort of medium
GOSUB SetMax
MaxReg = SLimit 'scan limit
MaxVal = 7 'scan all (could be just 0-3)
GOSUB SetMax
MaxReg = SDown 'normal operation
MaxVal = 1
GOSUB SetMax
FOR index = 1 TO 4 'set all to blank
MaxReg = Index
MaxVal = $F
GOSUB SetMax
NEXT
top: FOR Numeral = 0 TO 9999 'all we can display in 4 digits
Blank = 0 'leading zeroes
FOR Index = 4 TO 1 'left to right makes blanking easier
MaxReg = Index 'select digit to display
MaxVal = Numeral DIG (Index -1) 'extract digit from Numeral
IF (MaxVal = 0) AND (Blank = 0) THEN 'leading zero
MaxVal = $F 'blank it
ELSE
Blank = 1 'no more leading zeroes
ENDIF '
GOSUB SetMax 'display one digit
NEXT 'index
PAUSE 100
NEXT 'numeral
GOTO Top
SetMax: 'load Max with one 16-bit register address/ value
LOW CS 'enable max7219
SHIFTOUT DIN, CLK, MSBFIRST, [MyWord \16] 'send the 16 bits
HIGH CS 'load it
RETURN
I used a homework board and put the Max and display on a separate breadboard. Here is a picture of the breadboard with a few items worthy of your attention:
1. It is powered from the homework board. The green wire is ground; the yellow wire is Vdd.
2. Observe the bypass capacitors. The black one is 50 or 100 or uF; the brown one is .1 uf.
3. The three controls come in on a little 3-wire cable to the right edge of the breadboard.
4. Note the pull-up resistor on CS (LOAD). It is 20K or so.
5. A few pins on the MAX or n/c. These are the digit drivers for digits 5-8 (or 4-7 depending on how you count.)
Thank you Tom for working this for me. I'm not sure I'll get to do anything with this today (I'm medically retired with cancer, and I had my Chemo treatment today) but, will tackle this at the least tomorrow morning.
"There ain't nothin' like a course of chemotherapy to make you look and feel your age".
I nursed my wife through cancer some time ago. I have an admiration for anyone who can do elementary arithmetic, much less computer programming while a patient. I just hope you come out Okay; take your time.
I've switched over to the program that Tom posted on the 23rd. All power (for both breadboards) is coming from the 5V breadboard power supply. All Vss is coming from the HomeWork Board's Vss pins.
Sorry for the StampWorks confusion.
The older StampWorks (V1.2) used the MAX7219 for Experiment #29 and a different Experiment Board which had the switches and LEDs built-in.
The switches represent a vending machine counting coins.
In all of the sample programs notice that there is initialization code that sets up the display and update code that changes the display. What your program does after and sends the display is up to you.
Sorry for the StampWorks confusion.
The older StampWorks (V1.2) used the MAX7219 for Experiment #29 and a different Experiment Board which had the switches and LEDs built-in.
The switches represent a vending machine counting coins.
No problems! Using a test program that Tom sent me, I've gotten all 4 digits working. Now, on to actually using the display.
Comments
Experiment #31 (page 173, 183 of the PDF) of StampWorks uses the MC14489 that was mentioned. This is a great reference!!!
https://www.parallax.com/sites/default/files/downloads/27297-StampWorks-Manual-v2.1.pdf
The StampWorks code is here.
https://www.parallax.com/product/27297
https://www.parallax.com/downloads/stampworks-basic-stamp-source-code
This is old but helpful.
This was written in PBASIC 2.0 so you need to add the lines '{$STAMP BS2} and '{$PBASIC 2.0} to the top of the program. The BASICStamp Editor defaults to PBASIC 2.5 so you will get all kinds of errors if you don't add these lines.
The BASIC Stamp manual explains some of this along with other compiler directives.
http://www.rasmicro.com/FTP/MAX7219-21 8-Digit LED Display Driver.pdf
I'm working on drawing the schematic... LOL, I'm not very good with my TurboCad 18, it took me a ton of time to just draw the basic MAX7219 and the (4) 7-segment display... now, drawing the connecting lines is proving to be a bigger challenge
Will either of these work? Or do I need to get another one?
I like to add text schematics to the top of my BS2 programs which can take a while to draw especially when there are ICs.
Based on that voltage your 9V adapter is unregulated and should be fine with your 5V supply.
Do you have a link for the Breadboard supply?
Experiment #29 of the older version of StampWorks (v1.2) used the MAX7219.
http://forums.parallax.com/discussion/download/78297/sw29.pdf
The source code is here at the bottom of the page.
http://web.archive.org/web/20051029025332/http://www.parallax.com/detail.asp?product_id=27297
I talked with the Jameco tech support. They also said the same about the unregulated power supply. But, the power supply also has an "USB" connector that supplies a steady voltage.
This is the power supply I got:
https://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?catalogId=10001&langId=-1&productId=2157853&storeId=10001&krypto=vFgRhKXJZKuM8sLfuPRmxv3tw+Np1UpMVks4N7ZnwCXeom4FXetKIQ==&ddkey=https:StoreCatalogDrillDownView
Which BS2 programs are you talking about? ( You are talking about the Stamp Works Source 2.1 zip file right?)
Thanks,
Randy
AdThanksVance
Of course!.... This photo is an overall view of it, attached to a breadboard
I got this at Jameco. It's part number 2157853. It's only $7.95, fully assembled
I'm using the "Stamp works" experiment #29 as a template. I have most of it basically "wired" .
My current biggest isssue, is that on page 171 (of the PDF file) there's a set of switches connecting
I/O 0-4 to +5. I don't have any of these switches.... is there another option?
If what you are working from calls for switches, I'd think that would be for manual input (say to set a clock). A different option for that specific problem would be to use DEBUGIN and get the time directly from the console.
The switches can be replaced by wires. have wires plugged into P0-P4 and plug them into ground to produce the desired effect. Plugging the into ground is the same as pushing a button in the schematic.
Ohhhhh. I didn't understand this experiment until now. These switches are more important than I first thought... I was confused by the dotted line surrounding the switches, and D0-D4 connected to I/O P0-P4.
Would individual momentary "ON" switches work ok? (as long as I had the 10k resistors for each)
Yes, momentary switches would work just fine. The resistors in the circuit are called "pull-up" resistors. They keep the inputs "high" before the switch is pushed. Pushing the switch brings the input to ground.
But, one idea... I may be having an issue with Vss and Vdd. I have 3 separate "boards". (1) The BASIC Stamp, (2) the breadboard that holds the (4) 7 segment display and (3) the breadboard that holds the 5 switches...
Earlier in this discussion, Tomcrawford said that I needed to make sure I connected ground to Vss on the HomeWork Board. (BTW, the breadboard with the 7-segment displays has the 5V power supply)
If I've not totally confused everyone.... can someone give me an idea how to connect (inter-connect) the Vdd (5V power from the BASIC Stamp HomeWork board and the 5V breadboard power supply on the "Display" breadboard) and the Vss?
Thanks,
Randy
You can take one of two approaches: Don't use (or even connect to the breadboard) your 5V/ 3.3V external supply. Rather, take power from your homework board. Connect Vdd to the +5 rail on the breadboard.
OR: If you really want to have separate supplies, do NOT connect them together. Try to arrange things so that the two supplies power up at more or less simultaneously.
Of course, you will have to program the MAX7219, right?
Edit: However you arrange the power, you still need to connect grounds together (vss on homework board and ground rail on the breadboard(s))
Earlier, you posted a comment that I needed to "make sure I connected ground to Vss on the HomeWork Board".
This is between which boards? (the HomeWork Board and????)
Yes. I've duplicated experiment #29 of the StampWorks.
http://web.archive.org/web/20051029042915/http://parallax.com/html_pages/downloads/sw/sw.asp
(go to "StampWorks Experiment #29: Advanced Seven-Segment Multiplexing")
Apparently, there are at least TWO Stampworks books. The one that came with product 27297 and the one you pointed to above. That explains my confusion (well, to the extent my normal state of confusion is explainable). Okay, so I now have a copy of your Experiment #29.
Note that I very carefully and deliberately initialize the 7219 by first sending a NOP (to get its interface in sync with me) followed by a command to get it out of lamp test mode in case it came up in lamp test (which it is prone to do regardless of what the data sheet says). I then go on to set intensity, etc etc.
This code suppresses leading zeroes because I was unable to not make it do that.
Remember, DIG is your friend.
I used a homework board and put the Max and display on a separate breadboard. Here is a picture of the breadboard with a few items worthy of your attention:
1. It is powered from the homework board. The green wire is ground; the yellow wire is Vdd.
2. Observe the bypass capacitors. The black one is 50 or 100 or uF; the brown one is .1 uf.
3. The three controls come in on a little 3-wire cable to the right edge of the breadboard.
4. Note the pull-up resistor on CS (LOAD). It is 20K or so.
5. A few pins on the MAX or n/c. These are the digit drivers for digits 5-8 (or 4-7 depending on how you count.)
RT
I nursed my wife through cancer some time ago. I have an admiration for anyone who can do elementary arithmetic, much less computer programming while a patient. I just hope you come out Okay; take your time.
My woodworking workshop and now re-visiting electronics is what keeps me going
Randy
Sorry for the StampWorks confusion.
The older StampWorks (V1.2) used the MAX7219 for Experiment #29 and a different Experiment Board which had the switches and LEDs built-in.
The switches represent a vending machine counting coins.
In all of the sample programs notice that there is initialization code that sets up the display and update code that changes the display. What your program does after and sends the display is up to you.
No problems! Using a test program that Tom sent me, I've gotten all 4 digits working. Now, on to actually using the display.
RT
Here's what I think needs to be done (I'm not looking for the "exact answer", but the method of the madness of writing Stamp code).
1. Modify the variable lines (penny VAR deposit.BIT0) to read something like "penny VAR Bit"? (the deposit.BIT0 is code for version 1.2 right?
2. Modify the "Get_Coins" selection to read (5) I/O pins (P4 for penny, P3 for nickle etc)
3. Add a "1" to each coin variable, so that it can be used in the statement "money = money + (penny *1)
With all that said, I have a few questions.
Q1. The "penny VAR deposit.BIT0" is code for version 1.2 right?
Q2. What version is the statement "Main:" or "Get_Coins:"
Thanks guys,
Randy