CS 1020 - Winter 2013 - Class 2

  • Quiz 1

  • Current Sciborgs
       - Time how long to run basic course
       - Talk about design choices:
          - gear ratios chosen
          - issues/problems
          - other design improvements people found

  • Handy Logo
       - How many people of heard of (or used) Logo before?
          - Logo is a programming language created in 1967 (http://en.wikipedia.org/wiki/Logo_(programming_language))
          - Designed for educational use
          - Most commonly known feature is the turtle which takes instructions and draws on the screen
       - Logo variations
          - many variations of Logo since then
          - Matt Dickerson teaches CS190 in NetLogo and uses it for his research for creating biological simulations
       - Handy Logo is a Logo variant designed/adapted specifically for the Handy Boards

  • Handy Logo interpreter
       - We can write programs and download them to the Handy boards like you did on Monday
       - However, we can also just execute commands one at a time using the same HandyLogo.jar application
          - make sure that your Handy board is connected otherwise it won't work!

       - Some simple commands:
          - beep
             - makes a beep
       
          - beep beep
             - makes two beeps
             - in Logo, you can chain multiple commands together in a sequence
          - beep beep beep

          - wait 5
             - for 5/10ths of a second, which by itself is pretty boring

          - wait 10 beep beep wait 10 beep
             - waits for a second and beeps twice, waits for another second and beeps once
             - again, notice that we can chain any single command together with any other command

          - print "banana
             - displays 'banana' on the LCD screen
             - only works for single words
             - only include starting quotes (but not ending quotes)
          
          - print [banana cream pie]
             - displays 'banana cream pie' on the LCD screen
          
          - print 5
             - displays '5' on the LCD screen

          - print 3 + 4
             - displays '7' on the LCD screen

  • The motors
       - referred to as a - d from top to bottom (or left to right)
       - you "select" a motor with the motor letter followed by a comma
          - a,
          - b,
       - you can select more than one motor if you want
          - ab,
          - abcd,
       - many commands to do for a motor:
          - on
             - turn it on
          - off
             - turn it off
          - toggle
             - swap on/off
          - onfor <tenths>
             - onfor 10
                - turn motor on for 10/10ths = 1 second
       - other example commands
          - a, on thisway
             - turn a on forward
          - b, on thatway
             - turn a on backwards
          - a, rd
             - reverse direction

  • procedures
       - what do you think of when I say "procedure"?
          - a procedure is a set of instructions/commands
       - procedures allow us to execute multiple commands by just calling a single command
       - we define a new procedure as follows:

          to <procedure_name>
             <command>
             <command>
             ...
          end

          - "to" and "end" are keywords and will always be there indicating the beginning and end
          - <procedure_name> is any name you want that will define what the new procedure is called
          - <command> are the statements that will execute
       - for example

          to double-beep
             beep
             wait 10
             beep
          end

       - we can write this in a file and then "load" this file like you've been loading our other programs
       - we can now execute this command just like any of the other commands
          - double-beep
             - beeps twice :)
       
  • look at simple_procedures.txt code
       - 6 different functions
       - what do they do?
       - what is that "stuff" at the top?
          - comments
             - comments are a way to communicate to other people (i.e. not code) what's going on
             - they're not run when the program runs
             - use them!
             - anything following a semi-colon is ignored either at the beginning of a line or later on

  • look at making_decisions.txt code
       - what do these functions do?
       - *how* do these functions work/what can you tell me?

  • sensors
       - we can ask questions about the different sensors
       - digital sensors
          - ask on/off, yes/no questions referenced by their number
             - switch 7
                - is switch 7 on?
             - switch 9
                - is switch 9 on?
          - the number corresponds to the number on the board
       - analog sensors
          - check ranges greater than (>) and less than (<)
             - (sensor 0) < 100
                - is sensor 0 less than 100?
             - (sensor 1) > 30
                - is sensor 1 greater than 30?

  • waituntil
       - stop executing code *until* that action happens
       - action is put inside square braces []
       - if it's a sensor, don't forget to put it in parenthesis as well!

  • boolean operators
       - and
          - are both of these conditions true
       - or
          - are one of these conditions true

  • if/ifelse
       - if a condition is true, execute some statements
          - the condition is put in parenthesis and
          - the statements are enclosed in square braces
          - if (switch 7)[
             beep
             wait 10
             beep
          ]
       - ifelse
          - adds an additional set of statements to be execute if the statement is NOT true
          - enclosed in a second set of square braces

  • menus
       - we can define up to 7 menu items that we can scroll through by using the "menu" command
       - these allow you to execute procedures using the "start" button and the scroll wheel
       
  • look at the top of menus_and_loops.txt code
       - we've defined three menu items
       - when we "load" the code onto the Handy board, we see these three procedures define and can run any of them
       - what do the first two procedures do?

  • look at the last function of menus_and_loops.txt code
       - what do you think it does?
          - it has a few new things
       - loop
          - keep executing the enclosed statements over, and over, and over, and over, and over, ...
       - variables
          - variables allow us to save values over time and in between procedure calls
          - defining a variable:
             - global [laston]
                - defines a new variable called "laston" that we can use later on
          - setting a variable: prepend with "set"
             - setlaston 1
                - set the variable "laston" to have the value 1
          - using the variable value
             - like sensors we can use <, > and also = to ask questions about a variable

  • now that we know what we're doing, let's look at some of the procedures you used last class

  • look at simple code (from day1)
       - a few things we'll talk about more next time...
       - one thing to note, we can redefine motors to make our code more usable
          
          to left-wheel
             a,
          end

          - Use these! They'll make your code more readable

       - also rewritten questions about front and back bumper
          - we'll talk more about why these work next time...
          - for now, use them :)
       - playing a note
          - note frequency time

  • look at sciborg code (from day1)