Iniciació a la Robòtica amb S4A

22
Tecnologia 2n ESO Robòtica 1 2n ESO DOSSIER Professor ROBÒTICA TECOLOGIA

Transcript of Iniciació a la Robòtica amb S4A

Page 1: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 1

2n ESO

DOSSIER Professor ROBÒTICA

TEC�OLOGIA

Page 2: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 2

Robòtica 2n ESO

Scratch . • Instal·lació de l’S4A (fer una còpia de l’arxiu S4A.image a l’escriptori (per exemple) • Instal·lar el programa Arduino (Arduino.cc/download) • Creació d’un compte a Scratch.mit.edu o Programa1 . Fer el disseny d’un robot i que respongui (endavant, enrera) al

prèmer determinades tecles � El robot ha d’estar vist des de dalt, tenir 2 rodes motrius, i 2 “antenes”

(equivaldran a sensors de tacte o òptics) davanteres. � S’ha de dissenyar en horitzontal (Eix X) (facilita el seu control posterior) � Les dues antenes han de ser una de cada color � A l’apretar W avança (10 passos) � A l’apretar S retrocedeix (10 passos)

Programa1

o Programa2 . El robot avança (Eix Y) cap amunt i s’atura al tocar la vora, � El robot inicia el moviment en el punt (0,-150) � Avançarà sol cap endavant

Programa2

Page 3: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 3

o Programa3 . Igual que el programa anterior però aquest cop s’aturarà al tocar una línia negra amb

alguna de les antenes � Dibuixar una línia negra a la part superior de la “pista” � El robot inicia el moviment en el punt (0,-150) � Avançarà sol cap endavant

Programa3

o Programa3.1 . Igual que el programa anterior però aquest cop el robot avançarà d’esquena

� Fes aquest parell de canvis

� Amb aquest parell de canvis es comprova que el robot s’atura amb el contacte de les antenes

Page 4: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 4

o Programa4 . Repetir el programa 2 però fent que el robot avanci de manera inclinada

� Afegir un valor de gir aleatori

Programa4

o Programa5 . Repetir el programa 3 però fent que el robot avanci de manera inclinada � Afegir un valor de gir aleatori � Programa 5.1. Canviar els colors dels sensors de les antenes per uns altres colors, per

comprovar que no s’atura igual (o que no s’atura) Programa5 Programa5.1

Page 5: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 5

o Programa6 . A partir del programa 5. Quan el robot xoca contra una paret, fer que retrocedeixi una

mica � Cal afegir una funció. � Quin problema apareix, com es soluciona?

Programa6

o Programa7 . A partir del programa 6. Quan el robot xoca contra una paret, fer que retrocedeixi una mica, seguidament giri uns 15 graus i continuï avançant.

� Completar la línia negra superior amb un quadrat.

Programa7

Molt important

Page 6: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 6

o Programa8 . A partir del programa 7. El robot segueix una

línia negra. Amb els “sensors llargs davanters” � Crear un petit circuit i comprovar que el robot se’n surt � Si el robot se surt de la línia sempre es pot variar l’angle

de gir

Page 7: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 7

o Programa9 . El robot segueix una línia negre amb “dos sensors de llum”.

• Els sensors de llum són dos puntets de colors diferents en la part davantera del robot

� Es pot aprofitar el circuit del programa 8 o crear-ne un de nou. � En el robot es faran uns petits canvis en els sensors. Cal eliminar les dues “antenes”

davanteres i canviar-les per 2 quadradets de colors diferents que faran de sensors òptics (En aquest exemple el robot té 3 quadradets, encara que només es faran servir els dos exteriors, blau i verd)

� El robot se l’ha de col·locar amb el punter al principi del circuit. � Quan el robot detecta amb un o amb dos sensors la línia negre, el robot reacciona d’una

manera específica � Cal introduir variables i dos condicions de colors. S’utilitza l’estratègia de la suma de valors en

base 2. Així s’aconsegueix que totes les combinacions de colors posibles sempre donguin un valor diferent i es puguin analitzar sense problema

� En aquest cas s’establirà la condició de si no detecta línia negre, és a dir, si la línia està entre els dos sensors el robot avançarà.

� Aquesta condició, genera un problema. Quin? Quan el robot no detecta res continúa avançant i no s’atura mai. Es pot arreglar amb un 3r sensor (el central)

Programa9

Page 8: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 8

o Programa10 . El robot segueix una línia negre amb “tres sensors de llum”. Millora del 9

• Els sensors de llum són tres puntets de colors diferents en la part davantera del robot

� El 3r sensor (el central) el farem de color vermell. � El robot se l’ha de col·locar amb el punter al principi del circuit. � Cal introduir variables i tres condicions de colors. S’utilitza l’estratègia de la suma de valors en

base 2. Així s’aconsegueix que totes les combinacions de colors posibles sempre donguin un valor diferent i es puguin analitzar sense problema

Programa10

o Programa11 (Molt difícil) . A partir del programa 7. El robot surt d’un petit laberint

� Crear un petit circuit i comprovar que el robot se’n surt � El robot ha de començar a moure’s al principi del circuit. � Quan el robot toca amb l’antena dreta a de rectificar cap a l’esquerra. I quan toca amb l’antena

esquerra ha de rectificar cap a la dreta � Cal introduir variables i moltes combinacions de colors.

Page 9: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 9

Placa Proto-board. Connexió bàsica

Línia de positius: Des de qualsevol punt de la línia es pot punxar un cable (vermell ) del qual sortirà corrent

Línia de negatius: Des de qualsevol punt de la línia es pot punxar un cable (negre ) del qual arribarà corrent

Alimentació: Cable USB quadrat (placa arduino)-rectangular (ordinador)-plana

Alimentació

GND

Línia de positius

Línia de negatius

Cable color vermell: Va des de el pin 5V de la placa Arduino fins al pin central de l’interruptor

Cable color negre: Va des de el pin GND de la placa Arduino fins al qualsevol foradet de la línia negra de la placa proto

Pin 5V

Cable punxat en la “cama” central del commutador

Cable punxat en una de les “cames” laterals del commutador

Page 10: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 10

Abans de començar a treballar amb l’S4A Carregar el programa Firmware _el_que_funciona , des del programa Arduino-UNO S4A El programa S4A només s’obrirà si troba l’arxiu S4A.image. L’accés directe del programa i aquest arxiu han d’estar en la mateixa carpeta (o localització, per exemple l’escriptori)

Evolució de programes Cal recordar que els pins del polsador (o sensors òptics) estan

“alterats”. El pin 1 del programa és el pin2 de la placa Arduino. El pin 2

del programa és el pin3 de la placa Arduino)

Button_Led. S’il·lumina 1 LED al prèmer un polsador (mentre està premut)

Muntatge :

Si el cable de senyal del polsador no arriba al

pin2-digital, es pot empalmar com a la figura

Cama llarga del LED

Pin 13 digital

Pin 2 digital

Cable Vermell. Empalma

vermell del polsador amb la

línia de punts de vermells

Cable �egre. Empalma

negre del polsador amb la

línia de punts de negres

Page 11: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 11

Activació: 1. Prèmer la bandera verda. El programa queda envoltat d’una vora blanca

2. Prèmer el polsador sense haver premut l’interruptor. No ha de funcionar (no arriba

corrent a la placa proto)

Si el LED s’encén hi ha un error en el muntatge o l’interruptor està mal col·locat

3. Prèmer el polsador havent premut l’interruptor. S’ha d’encendre el LED

Pulsador

apretat

Interruptor

NO premut LED NO

s’encén

Pulsador

apretat

Interruptor

premut LED

s’encén

Page 12: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 12

• Modificacions sobre aquest programa. o Provar de fer el mateix però amb l’altre polsador. Així confirmem que funcionen tots 2 o Canviar el pin digital del polsador Del pin2 al pin3 de la placa Arduino. També cal canviar

la configuració del programa a Digital2 premut o Canviar el pin digital del LED. Del pin13 al pin10 o al pin11 de la placa Arduino. També cal

canviar la configuració del programa a Digital 10 encés. o Canviar la posició del LED en la placa Proto. No cal canviar el programa o Afegir un altre LED pin12 i pin11 (al prèmer encès13 i apagat11 i a l’inrevés)

PrS4A1. Button_Led (retard) S’il·lumina 1 LED durant un temps concret al prèmer un pulsador.

Muntatge idèntic a l’anterior

• Modificacions sobre aquest programa.

o Canviar el valor del repeteix. Investigar quin valor del repeteix equival a 1 segon. o Canviar el pin digital del LED. Del pin13 al pin10 o al pin11 de la placa Arduino. També cal

canviar la configuració del programa a Digital 10 encés

PrS4A2. Button_2Led 1 pulsador

S’il·luminen 2 LEDs al prèmer un pulsador (mentre està premut)

Muntatge idèntic a l’anterior, però amb 2 LEDs

• Modificacions sobre aquest programa. o Canviar el pins digital dels LEDs. Combinar entre els pins 10, 11 i 13 o Canviar de polsador i de pin (del pin2 al pin3) de la placa Arduino

Page 13: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 13

PrS4A3. Button_2Led 1 pulsador_ retard

S’il·luminen 2 LEDs durant un temps concret al prèmer un pulsador

Muntatge idèntic a l’anterior,

• Modificacions sobre aquest programa. o Canviar el valor del repeteix. Comprovar que el valor del repeteix equivalent a 1 segon, és

correcte

PrS4A4. but_2led 1 puls ret dif

S’il·luminen 2 LEDs durant un temps concret, però cada led durant un temps diferent, al prèmer un pulsador. S’il·lumina el 1r LED (el que més dura), poc després el 2n LED i s’apaguen els 2 LED a l’hora.

Muntatge idèntic a l’anterior,

• Modificacions sobre aquest programa. o Canviar els valor dels repeteix.

Page 14: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 14

PrS4A5. but_2led 1 puls ret cons

S’il·luminen 2 LEDs durant un temps concret,1r s’encén un LED i s’apaga i seguidament el 2n LED. Cal observar que si no es dóna la instrucció d’apagar el 1r LED, aquest quedaria encés

Muntatge idèntic a l’anterior,

• Modificacions sobre aquest programa. o Canviar els valor dels repeteix.

Page 15: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 15

PrS4A6. 1 motor 1 botó Al prémer 1 botó simultàniament s’il·lumina 1 LED i es mou un motor durant un temps concret. Introducció a les funcions.

Muntatge En aquest cas ,alimentarem un motor (vermell, negre, senyal) Connectarem un polsador i un LED

• Modificacions sobre aquest programa

o Canviar el valor del repeteix. Calcular quin és el valor que farà que la roda faci una volta completa

o Canviar el sentit horari per l’antihorari o Provar l’altre motor. Observar com gira en horari i en antihorari o Canviar el pin del motor als pin7, pin8 i pin12 i comprovar si tots funcionen correctament

S’executarà el que hi hagi a

motor1 (funció) i seguidament

continuarà el programa

El cable groc del motor és

el senyal

El cable fosc és el negatiu

El cable vermell és el

positiu Vermell a vermells

Negre a negres

LED al pin13

Connectors del polsador. Senyal

al pin2 (digital1 premut)

Page 16: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 16

PrS4A7. Seguir una línia negre (2 sensors òptics - 2 motors) Segueix una línia negre (cinta aïllant brillant). S’utilitzen 2 dels 3 sensors inferiors. de

Muntatge Els 3 sensors inferiors tenen un connector positiu (cable vermell) i un connector negatiu (cable negre) comú per als 3 sensors

NOTA: En aquest cas els

sensors extrems tenen cables

verds i el sensor central és blau.

IMPORTANT: Aquests colors

poden estar invertits. No passa

res, va exactament igual!!!

Cada motor té els seu vermell,

negre i senyal Pin7 i Pin4

Vista inversa

Positiu dels

sensors

Negatiu dels

sensors

Sensor esquerra

Pin2, (equival a digital1 premut)

en el programa S4A

Sensor dret

Pin3, (equival a digital2 premut)

en el programa S4A

El cable verd

sobra.

Sensor central

Page 17: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 17

Programa Seguidor línia negre

´

Page 18: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 18

Programes d’aprenentatge PB_v1

*Pins

sed = 2;

sdd = 3;

boto_e = 4;

boto_d = 5;

ultraso_e = 6;

ultraso_d = 7;

*Funcions de moviment endavant(#); enrera(#); parada(#); gir_dreta(#); gir_esquerra(#); gir_suau_dreta(#); //moviment enrera gir_suau_esq(#); //moviment enrera

*Control del programa principal void loop() { Serial.println(); Serial.println("NOVA LECTURA"); lec=0; // substitueix als lec=0 de les funcions lectura_sensors_IR i lectura_ultrasons //inici de les funcions ***Aquí van les instruccions*** //final de les funcions analitza_resultats(); } ***MOLT IMPORTANT*** Cada cop que s’iniciï una pràctica cal salvar el programa amb un nom nou i que faci referència al què farà el robot

� Pràctica A1 endavant(40);

parada(10); // si no escrivim aquesta instrucció, el robot no s’aturarà mai

� Pràctica A2 endavant(40);

gir_esquerra(50);

endavant(10);

parada(100);

� Pràctica A3 endavant(40);

gir_suau_esq(30);

endavant(20);

gir_suau_dreta(30);

endavant(20);

parada(100);

Page 19: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 19

*Controls dels sensors de tacte i òptics

boto_e = 4; Li assignem el valor 1 a la variable sensors_actius

boto_d = 5; Li assignem el valor 2 a la variable sensors_actius

sed = 2; sensor òptic davanter esquerra. Li assignem el valor 4 a la variable sensors_actius

sed = 3; sensor òptic davanter dret. Li assignem el valor 8 a la variable sensors_actius

*Control del programa secundari (analitza els sensors) void analitza_resultats(){ if(sensors_actius==1){// informar de que es detecta (en aquest cas: polsador esq) Serial.println("informació clara del que ha de passar."); //inici funcions de moviment endavant, enrera, parar, etc... //final funcions de moviment endavant, enrera, parar, etc... delay(5);} else{ //inici funcions. Acció que fa el robot en cas de no trobar res!! //final funcions delay(5);} }

� Pràctica A4.1 (sensor de tacte esquerra . Xoca i rectifica)

void loo p() {... //inici de les funcions que activen els sensors lectura_boto_optics(); //final de les funcions.... }

void analitza_resultats(){ if(sensors_actius==1){// informar de que es detecta (en aquest cas: polsador esq) Serial.println("xoc esquerra "); //inici funcions de moviment endavant, enrera, parar, etc... gir_suau_dreta(30); enrera(20); //final funcions de moviment endavant, enrera, parar, etc... delay(5);} else{ //inici funcions endavant(1); //final funcions delay(5);}

� Pràctica 4.2 (sensor de tacte esquerra i dret . Xoca i rectifica) void analitza_resultats(){ if(sensors_actius==1){// informar de que es detecta (en aquest cas: polsador esq) Serial.println("xoc esquerra "); //inici funcions de moviment endavant, enrera, parar, etc... gir_suau_dreta(30); enrera(20); //final funcions de moviment endavant, enrera, parar, etc... delay(5);} if(sensors_actius==2){// informar de que es detecta (en aquest cas: polsador esq) Serial.println("xoc dret "); //inici funcions de moviment endavant, enrera, parar, etc... gir_suau_esq(30); enrera(20); //final funcions de moviment endavant, enrera, parar, etc... delay(5);}

Page 20: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 20

else{...igual que el 4.1...}

� Pràctica A5.1 (sensor òptic esquerra . Evita sortir-se per l’esquerra) ***Cal fer una petita modificació en el programa. Localitzar la funció void lectura_boto_optics() { sensors_actius=0; estat_sed = digitalRead(sed); estat_sdd = digitalRead(sdd); estat_boto_e = digitalRead(boto_e); estat_boto_d = digitalRead(boto_d); if (estat_boto_e == HIGH) { sensors_actius=sensors_actius+1;} if (estat_boto_d == HIGH) { sensors_actius=sensors_actius+2;} //if (estat_sed == HIGH) { //cal eliminar per no crear falsos blancs //sensors_actius=sensors_actius+4;} //if (estat_sdd == HIGH) { //cal eliminar per no crear falsos blancs //sensors_actius=sensors_actius+8;} Serial.print("interruptors: "); Serial.println(sensors_actius); delay(15); } ***tornem a la funció de control dels sensors void analitza_resultats(){ if(sensors_actius==4{// informar de que es detecta (en aquest cas: polsador esq) Serial.println("òptic esquerra "); //inici funcions de moviment endavant, enrera, parar, etc... enrera(30); gir_dreta(20); //final funcions de moviment endavant, enrera, parar, etc... delay(5);} else{...igual que el 4.1...}

� Pràctica A5.2 (sensor òptic esquerra i dreta . Evita sortir-se per l’esquerra i per la dreta) void analitza_resultats(){ if(sensors_actius==4{...igual que el 5.1...} if(sensors_actius==#{// informar de que es detecta Serial.println("òptic ###### "); //inici funcions de moviment endavant, enrera, parar, etc... ###### //final funcions de moviment endavant, enrera, parar, etc... delay(5);} else{...igual que el 4.1...}

� Pràctica A5.3 (seguir línia negra)

Cal eliminar la doble barra

d’aquestes instruccions

Page 21: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 21

� Pràctica A6.1 (sensor IR (central) . Segueix la mà) ***cal inhabilitar els sensors òptics. Tornar a col·locar la doble barra//

*Controls dels sensors IR

IRpin2 = A4; Li assignem el valor 2 a la variable lec void loo p() {...

//inici de les funcions que activen els sensors lectura_sensors_IR2(20); //els sensor IR detectarà un objecte entre 4 i 20 cm //final de les funcions.... }

void analitza_resultats(){ if(lec==2){// informar de que es detecta (en aquest cas: polsador esq) Serial.println("detecta IR "); //inici funcions de moviment endavant, enrera, parar, etc... endavant(3); //final funcions de moviment endavant, enrera, parar, etc... delay(5);} else{ //inici funcions parada(1); //final funcions delay(5);}

Page 22: Iniciació a la Robòtica amb S4A

Tecnologia 2n ESO Robòtica 22

� Pràctica A7.1 (sensor ultrasó esquerra .) ***cal inhabilitar els sensors òptics. Tornar a col·locar la doble barra//

*Controls dels sensors ultrasònics

ultraso_e = 6; Li assignem el valor 1 a la variable lec

ultraso_d = 7; Li assignem el valor 4 a la variable lec

void loo p() {...

//inici de les funcions que activen els sensors lectura_ultrasons(20,20); //els sensor ultrasònic detectarà un objecte per sota de 20 cm

***Encara que nomès es faci servir un sensor ultrasònic cal configurar el segon sensor encara que no es faci servir***

//final de les funcions.... }

void analitza_resultats(){ if(lec==1){// informar de que es detecta (en aquest cas: ultrasó esq) Serial.println("detecta ultrasó_e "); //inici funcions de moviment endavant, enrera, parar, etc... endavant(3); //final funcions de moviment endavant, enrera, parar, etc... delay(5);} else{ //inici funcions parada(1); //final funcions delay(5);}

� Pràctica A7.2 (sensor ultrasó dret .)

� Pràctica A7.3 (sensor ultrasó esquerra i dret . Evita el xoc) void analitza_resultats(){ if(lec==1){// informar de que es detecta (en aquest cas: ultrasó esq) Serial.println("detecta ultrasó_e "); //inici funcions de moviment endavant, enrera, parar, etc... endavant(3); //final funcions de moviment endavant, enrera, parar, etc... delay(5);} if(lec==4) ){// informar de que es detecta Serial.println(" #### "); //inici funcions de moviment endavant, enrera, parar, etc... #####(3); //final funcions de moviment endavant, enrera, parar, etc... delay(5);} if(lec==5) ){// informar de que es detecta Serial.println("#### "); //inici funcions de moviment endavant, enrera, parar, etc... #####(3); //final funcions de moviment endavant, enrera, parar, etc... delay(5);} else{...igual que el 7.1...}