Shop OBEX P1 Docs P2 Docs Learn Events
My first try at Scribbler2 code outside the GUI — Parallax Forums

My first try at Scribbler2 code outside the GUI

ratronicratronic Posts: 1,451
edited 2010-12-03 13:07 in Robotics
Even though I don't have the Scribbler2 yet (have one on pre-order), I was playing with the S2 object. This is a very crude attempt at using the s2 object and I am only using the S2's fault sensors, wheel motors and obstacle detector for an ir receiver, it compiles ok - maybe Phil could comment on this?
Con
  _clkmode = xtal1 + pll16x       
  _xinfreq = 5_000_000   
  speed = 100
 
Var
  long FMStack[50] 
  byte irc, self
 
Obj
  ir : "irtest"  
  s2 : "s2"
 
Pub main 
  ir.start(23, @irc)
  s2.start
  s2.start_motors
  self := cogid  
  cognew(FaultMonitor, @FMStack)
 
  repeat                                                                                                                                      
 
    if irc == 51                         'left 
      s2.wheels_now(speed - 100, speed, 1)                                    
 
    if irc == 52                         'right 
      s2.wheels_now(speed, speed -100, 1)                                   
 
    if irc == 116                        'foward       
      s2.wheels_now(speed, speed, 1)                            
 
    if irc == 117                        'reverse       
      s2.wheels_now(-speed, -speed, 1)                               
 
    if irc == 255                        'stop 
      s2.stop_now                                    
 
PUB FaultMonitor : value                                                                                                                                     
 
  value := $ffff                                                     
  waitcnt(cnt + 80_000_000)                                          
  repeat                                                             
    value <#= s2.get_adc_results(s2#ADC_VBAT)                        
    if value > constant((700*2550)/(400*33))      '7.0V              
      s2.set_led(s2#POWER,s2#BLUE)                                   
    elseif value > constant((600*2550)/(400*33))  '6.0V              
      s2.set_led(s2#POWER,$20)                                       
    else                                                             
      s2.set_led(s2#POWER,s2#BLINK_BLUE)                             
    if s2.get_adc_results(s2#ADC_IMOT) > 210                         
      cogstop(Self)                                                  
      s2.stop_now                                                    
      s2.set_leds(s2#BLINK_RED,s2#BLINK_RED,s2#BLINK_RED,s2#OFF)     
      repeat

Comments

  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2010-12-03 12:40
    'Should work. Do this, though:
    ir.start([b]s2#OBS_RX[/b], @irc)
    
    You were citing the wrong pin; plus, using the constant provided is better coding style.

    -Phil
  • ratronicratronic Posts: 1,451
    edited 2010-12-03 13:07
    Thanks for that Phil
Sign In or Register to comment.