Arduino Programming II

Arduino  Programming  II   ¡  Create  a  program  for  the  Mudduino  that:   1.  Prints  to  the  serial  monitor  “Enter  a  Number”   2.  Recei...
Author: Estella McBride
3 downloads 0 Views 4MB Size
Arduino  Programming  II  

¡ 

Create  a  program  for  the  Mudduino  that:   1.  Prints  to  the  serial  monitor  “Enter  a  Number”   2.  Receives  a  number  X  from  the  user  via  serial  monitor     3.  Compares  the  number  with  a  preset  list  of  5  integers  

     [  3    8    4    9    1]   4.  Prints  to  the  serial  monitor  “Match  with  X”  if  the   number  is  found  in  the  list.   5.  Else  it  prints  “No  Match  with  X”    

 

 Repeat  this  …  

¡  Goal   ¡  Review   ¡  Variables  &  Data  Types   ¡  Inputs  &  Outputs   ¡  Functions   ¡  Conditionals   ¡  Loops  

¡  In  our  case…  

Upload   Program   ¡ 

Source   ¡  Our  desktop  PC   ¡  We  will  “verify”  the   computer  program  

¡ 

Target   ¡  The  Arduino  Board   ¡  We  will  “run”  the   computer  program  

¡  In  our  Arduino,  there  are  two  main  

“functions”  

void setup() { }    void loop() { }

FIRST,  this  function   runs  ONCE.  

THEN,  this  function   runs  REPEATEDLY.  

¡  Lets  kick  start  our  solution  to  today’s  problem     void setup() { Serial.begin(9600); }    void loop() { Serial.println(“Enter a Number”); }

¡  Goal   ¡  Review   ¡  Variables  &  Data  Types   ¡  Inputs  &  Outputs   ¡  Functions   ¡  Conditionals   ¡  Loops  

¡ 

Declaring  and  Using  Variables   §  Often,  we  like  to  store  and  manipulate  variables,  e.g.   void setup() { int x; int y; x = 4; y = x + 10; }

This  is  a  variable   declaration  of  type   int  

¡  Variable  Types   §  Variables  are  first  declared  to  be  of  some  type.  

  Global  variables  are  declared  outside  of  all   functions,  and  are  accessible  by  all  functions   Local  variables  are  declared  inside  of  a  function,   and  is  only  accessible  within  that  function  

¡  Type  Example   int y; void setup() { int x; x = 4; }

A  Global  variable   being  declared   A  Local  variable   being  declared  

¡  Variable  Initialization   §  Before  they  can  be  used,  all  variables  must  be  

“initialized”,  i.e.  set  to  an  initial  value.   int y; void setup() { int x; y = x; }  

Oh  no!  

¡  Variable  Initialization   §  Before  they  can  be  used,  all  variables  must  be  

“initialized”,  i.e.  set  to  an  initial  value.   int y; void setup() { int x; x = 1; y = x; }  

Yes!  

¡  Declaring  Data  Types   §  A  programmer  can  declare  variables  to  be  one  of  

many  data  types  (not  just  int’s).  

§  The  data  type  determines   ▪  The  type  of  data  represented   ▪  The  range  of  data  

¡ 

Arrays    

§  A  data  type  used  to  store  lists  of  numbers.  

¡ 

We  often  have  lists   §  §  §  § 

Phone  numbers   Student  ID  numbers   Range  measurements  from  multiple  sensors   …  

§  Arrays  are  very  powerful  when  combined  with  looping  

functions  (more  on  this  later)  

¡  Example  of  a  array  declaration  which  creates  

space  for  a  list  of  10  integers  

int listOfInts[10]; ¡  Example  of  retrieving  the  value  of  the  4th  list  

member  

anotherInt = listOfInts[3];

¡  Example  of  setting  the  values  for  the  3rd    list  

member  

listOfInts[2] = 201; ¡  Example  of  setting  the  values  for  the  entire  

list  

int listOfInts[5] = {1, 5, 3, 2, 2};

¡  Lets  create  a  global  variable  integer  list  to  

help  solve  our  lecture  problem   int listOfInts[5] = {3, 8, 4, 9, 1}; int response;

void setup() { Serial.begin(9600); } void loop() { Serial.println(“Enter a Number”); }

¡  Goal   ¡  Review   ¡  Variables  &  Data  Types   ¡  Inputs  &  Outputs   ¡  Functions   ¡  Conditionals   ¡  Loops  

¡  Console  inputs/outputs   §  Output  commands:   Serial.print(“Hello Me”); Serial.println(“Hello You”);

§  Input  command:  

       

 Serial.read();    

¡ 

Example   int incomingByte = 0; void setup() { Serial.begin(9600); Serial.println(“Enter a value: “); } void loop() { if (Serial.available() > 0) { incomingByte = Serial.read(); Serial.print("I received: "); Serial.println(incomingByte, DEC); } }

¡  ASCII

¡  Physical  inputs/outputs   §  In  setup(),  you  must  tell  the  board  how  to  use  a  

physical  pin    

pinMode(pin, mode);

  §  The  pin  refers  to  the  address  of  the  physical  pin   §  The  mode  can  be  set  to  be  either  INPUT  or   OUTPUT

¡ 

Physical  inputs/outputs   §  For  a  pin  set  to  INPUT  mode,  you  can  obtain  data  

from  the  pin  with  

digitalRead(pin)

  §  For  a  pin  set  to  OUTPUT  mode,  you  can  send  data  to   the  pin  with   digitalWrite(pin, value)

  §  The  value  can  be  set  to  be  either  or  HIGH or  LOW

¡ 

Physical  inputs/outputs   void setup() { Serial.begin(9600); pinMode(13, OUTPUT); } void loop() { Serial.println("Testing LED"); digitalWrite(13, HIGH); delay(200); digitalWrite(13, LOW); delay(200); }

¡  Goal   ¡  Review   ¡  Variables  &  Data  Types   ¡  Inputs  &  Outputs   ¡  Functions   ¡  Conditionals   ¡  Loops  

¡  Many  functions  are  pre-­‐written  and  provided  

in  programming  language  library.  E.g.    

Serial.println(“Hello World”);

¡  Many  functions  are  written  by  programmers  

like  you  

   

s = getChrisClarksShoeSize();

¡  A  function  is  a  named,  self-­‐contained,  section  

of  a  program  that  is  called  to  perform  a   specific  task  

void setup() { … }

Name  describes   task   All  code  is   contained  here  

       Inputs   (variables)  

         Operation   (What  it  does)    

output setup(inputs) { // operation }

Outputs    (values)  

¡  Example  Functions   void sayHello(int n) { Serial.print(“lucky number is” Serial.println(n); } int getFive()

{ return 5; }

¡ 

When  creating  a  function,  we  write  both     §  A  function  definition,  e.g.  

void sayHello() { Serial.println(“Hello”); }

§  One  or  many  calls  to  that  function,  e.g.   void loop() { sayHello(); }

¡  For  our  goal  of  the  lecture,  let  us   §  Define  an  empty  function  called  

getUserResponse()  that  waits  for  an  integer   number  from  the  serial  Monitor  and  returns  that   integer   §  Call  that  function  every  iteration  of  loop()

int listOfInts[5] = {3, 8, 4, 9, 1}; int response;

void setup() { Serial.begin(9600); } void loop() { Serial.println(“Enter a Number”); response = getUserResponse(); } int getUserResponse() { return 0; }

¡  Goal   ¡  Review   ¡  Variables  &  Data  Types   ¡  Inputs  &  Outputs   ¡  Functions   ¡  Conditionals   ¡  Loops  

¡  We  want  our  program  to  make  decisions  

depending  on  particular  states  of  the  system   (e.g.  values  of  variables.)  

¡  The  most  common  function  is…  

 

 

 

 if  

¡  Syntax  for  if  

 

 if (boolean statement) { … }

¡  Read  this  as…     §  If  the  boolean statement is  true,  then  do  all  

operations  within  the  {}  brackets  that  follow.  

¡  For  example  

 

if (speed > 10) { speed = 10; }

¡  Another  use  of  if  

 

if (speed > 10) { speed = 20; } else { speed = 0; }

¡  Goal   ¡  Review   ¡  Variables  &  Data  Types   ¡  Inputs  &  Outputs   ¡  Functions   ¡  Conditionals   ¡  Loops  

¡  We  may  repeat  an  operation  many  times,  but  

we  don’t  want  to  write  the  code  many  times  

¡  The  most  common  ways  to  loop  are    

 

 

 

 

 while  loops  

 

 

 for  loops  

¡ 

    ¡ 

The  syntax  for  while  loops  are     while (boolean statement) { … } Read  this  as…     §  If  the  boolean statement is  true,  then  keep  

doing  the  operations  within  the  {}  brackets  that   follow.    

¡  For  example  

 

int speed = 0; while (speed < 10) { speed = speed + 1; }

¡  For  loops  iterate  over  an  integer  variable  

 

whose  value  changes  with  each  iteration  

int speed = 0; for (int i=0; i