2. Tecnologia 2n ESO Robòtica2
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
3. Tecnologia 2n ESO Robòtica3
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
4. Tecnologia 2n ESO Robòtica4
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
5. Tecnologia 2n ESO Robòtica5
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
6. Tecnologia 2n ESO Robòtica6
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
7. Tecnologia 2n ESO Robòtica7
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
8. Tecnologia 2n ESO Robòtica8
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.
9. Tecnologia 2n ESO Robòtica9
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
10. Tecnologia 2n ESO Robòtica10
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
11. Tecnologia 2n ESO Robòtica11
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
12. Tecnologia 2n ESO Robòtica12
• 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
13. Tecnologia 2n ESO Robòtica13
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.
14. Tecnologia 2n ESO Robòtica14
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.
15. Tecnologia 2n ESO Robòtica15
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)
16. Tecnologia 2n ESO Robòtica16
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
18. Tecnologia 2n ESO Robòtica18
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);
19. Tecnologia 2n ESO Robòtica19
*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 loop() {...
//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);}
20. Tecnologia 2n ESO Robòtica20
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
21. Tecnologia 2n ESO Robòtica21
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 loop() {...
//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);}
22. Tecnologia 2n ESO Robòtica22
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 loop() {...
//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...}