Sensor de tacte

Els sensors permeten al robot reaccionar a les condicions de l'entorn, i executar ordres diferents en cada cas.

Per a fer això, a més del sensor, es necessita una instrucció del llenguatge de programació que permet triar entre dos situacions, anomenada condicional.

En Python s'escriu així:

if condition:
    one_statement
else:
    another_statement

Aleshores, si la condició es verdadera, s'executa la primera ordre, i si no, la segona.

Vegem un exemple, però primer connectem el robot.


In [ ]:
from functions import connect, touch, forward, backward, stop, disconnect, next_notebook
from time import sleep
connect()

El codi següent comprova el sensor de tacte:

  • si està polsat, el robot va cap enrere
  • si no està polsat, va cap avant

Proveu-lo amb Ctrl+Enter mentre polseu (o no) el sensor de tacte.


In [ ]:
if touch(): 
    backward()
    sleep(0.2)
    stop()
else:
    forward()
    sleep(0.2)
    stop()

Detecció de condicions

Imagineu que volem fer un programa per a que el robot avance mentre el sensor de tacte no detecte cap obstacle. Hauríem d'estar comprovant el sensor repetidament fins el moment en què es detectara el contacte.

Podríem utilitzar el bucle for amb el condicional if, però els llenguatges de programació defineixen una estructura equivalent, anomenada bucle condicional, o while loop.

En Python s'escriu així:

while condition:
    statement

Aleshores, l'ordre s'executa repetidament, mentre la condició siga verdadera.

El programa quedaria així:


In [ ]:
while not touch():
    forward()
stop()

Sembla complicat? Les ordres que li esteu donant al robot són molt semblants a les del llenguatge natural, només que en anglès. Si no vos convenç, mireu la traducció :-)

Recapitulem

Ara podeu respirar una mica: acabeu de vore dos de les instruccions més importants dels llenguatges de programació:

  • if .. else: permet executar dos ordres diferents segons una condició siga verdadera o falsa
  • while: permet repetir una ordre mentre una condició siga verdadera

En el següent exercici usarem eixes instruccions, i tot el que hem aprés abans, per a moure el robot de forma autònoma, el que en robòtica s'anomena navegació.

Abans de continuar, desconnecteu el robot:


In [ ]:
disconnect()
next_notebook('navigation')