Shop OBEX P1 Docs P2 Docs Learn Events
Quick Question for QuickStart — Parallax Forums

Quick Question for QuickStart

Buck RogersBuck Rogers Posts: 2,185
edited 2013-11-30 15:18 in Propeller 1
Hello!
I just bought this critter today http://www.parallax.com/product/40000 from a RS in Forest Hills Queens of all places. And I have one specific question: According to the QS Pin Finder, P0 is top left when the thing is properly aligned, and ground is bottom left. Also the Vin point is bottom right. And theoretically when connected to the USB point, it should be producing the same voltage.

Is all of that correct?

Please note that I'll probably be ordering the thing, a QS Pin Finder, http://www.parallax.com/product/721-00017 and probably the prototyper board http://www.parallax.com/product/40010 sometime during the following week anyway. (if needed)


Comments

  • cavelambcavelamb Posts: 720
    edited 2013-11-29 19:25
    Welcome to the show, Buck.
    The Proto Board is handy, as are pin labels.
    But you can make them yourself if you want.
    DSCF5701a.JPG

    For pin labels, and lots of other labels,
    crank up the ol' CAD program and draw up stickers.
    Spacing is .1". Can even draw a cutting outline!

    Print on 2" x 4" shipping labels (like Avery #48863)
    Peal off the label before cutting it apart.

    Handy for things that you can't buy easily like
    chip pin outs, connectors, switches, LEDs...

    Another trick that I've been using often is to
    solder a female header to the bottom of the
    QuickStart board. That lets it be plugged in
    to a pin header from above. (see above)
    Handy arrangement sometimes...
    640 x 480 - 88K
  • Buck RogersBuck Rogers Posts: 2,185
    edited 2013-11-29 19:52
    cavelamb wrote: »
    Welcome to the show, Buck.
    The Proto Board is handy, as are pin labels.
    But you can make them yourself if you want.
    DSCF5701a.JPG

    For pin labels, and lots of other labels,
    crank up the ol' CAD program and draw up stickers.
    Spacing is .1". Can even draw a cutting outline!

    Print on 2" x 4" shipping labels (like Avery #48863)
    Peal off the label before cutting it apart.

    Handy for things that you can't buy easily like
    chip pin outs, connectors, switches, LEDs...

    Another trick that I've been using often is to
    solder a female header to the bottom of the
    QuickStart board. That lets it be plugged in
    to a pin header from above. (see above)
    Handy arrangement sometimes...


    Hello!
    But am I right regarding my multi-part question? Now the label idea, and your idea to install a matching female header to the bottom of the board is a good one. I might even work out how to do the labels. Do you have a template to share regarding your label printing idea?

    Incidentally is that LCD display this model? #27977. I have one here. Both were part of the diminishing Retail lists from RS.......
  • cavelambcavelamb Posts: 720
    edited 2013-11-29 20:56
    Yes, I believe that's the same LCD module.
    Two line serial thing?
    http://www.instructables.com/id/Liquid-Crystal-Display-for-the-QuickStart-board/
    and another one with back light time out (used another cog for that.
    It was for the ASC board, but works fine n the Quick too)
    http://www.instructables.com/id/A-custom-shield-for-the-Propeller-ASC-Infra-Red-/

    As for the labels, no, I don't have any templates that might help.
    I use Design Cad (mostly V2000), and that probably won't help.
    But we can try a PNG file - if you can find a way to print the outer
    frame 2.0" by 4.0 inches, This is one label from the Avery sheet.
    Might be worth a try?
    LabelsQS1.jpg

    Would you let me know if you can pull this off?
    1024 x 512 - 57K
  • Buck RogersBuck Rogers Posts: 2,185
    edited 2013-11-29 21:08
    cavelamb wrote: »
    Yes, I believe that's the same LCD module.
    Two line serial thing?
    http://www.instructables.com/id/Liquid-Crystal-Display-for-the-QuickStart-board/
    and another one with back light time out (used another cog for that.
    It was for the ASC board, but works fine n the Quick too)
    http://www.instructables.com/id/A-custom-shield-for-the-Propeller-ASC-Infra-Red-/

    As for the labels, no, I don't have any templates that might help.
    I use Design Cad (mostly V2000), and that probably won't help.
    But we can try a PNG file - if you can find a way to print the outer
    frame 2.0" by 4.0 inches, This is one label from the Avery sheet.
    Might be worth a try?
    LabelsQS1.jpg

    Would you let me know if you can pull this off?

    Hello!
    I'd be delighted! Just watch this space. I see you're fond of Instructables. While I don't mind them, I do mind the fact that they have a bad habit of changing downloadable files when downloaded to a randomly chosen contrived series of characters instead.

    And my last visit there was some three or more years ago.... They went and changed the rules regarding Pro membership....... And PDF versions of the selected projects.
  • cavelambcavelamb Posts: 720
    edited 2013-11-29 21:25
    The files I have used are straight from the OBEX...

    IR_Remote_NewCog.spin
    Original code by Tom Doyle 2 March 2007


    Parallax Serial LCD Driver
    (C) 2006 Parallax, Inc.


    Simple_Numbers
    (c) 2006 Parallax, Inc.

    and my own robot control stuff.and timeout code..
    {{ Qbot_LCD_IR_TimeOut3.spin
       Richard Lamb (cavelamb) 28 Sept 2013
       Test program for Qbot construction
       IR remote using Sony TV protocall 
       2 line LCD display - with backlight timeout
    }}
    
    CON
      _CLKMODE = XTAL1 + PLL16X        ' 80 Mhz clock
      _XINFREQ = 5_000_000
      IRpin         = 15                ' IR Receiver - Propeller Pin
      LCDPin        = 14                ' 
      LcdOn1        = $16               ' LCD on; cursor off, blink off
      LcdLine0      = $80               ' move to line 1, column 0
      LcdLine1      = $94               ' move to line 2, column 0
      LcdTimeOut    = 6
    
    OBJ
      ir      : "IRC"
      lcd     : "serial_lcd"
      num     : "simple_numbers"
       
    VAR
      byte IRcode                        ' keycode from IR Receiver here
      byte LCDtime, LED
      long IRcog
      long Stack1[6]                     ' Stack space for LCDtimeout cog
      byte X, Power, Channel, Volume
      LONG MS001   
    PUB Init | freq, index, cog, lcode
      outa[ 16..23 ] := $00         ' all LED pins off    '
      dira[ 16..23 ] := $FF         ' all LED pins outputs   '
    
    'init LCD
      if lcd.start(LCDpin, 9600, 2)
        lcd.putc(lcd#LcdOn1)              ' no cursor
        lcd.cls
        lcd.backlight(1)
    
        lcd.str(string(LcdLine0, "IR Remote Demo"))
    
    
    'Start Timeout
      LCDTime := LCDTimeout              ' reset timeout each time a key is pressed
      cognew (TimeOut, @stack1 )
    
    'Init IR remote
      IRcog := ir.Start(IRpin, @IRcode)  ' Pin of IR receiver, address of variable
    
      if IRcog > 0
          repeat
    
            If LCDtime >0
               LCD.backlight(1)          ' turn it on        
            else                         ' timed out
               LCD.backlight(0)          ' turn if off
               
            If IRcode <> ir#NoNewCode    ' we have a key code
               lcode := IRcode
               ir.Start(IRpin, @IRcode)  ' set up for next code
    
               if LCDtime := 0           ' if it was off, 
                  LCD.backlight(1)       '    turn it back on
               LCDTime := LCDTimeout      ' reset timeout each time a key is pressed            
               lcd.gotoxy(0,1)
                          
               case lcode
                  ir#one   :
                    lcd.str(string("<1>   "))
                    LED := 1
                    LedOn(LED)
                    
                  ir#two   :
                    lcd.str(string("<2>   "))
                    LED := 2
                    LedOn(LED)
                    
                  ir#three :
                    lcd.str(string("<3>   "))
                    LED := 3
                    LedOn(LED)
                    
                  ir#four  :
                    lcd.str(string("<4>   "))
                    LED := 4
                    LedOn(LED)
                    
                  ir#five  :
                    lcd.str(string("<5>   "))
                    LED := 3
                    LedOn(LED)
    
                  ir#six   :
                    lcd.str(string("<6>   "))
                    LED := 6
                    LedOn(LED)
    
                  ir#seven :
                    lcd.str(string("<7>   "))
                    LED := 7
                    LedOn(LED)
    
                  ir#eight :
                    lcd.str(string("<8>   "))
                    LED := 8
                    LedOn(LED)
    
                  ir#nine  :
                    lcd.str(string("<9>   "))
                    LED := 9
                    LedOn(LED)
    
                  ir#zero  :
                    lcd.str(string("<0>   "))
                    LED := 0
                    LedOn(LED)
    
                  ir#chUp  :
                    LCD.gotoxy(0, 0)   ' col, line
                    lcd.str(string("chUp  "))
                    if LED < 7
                       LED++
                    ELSE
                       led := 0   
                    LedOn(LED)
                    LCD.gotoxy(0, 1)   ' col, line
                    lcd.str(num.dec(LED))
                                       
                  ir#chDn  :
                    LCD.gotoxy(0, 0)   ' col, line  
                    lcd.str(string("chDn  "))
                    if LED >0
                       LED--
                    ELSE
                       led := 7   
                    LedOn(LED)
                    LCD.gotoxy(0, 1)   ' col, line  
                    lcd.str(num.dec(LED))                
    
                  ir#volUp :
                    lcd.str(string("volUp "))
                    if Volume < 7
                       Volume++
                    ELSE
                       Volume := 0
                    lcd.str(num.dec(Volume))      
                    LedOn(LED)
                                    
                  ir#volDn :
                    lcd.str(string("volDn "))
    
                    if Volume > 0
                      Volume--
                    ELSE
                      Volume := 7
                    lcd.str(num.dec(Volume))      
                    LedOn(LED)
                    
                  ir#mute    :
                    lcd.str(string("ok    "))              
    
                  ir#power :
                    lcd.str(string("power "))
                    
                  ir#last  :
                    lcd.str(string("last  "))
    
                  other    :
                    lcd.str(string("      "))
                                     
            waitcnt((clkfreq / 1000) * 30 + cnt) 
    
    
    PRI LEDON(n)
      outa [16..23] := 0
      outa [16+n]:= 1
    
    PRI LEDOFF(n)
       outa [16..32] := 0
       
    PUB WaitMS(W)                      'wait for W milliseconds
      W := W * MS001                
      WaitCNT (W+cnt)
      
    PUB Timeout
      Repeat                            ' loop forever
          waitcnt(clkfreq + cnt)        ' wait one second
    
         if  byte[@LCDtime] =>   1      ' keep counting        
             byte[@LCDtime] --          ' down       
    

    BTW, Spin is an indented language and must be surrounded by code tags.
    I can never remember the syntax, so I just click on the QUOTE button and edit QUOTE to CODE.
    Makes life a lot simpler.

    (But.. SINCE Spin is an indented language, you might wonder why the is no CODE button)
    (beats me!)


    (edit)

    I thought I'd throw in this too, since you are new here...
    I-O-Map.jpg

    I've tried hard to leave the QuickStart IO parts alone.
    They can be used for other things- if you are careful.
    But I didn't want to mess up using them as they are.

    Have fun!
    1024 x 649 - 143K
  • Buck RogersBuck Rogers Posts: 2,185
    edited 2013-11-29 23:17
    cavelamb wrote: »
    The files I have used are straight from the OBEX...

    IR_Remote_NewCog.spin
    Original code by Tom Doyle 2 March 2007


    Parallax Serial LCD Driver
    (C) 2006 Parallax, Inc.


    Simple_Numbers
    (c) 2006 Parallax, Inc.

    and my own robot control stuff.and timeout code..
    {{ Qbot_LCD_IR_TimeOut3.spin
       Richard Lamb (cavelamb) 28 Sept 2013
       Test program for Qbot construction
       IR remote using Sony TV protocall 
       2 line LCD display - with backlight timeout
    }}
    
    CON
      _CLKMODE = XTAL1 + PLL16X        ' 80 Mhz clock
      _XINFREQ = 5_000_000
      IRpin         = 15                ' IR Receiver - Propeller Pin
      LCDPin        = 14                ' 
      LcdOn1        = $16               ' LCD on; cursor off, blink off
      LcdLine0      = $80               ' move to line 1, column 0
      LcdLine1      = $94               ' move to line 2, column 0
      LcdTimeOut    = 6
    
    OBJ
      ir      : "IRC"
      lcd     : "serial_lcd"
      num     : "simple_numbers"
       
    VAR
      byte IRcode                        ' keycode from IR Receiver here
      byte LCDtime, LED
      long IRcog
      long Stack1[6]                     ' Stack space for LCDtimeout cog
      byte X, Power, Channel, Volume
      LONG MS001   
    PUB Init | freq, index, cog, lcode
      outa[ 16..23 ] := $00         ' all LED pins off    '
      dira[ 16..23 ] := $FF         ' all LED pins outputs   '
    
    'init LCD
      if lcd.start(LCDpin, 9600, 2)
        lcd.putc(lcd#LcdOn1)              ' no cursor
        lcd.cls
        lcd.backlight(1)
    
        lcd.str(string(LcdLine0, "IR Remote Demo"))
    
    
    'Start Timeout
      LCDTime := LCDTimeout              ' reset timeout each time a key is pressed
      cognew (TimeOut, @stack1 )
    
    'Init IR remote
      IRcog := ir.Start(IRpin, @IRcode)  ' Pin of IR receiver, address of variable
    
      if IRcog > 0
          repeat
    
            If LCDtime >0
               LCD.backlight(1)          ' turn it on        
            else                         ' timed out
               LCD.backlight(0)          ' turn if off
               
            If IRcode <> ir#NoNewCode    ' we have a key code
               lcode := IRcode
               ir.Start(IRpin, @IRcode)  ' set up for next code
    
               if LCDtime := 0           ' if it was off, 
                  LCD.backlight(1)       '    turn it back on
               LCDTime := LCDTimeout      ' reset timeout each time a key is pressed            
               lcd.gotoxy(0,1)
                          
               case lcode
                  ir#one   :
                    lcd.str(string("<1>   "))
                    LED := 1
                    LedOn(LED)
                    
                  ir#two   :
                    lcd.str(string("<2>   "))
                    LED := 2
                    LedOn(LED)
                    
                  ir#three :
                    lcd.str(string("<3>   "))
                    LED := 3
                    LedOn(LED)
                    
                  ir#four  :
                    lcd.str(string("<4>   "))
                    LED := 4
                    LedOn(LED)
                    
                  ir#five  :
                    lcd.str(string("<5>   "))
                    LED := 3
                    LedOn(LED)
    
                  ir#six   :
                    lcd.str(string("<6>   "))
                    LED := 6
                    LedOn(LED)
    
                  ir#seven :
                    lcd.str(string("<7>   "))
                    LED := 7
                    LedOn(LED)
    
                  ir#eight :
                    lcd.str(string("<8>   "))
                    LED := 8
                    LedOn(LED)
    
                  ir#nine  :
                    lcd.str(string("<9>   "))
                    LED := 9
                    LedOn(LED)
    
                  ir#zero  :
                    lcd.str(string("<0>   "))
                    LED := 0
                    LedOn(LED)
    
                  ir#chUp  :
                    LCD.gotoxy(0, 0)   ' col, line
                    lcd.str(string("chUp  "))
                    if LED < 7
                       LED++
                    ELSE
                       led := 0   
                    LedOn(LED)
                    LCD.gotoxy(0, 1)   ' col, line
                    lcd.str(num.dec(LED))
                                       
                  ir#chDn  :
                    LCD.gotoxy(0, 0)   ' col, line  
                    lcd.str(string("chDn  "))
                    if LED >0
                       LED--
                    ELSE
                       led := 7   
                    LedOn(LED)
                    LCD.gotoxy(0, 1)   ' col, line  
                    lcd.str(num.dec(LED))                
    
                  ir#volUp :
                    lcd.str(string("volUp "))
                    if Volume < 7
                       Volume++
                    ELSE
                       Volume := 0
                    lcd.str(num.dec(Volume))      
                    LedOn(LED)
                                    
                  ir#volDn :
                    lcd.str(string("volDn "))
    
                    if Volume > 0
                      Volume--
                    ELSE
                      Volume := 7
                    lcd.str(num.dec(Volume))      
                    LedOn(LED)
                    
                  ir#mute    :
                    lcd.str(string("ok    "))              
    
                  ir#power :
                    lcd.str(string("power "))
                    
                  ir#last  :
                    lcd.str(string("last  "))
    
                  other    :
                    lcd.str(string("      "))
                                     
            waitcnt((clkfreq / 1000) * 30 + cnt) 
    
    
    PRI LEDON(n)
      outa [16..23] := 0
      outa [16+n]:= 1
    
    PRI LEDOFF(n)
       outa [16..32] := 0
       
    PUB WaitMS(W)                      'wait for W milliseconds
      W := W * MS001                
      WaitCNT (W+cnt)
      
    PUB Timeout
      Repeat                            ' loop forever
          waitcnt(clkfreq + cnt)        ' wait one second
    
         if  byte[@LCDtime] =>   1      ' keep counting        
             byte[@LCDtime] --          ' down       
    

    BTW, Spin is an indented language and must be surrounded by code tags.
    I can never remember the syntax, so I just click on the QUOTE button and edit QUOTE to CODE.
    Makes life a lot simpler.

    (But.. SINCE Spin is an indented language, you might wonder why the is no CODE button)
    (beats me!)


    (edit)

    I thought I'd throw in this too, since you are new here...
    I-O-Map.jpg

    I've tried hard to leave the QuickStart IO parts alone.
    They can be used for other things- if you are careful.
    But I didn't want to mess up using them as they are.

    Have fun!

    Hello!
    I usually do. Incidentally I'm only new to the Prop. I've been largely a Stamp user for a while. Recently obtained the Quickie, its a stand-in for the actual one I had a while back. Blasted thing departed and took with it all of the Parallax stuff I had here......

    But enough of that. Check the toolbar next time, besides the quote tags, there are also ones for code.
  • cavelambcavelamb Posts: 720
    edited 2013-11-30 04:11
    Not always!
    reply.jpg
    1024 x 299 - 25K
  • PublisonPublison Posts: 12,366
    edited 2013-11-30 04:44
    cavelamb wrote: »
    Not always!
    reply.jpg

    It's in the "advanced" editor. (Go Advanced)
  • cavelambcavelamb Posts: 720
    edited 2013-11-30 10:15
    Thanks Publison, yes I know it's under advanced.
    I was just offering a small tip for posting code in the basic editor.

    And...
    SINCE Spin is an indented language, and posted code simply
    MUST be surrounded by code tags, perhaps there ought to be
    a code button on the basic editor?

    Just saying...
  • jazzedjazzed Posts: 11,803
    edited 2013-11-30 10:39
    cavelamb wrote: »
    Thanks Publison, yes I know it's under advanced.
    I was just offering a small tip for posting code in the basic editor.

    And...
    SINCE Spin is an indented language, and posted code simply
    MUST be surrounded by code tags, perhaps there ought to be
    a code button on the basic editor?

    Just saying...
    +1

    Couldn't agree more! Suggestion to Parallax :)

    Of course people could still enjoy throwing around that paper clip thingy ....
  • PublisonPublison Posts: 12,366
    edited 2013-11-30 10:54
    jazzed wrote: »
    +1

    Couldn't agree more! Suggestion to Parallax :)

    Of course people could still enjoy throwing around that paper clip thingy ....

    +2

    I'll ask Chris if it could be included in the Basic Editor.

    No promises.

    Jim
  • Buck RogersBuck Rogers Posts: 2,185
    edited 2013-11-30 15:18
    Publison wrote: »
    +2

    I'll ask Chris if it could be included in the Basic Editor.

    No promises.

    Jim

    Hello!
    Do you folks remember that scene in "My Fair Lady" where after several days of going round and round a difficult saying, that was supposed to teach the proper methods of speaking, the lady finally gets it? Our hero finally shouts "By George she's got it!". Well that's how I feel. I went and snapped up a close look at the wrap around thing that tells us what pins do what, and made sure my connections were properly made. And then sent off this code:
    CON
      _clkmode = xtal1 + pll16x
      _xinfreq = 5_000_000
    
    
      TX_PIN        = 0
      BAUD          = 19_200
    
    
                         
    OBJ
    
    
      LCD           : "FullDuplexSerial.spin"
    
    
    
    
    PUB Main
    
    
      LCD.start(TX_PIN, TX_PIN, 00, 19_200)
      waitcnt(clkfreq / 100 + cnt)                ' Pause for FullDuplexSerial.spin to initialize
      LCD.str(string("Hello, this text will wrap."))
    
    

    and it worked.

    And as Han Solo was rumored to have said once, "I'm still so smart I amaze even myself.".

    By the way Jim, don't turn around, your infernal machine has managed to escape.......
Sign In or Register to comment.