SlideShare a Scribd company logo
1 of 21
Download to read offline
Proiektu honetan Arduino plataformarekin lan egingo dugu. Bertan
Arduino lengoaia nolakoa den ikusiko dugu hainbat adibide erabilita eta
Wall-e errobot bat ere programatuko dugu. Honek 3 serbomotore(eskuak
eta burua), 2 LED(begiak), buzzer 1(soinua), bluetooth modulo bat, 2 DC
motore(gurpilak) eta ultrsoinu modulo(distantzia neurtzeko) bat izango
ditu. Hauek gure Wall-e errobota mugitzeko eta erreakzionatzeko
erabiliko ditugu.
ARDUINO
Wall-e Arduino
1
Aurkibidea
Sarrera..........................................................................................................................................................2
Zer da? .....................................................................................................................................................2
Zer behar dugu?.......................................................................................................................................2
Arduino ezaugarriak (Pin-ak)....................................................................................................................2
Lengoaia .......................................................................................................................................................3
Egitura......................................................................................................................................................3
Aldagaiak..................................................................................................................................................3
Funtzioak..................................................................................................................................................3
Softwarea .....................................................................................................................................................4
Instalazioa ................................................................................................................................................4
Lehen bista...............................................................................................................................................5
Sketch-ak (Kodea).........................................................................................................................................6
Egitura......................................................................................................................................................6
delay (geldiunea) .................................................................................................................................6
digitalWrite..........................................................................................................................................6
analogWrite .........................................................................................................................................6
Komunikazioa...........................................................................................................................................6
Komunikazio seriala (PC-tik) ................................................................................................................6
Komunikazio seriala (Bluetooth)..........................................................................................................6
Kontrola....................................................................................................................................................7
IF erabiliz..............................................................................................................................................7
CASE erabiliz ........................................................................................................................................7
random (Ausazko zenbakia).....................................................................................................................7
LED-a piztu eta itzali.................................................................................................................................8
Datuak irakurri eta imprimatu .................................................................................................................8
print eta println (imprimatu) ...............................................................................................................8
echo eta trig (Ultrasoinua) .......................................................................................................................9
Buzzer.......................................................................................................................................................9
Serbomotoreak ......................................................................................................................................10
Motoreak ...............................................................................................................................................11
Komandoak objektuetan gorde..................................................................................................................12
Wall-e Kodea ..............................................................................................................................................13
Bibliografia..................................................................................................................................................20
Wall-e Arduino
2
Sarrera
Zer da?
Arduino sfoftware libreko plataforma elektronikoa da, hardware eta software irekiak eta
flexibleak erabiliz prototipoak sortzeko erabiltzen dena. Arduino-ren pin-ak gure
ingurumenetik informazioa lortu dezakete hainbat sentsore erabiliz eta hauen bitartez LED-ak,
motorrak eta horrelako gauzekin eragin dezakete.
Xafla programatzeko Arduino Lengoaia erabiltzen da, hau C/C++.
Zer behar dugu?
Proiektu honetan hainbat gauza erabili ditugu errobota egiteko:
 Arduino Leonardo x1
 Serbomotoreak x3
 DC motoreak x2
 Buzzer modulua x1
 Ultrasoinu modulua x1
 Bluetooth moduloax1
Arduino ezaugarriak (Pin-ak)
Atal honetan gure arduinoaren pinak ikusi eta azalduko ditugu. Hau da guk erabiliko dugun
xafla: Arduino Leonardo.
Pin-ak
 5V/3.3V: Pin positiboak, gure moduluei 5V edo 3.3V-ko potentzia emango die.
 GND: Pin negatiboa.
 Vin: 9V potentzia sartu diezaiokegu edo 9V potentzia atera
 Pin Digitalak: Hauek 2 balore dituzte LOW eta HIGH(itzalita eta piztuta).
o PWM~ simboloa dutenak 0 eta 255-en arteko balorea hartu dezakete
 Pin Analogikoak: PWM-ak bezalakoak. 0 eta 255-en arteko balorea hartu dezakete.
 IOREF: Pin honekin mikrokontrolagailuaren tentsioa irakurri ditzakegu.
 RESET: Hau Arduino xafla berrabiarazteko botoia da.
 RESET: Hemen botoi bat konektatu dezakegu reset botoia bezala erabiltzeko.
 SCL/SDA: I2C eta TWI dispositiboak konektatzeko balio du.
 AREF: 5V baino txikiagoko potentzia erabiltzeko. Hemen jarritako potentzia xaflak
erabiliko duena da.
 TX/RX: Komunikazio serial-erako erabiltzen dira.
 ICSP: USB interfazeak konektatzeko.
Wall-e Arduino
3
Lengoaia
Arduino plakaren lengoaia C eta C++ lengoaietan oinarritzen da. Xafla programatzeko sketch-ak erabiltzen dira eta
hauek hiru zatitan bana daitezke: Estruktura, aldagaiak eta funtzioak.
Ondorengo taulan proiektu honetan erabiliko ditugunak bakarrik daude, egitura, aldagai eta funtzio bakoitza
Arduino-ren web orrira darama bertako azalpena ikusi ahal izateko.
Egitura Aldagaiak Funtzioak
Egitura
 setup() (Hasiera)
 loop() (Begizta)
Sintaxia
 ; (Puntu eta koma)
 {} (Giltzak)
 // (Iruzkinak)
Kontrol Egiturak
 if (Konparaketa. Hau izanda, hau egin)
 if...else (Konparaketa. Hau egin, bestela... )
 for (Begizta zenbatzailea)
 switch case (Konparaketa anitza)
 while (Begizta boolean konparaketarekin)
 break (Kodearen hausketa)
Operadore Aritmetikoak
 = (Berdin)
Operadore Konparatiboak
 == (Hau bestearen berdina)
 < (Hau bestea baino txikiagoa)
 > (Hau bestea baino handiagoa )
 <= (Hau bestea baino txikiagoa edo berdina)
 >= (Hau bestea baino handiagoa edo berdina)
Konposizio Operadoreak
 ++ (Haunditu)
Constantes
 HIGH | LOW (Altua/Baxua)
 INPUT | OUTPUT (Sarrera/Irteera)
 true | false (Egia/Gezurra
 Constantes Numéricas
Tipos de Datos
 char (Karaktereak)
 int (Osoa)
 float (Komarekin)
 void (Hutsa)
Konbersioa
 char()
 int()
 float()
E/S Digitalak
 pinMode()
 digitalWrite()
 digitalRead()
E/S Analogikoak
 analogRead()
 analogWrite() - PWM (modulación por ancho de pulso)
E/S Aurreratuak
 tone()
 noTone()
 shiftOut()
 pulseIn()
Denbora
 delay()
Ausazko Zenbakiak
 random()
Komunikazioa
 Serial
Wall-e Arduino
4
Softwarea
Instalazioa
Gure Arduinoa programatzeko lehenengo softwarea behar dugu. Software hau web orri
ofizialetik deskargatu dezakegu:
 Web ofizialera joango gara: http://www.arduino.cc/es/
 Hondoren ‘Download’ atalera joan beharko gara:
 Download atalean gure sistema aukeratu beharko dugu, gure kasuan: Windows Installer.
 Deskargatzen denean ireki egingo dugu, eta pausoak jarraituko ditugu:
 Instalatzean honelako ikonoa agertuko zaigu.
Wall-e Arduino
5
Lehen bista
Software honetan gure kodigoa idatziko du. Hau da lehenik prestatu behar dena.
 Irekitzean ikusten den koadro zurian kodigoa idazten da.
 Gure xaflaren modeloa aukeratuko dugu. Herramientas-Tarjetas-Arduino Leonardo.
 Hondoren usb-tik xafla konektatu eta Herramientas-Puerto serial-COM X aukeratu.
 Monitore Seriala irekitzeko Herramientas-Monitor Serial aukeratu.
 Horrelako terminal txuria irekiko da.
Wall-e Arduino
6
Sketch-ak (Kodea)
Sketch-ak gure kodea dira. Softwarearekin hauek gorde eta hainbat ezberdin izan ditzazkegu.
Egitura
void setup(){ }
Setup() funtzioan Arduino plakaren pinak ezartzeko erabiltzen da (adibidez led bat bigarren pinan jartzen dugula),
objektuak sortu ditzakegu eta hauen barruan komandoak ezarri (hau komando berbera behin eta berriz ez
idazteko erabiltzen da) eta bertan ere libreriak ezarri ditzakegu.
void loop(){ }
loop() funtzioa begizta bat da, hau da, bertakoa behin eta berriz exekutatuko du gure Arduino-ari komunikatzeko
aukera emanez.
delay (geldiunea)
Arduino kodean geldiuneak egiteko delay-a erabiltzen da, hau milisegundotan adierazten dira
eta ezarritako denbora pasa beharko da kodearekin jarraitzeko. Adib:
delay(2000); //Hau kodea bi segundo geldituko du.
digitalWrite
Pin digitalei HIGH edo LOW (Piztu edo itzali) balorea emateko erabiltzen dira. Adib: LED batekin
digitalWrite (5, HIGH); //Hau bosgarren pinan konektatutako LED-a pizten du.
analogWrite
Pin digitalei HIGH edo LOW (Piztu edo itzali) balorea emateko erabiltzen dira. Adib: LED batekin
analogWrite (5, 100); //bosgarren pinan konektatutako LED-ari ehuneko balorea ematen dio.
Komunikazioa
Komunikazio seriala (PC-tik)
Komunikazio seriala Arduino-rekin komunikatzeko erabiliko dugu PC-aren bitartez. Proiektu honetan bluetooth
komunikazioa erabili da baina proiektuko adibideak komunikazio hau erabiliko dute. Hemen dugu eskema:
void setup() {
Serial.begin(9600); //Komunikazio seriala pizten du 9600 baudioetara
} //Baudio: Transmisio digital batean zenbat bit bidaltzen diren segundoro.
void loop() {
if(Serial.available() > 0) { //Komunikazio seriala 0 bit baino altuagoa bada
//HEMEN GURE KODIGOA
} // if(Serial.available() > 0) itxiko du.
Komunikazio seriala (Bluetooth)
Komunikazio seria bluetooth-aren bidez egiteko gure bluetooth moduluaren TX pina Arduinoaren RX pinarekin
konektatuko dugu eta RX pina TX- pinarekin.
void setup() {
Serial1.begin(9600); //Komunikazio serial2-a pizten du 9600 baudioetara
}
void loop() {
if(Serial1.available() > 0) { //Komunikazio serial2-a 0 bit baino altuagoa bada
//HEMEN GURE KODIGOA
} //if(Serial2.available() > 0) itxiko du.
Wall-e Arduino
7
Kontrola
Monitore serialetik hitzak edo hizkiak bidaliz xaflak guk programatutakoa egingo du.
IF erabiliz
void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available() > 0) {
int var = Serial.read(); //Objektu bat ‘var’ izenekoa. Serial portutik idatzitakoa bertan gordeko da.
if (var == '0'){ //var ‘0’ baldin bada bada ondorengoa egingo du:
//HEMEN GURE KODIGOA
} //if (var==’0’) itxiko du.
//Hemen if (var==’x’) gehiago joan daitezke bakoitza bere kodigoarekin.
else { //’var’ objektua ezarrita ez badago ondorengoa egingo du
//HEMEN GURE KODIGOA
}
} //if(Serial.available() > 0) itxiko du.
CASE erabiliz
Proiektuan batez ere CASE kontrol egitura erabili da, beraz, adibideetan hau erabiliko da.
void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available() > 0) {
int var = Serial.read(); //Objektu bat ‘var’ izenekoa. Serial portutik idatzitakoa bertan gordeko da.
switch (var) { //Hondorengo ‘case’-ak ‘var’ objetuarekin konparatuko ditu
case '0': //’var’ objetua ‘0’ baldin bada ondorengoa egingo du:
//Hemen gure kodigoa
break; //case ‘0’-a bukatuko du.
//Hemen case ‘x’: gehio jarri daitezke.
} // switch (var) itxiko du
}}
random (Ausazko zenbakia)
void setup() {
}
void loop() {
int numeroaleatorio = random(3); //Objektu bat sortuko dugu 'numeroaleatorio' izenarekin. Honek random
funtzioa erabiliko du eta 0-tik 3-ra zenbaki bat aukeratuko du (berak nahi duena)
Serial.println(numeroaleatorio); //Terminalean ‘numeroaleatorio’ objektua inprimatuko digu.
delay(2000); //tiempo de espera de 2 segundos
switch (numeroaleatorio) { //Switch funtzioa 'numeroaleatorio' objektuarekin habiaraziko du.
case 0: //’numeroaleatorio’ objetua 0 edo 1 denean ondorengoa egingo du:
case 1: //
Serial.println ("ASD"); //Terminalean ‘ASD’ inprimatiko digu
delay(2000); //kodea 2 segundo geldituko du.
break;
case 2: //si el objeto 'numeroaleatorio' es igual a '2'
Serial.println ("QWE"); //’numeroaleatorio’ objetua 0 edo 1 denean ondorengoa egingo du:
delay(2000); //kodea 2 segundo geldituko du.
break;
}
}
Wall-e Arduino
8
LED-a piztu eta itzali
Case-ak erabiliz LED-a piztu eta itzaliko dugu.
- LED-aren positiboa xaflaren 13 pin-ean konektatuta egongo da. (LED baten positiboa makil luzea da).
- LED-aren negatiboa xaflaren GND pin batean (nahi duna erabili dezakegu). (LED baten negatiboa makil motza da).
int ledPin = 13; // ‘ledPin’ objetua 13. pin-a(LED-a) izango da.
void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available() > 0) {
int var = Serial.read();
switch (var) { //ondorengo kasuak (case) ‘var’ objetuarekin konparatuko ditu.
case '0':
digitalWrite(ledPin, HIGH); //‘ledPin’ objetua HIGH balorera aldatuko da (LED-a piztuko da).
break;
case '1': //hacer algo cuando sea igual a 1
digitalWrite(ledPin, LOW); //‘ledPin’ objetua HIGH balorera aldatuko da (LED-a piztuko da).
break;
else
digitalWrite(ledPin, HIGH); //‘ledPin’ objetua HIGH balorera aldatuko da (LED-a piztuko da).
}
}
}
Datuak irakurri eta imprimatu
print eta println (imprimatu)
Honekin gure Arduino plaka terminalean guk esandakoa inprimatuko digu.
void setup() {
Serial.begin(9600); // Komunikazioa serie portutik irekiko du 9600 baudio-tara (abiadura)
}
void loop() {
Serial.print("ASD"); // Serial portutik ‘ASDASDASD…’ bidaliko digu hitzak bata bestearen atzetik jarrita.
Serial.println("ASD"); // Serial portutik ‘ASD ASD ASD…’ bidaliko digu hitz bakoitza lerro bakarrean jarrita.
delay(1000); // Segundo bateko delay bat jarriko diogu programa trabatuta ez geratzeko.
}
Serial.prin Serial.println
Wall-e Arduino
9
echo eta trig (Ultrasoinua)
Ultrasoinu moduloa Arduinoa zenbateko distantzia duen ikusteko balioko digu. Hau gure
errobota paretekin ez jotzeko balioko digu.
Honek 4 pin ditu: trigger, echo, 5V eta GND
int trigger=A0; //’trigger’ objetua A0 pinean, pin analogikoetan egongo da.(moduloaren trigger pina).
int echo=A1; // echo objetua A1 pinean pin analogikoetan egongo da.(moduloaren echo pina).
int distantzia; //’distantzia’ izeneko objektua sortuko dugu
void setup() {
pinMode(trigger, OUTPUT); //’trigger’ pina OUTPUT bezala jarriko dugu ultrasoinua bidaliko duelako.
pinMode(echo, INPUT); //’echo’ pina INPUT bezala jarriko dugu ultrasoinua jasoko duelako.
}
void loop() {
digitalWrite(trigger,HIGH); //trigger pinari HIGH balorea emanez ultrasoinua bidaliko du.
delayMicroseconds(10); //’delay’ bat egingo dugu
digitalWrite(trigger,LOW); //trigger pinari LOW balorea emanez ultrasoinua geldituko dugu
distantzia=pulseIn(echo,HIGH); //’echo’ pina ‘trigger’ pina irakurriko du HIGH balorea hartu duen
momentutik LOW balorera aldatu de arte. Honek neurri bat emango digu: Pultsu zabalera
mikrosegundotan. Neurri hori ‘distantzia’ objetuan gordeko du.
Serial.println(distantzia); //Serial monitoretik ‘distantzia’ objetua inprimatuko digu
delay(1000);
}
Ondoko adibidean 6000 baino gehiagoko zenbakiak distantzia dezente dute eta 1000 baino gutxiagoko
zenbakiak distantzia gutxi dute
Buzzer
Buzzer-a bozgorailu txiki bat da, guk musika jotzeko erabiliko dugu. Hau A2 pinera konektatu dugu (Pin
analogikoetara).
int iraupena=575; //gure notaren durazioa microsegundutan
int nota1=349.228231; //erreproduzitu nahi dugun notaren hertzio-ak.
int a=0; //’a’ objetua hutxa egongo dena bertan nota berriro kalibratu ahal izateko.
void setup(){
Serial.begin(9600);
pinMode (A2, OUTPUT); //’A2’ pina OUTPUT bezala konfiguratuko dugu soinua ateratzeko.
}
void loop(){
while (Serial.available()){
char dato= Serial.read();
switch(dato) {
case'1': {
for (a=nota1;a<=nota1; a++) //‘a’ objetuan ‘nota1’ sartuko dugu, ‘a’ objetua ‘nota1’
baino txikiagoa bada, ‘a’ objetua errepikatuko da.
tone(A2, a, iraupena); //Erreproduzituko duen soinua ‘A2’ pinetik aterako da ‘a’ objetukoa
entzungo dugu eta ‘iraupena’ objektuan jarritakoa iraungo du.
break;
}
}
}
}
Wall-e Arduino
10
Serbomotoreak
Gure errobotaren besoak eta burua mugitzeko sebomotoreak erabiliko ditugu. Motore hauek 0 eta 180
graduen arteko mugimendua dute.
Serbomotoreak <Servo.h> liburutegiarekin erabiltzen dira. Honekin gure serbomotoreak edozein pin
digitalean jarri ditzakegu eta gainera Servo komandoa edukiko dugu kodean jarri ahal izateko.
#include <Servo.h> //servoak pin digitaletan jartzeko erabiliko dugun liburutegia
Servo serbo1; //’serbo1’ izeneko objektu bat sortuko dugu Servo motatakoa izango dena.
void setup()
{
Serial.begin(9600);
serbo1.attach(2); //’serbo1’ objetua bigarren pinan jarrita dagoela esango diogu.
} // Serbo motoreak zein pinetan dauden ‘void setup(){}’ atalean ezartzen dira.
void loop()
{
while (Serial.available()){
char dato= Serial.read();
switch(dato) {
case'1': {
serbo1.write(0); //’serbo1’ objetua ‘0’ gradura mugituko da.
delay(1000);
break;
}
case'2': {
serbo1.write(180); //’serbo1’ objetua ‘180’ gradura mugituko da.
break;
}
}
}
}
180º
0º
Wall-e Arduino
11
Motoreak
Errobotak 2 gurpil izango ditu beraz bi DC motor erabiliko ditugu.
Arduino-ak bakarrik ezin du motorrei behar duten tentsioa eman, hau egiteko motor kontrolagailu bat
behar dugu. Guk L298N kontrolagailua erabili dugu. Honek 2 DC motor kontrolatzeko aukera ematen
digu. Sei konektore ditu: ENA IN1 IN2 ENB IN3 IN4
 ENA: Pin honek IN1 eta IN2 pinak pizten ditu.
o IN1/IN2 hauetako pin bat HIGH balorea emanez(eta besteari LOW) motorra alde
batera edo bestera mugituko da (aurrera edo atzera).
 ENB: Pin honek IN3 eta IN4 pinak pizten ditu.
o IN2/IN3 hauetako pin bat HIGH balorea emanez(eta besteari LOW) motorra alde
batera edo bestera mugituko da (aurrera edo atzera).
int ENA=5; //5 pina motor kontrolagailuaren ENA pinera konektatuta dago. ENA motorra pizten du.
int IN1=6; //6 pina kontrolagailuaren IN1 pinera konektatzen da. IN1 motorraren lehen kablea bat da.
int IN2=7; //7 pina kontrolagailuaren IN2 pinera konektatzen da. IN2 motorraren bigarren kablea da.
int ENB=8; //8 pina motor kontrolagailuaren ENB pinera konektatuta dago. ENB motorra pizten du.
int IN3=9; //9 pina kontrolagailuaren IN3 pinera konektatzen da. IN3 motorraren lehen kablea da.
int IN4=10;//10pina kontrolagailuaren IN4 pinera konektatzen da. IN4 motorraren bigarren kablea da.
void setup() {
Serial1.begin(9600);
}
void loop() {
if(Serial1.available() > 0) {
int var = Serial1.read();
switch (var) {
case '0':
digitalWrite(IN1,HIGH); //Lehen motorraren IN1 kableari HIGH balorea jartzen dio.
digitalWrite(IN2,LOW); //Lehen motorraren IN2 kableari LOW balorea jartzen dio.
digitalWrite(IN3,HIGH); //Bigarren motorraren IN3 kableari HIGH balorea jartzen dio.
digitalWrite(IN4,LOW); //Bigarren motorraren IN4 kableari LOW balorea jartzen dio.
delay(2000);
digitalWrite(IN1,LOW); // Pinei LOW balorea emango diegu motorrak geldik uteko.
digitalWrite(IN2,LOW); // Pinei LOW balorea emango diegu motorrak geldik uteko.
digitalWrite(IN3,LOW); // Pinei LOW balorea emango diegu motorrak geldik uteko.
digitalWrite(IN4,LOW); // Pinei LOW balorea emango diegu motorrak geldik uteko.
break;
}
}
}
Taulan motorraren konbinaketa posibleak ikusi ditzakegu:
AURRERA ESKUINERA EZKERRERA ATZERA GELDIRIK
IN1 HIGH LOW HIGH LOW LOW
IN2 LOW HIGH LOW HIGH LOW
IN3 HIGH HIGH LOW LOW LOW
IN4 LOW LOW HIGH HIGH LOW
Balore hauekin aurrera doa
Balore hauekin aurrera doa
Wall-e Arduino
12
Komandoak objektuetan gorde
Komandoak objektuen barruan gorde daitezke, honela objektuari deituz guk ezarritako kodea
habiatuko du.
Hau eginez gero ez daukagu behin eta berriz berdina idatzi behar, eta, gainera objektuan
komandoa aldatuz erabili dugun tokietan ere aldatuko da.
int ledbegiak = 13;
void begipiztuak(){ //objektu bat sortuko dugu void(hutsa) formatuan ‘begipiztuak()’ izenekoa eta
bertan ‘ledbegiak’ objetuari HIGH balorea emango diogu
digitalWrite(ledbegiak, HIGH);
}
void begiitzaliak(){//objektu bat sortuko dugu ‘begiitzaliak()’ izenekoa eta bertan ‘ledbegiak’ objetuari
LOW balorea emango diogu
digitalWrite(ledojos, LOW);
}
void setup()
{
Serial.begin(9600);
pinMode(ledbegiak, OUTPUT);
}
void loop(){
while (Serial.available()){
char dato= Serial.read();
switch(dato) {
case'h': {
begipiztuak(); //’begipiztuak’ objetuari deitzen diogu eta honek ‘ledbegiak’ objetuari HIGH
balorea emango diogu.
break;
}
case'g': {
begiitzaliak(); //’begiitzaliak’ objetuari deitzen diogu eta honek ‘ledbegiak’ objetuari LOW balorea
emango diogu.
break;
}
}
}
}
Wall-e errobotaren kodigoan hainbat kodigo objektuetan gorde ditugu hau bezala.
Wall-e Arduino
13
Wall-e Kodea
Orain Wall-e errobotaren kodea ikusiko dugu. Dena txikitu da gauzak ez errepikatzeko.
Ezaugarriak:
 2 LED: Begiak.
 3 serbomotore: Eskuak eta burua.
 Buzzer bat.
 Ultrasoinu bat.
 Bluetooth moduloa.
 2 DC motore.
 Motor Kontrolagailu bat.
//LIBRERIA SERVOS
#include <Servo.h> //Serbomotorren liburutegia ezarriko dugu
//RANDOM
int var = random(10); // Random hau wall-e errobotaren autonomia buklean uzteko erabiliko dugu.
//ULTRASOINUA
int trigger=A0; //ultrasoinuen pinak ezarriko ditugu pin analogikoetan
int echo=A1;
int distancia; //’distancia’ objektua erabiliko dugu ultrasoinuaren datuak bertan gordetzeko
//LED BEGIAK
int ledojos = 13; //13 pinera konektatut dagoen ‘ledojos’ izena duen objektua
//SONIDO
int buzzer = 5; //5 pinera konektatut dagoen ‘buzzer izena duen objektua
//DURAZIOA
int duracion=275; ////gure notaren durazioa microsegundutan
… //Hemen guk nahi ditugunak jarriko ditugu.
//NOTAK Hz
int nota1=293.664768; // 'nota1' objetua nota baten hertzioak gordetzeko gero erreproduzitzeko.
… //Hemen guk nahi ditugunak jarriko ditugu
//OBJEKTUAK
int a=0//’a’ objetua nota berriro kalibratu ahal izateko.
…
//MOTORES
int ENA=5; // 5 pina motor kontrolagailuaren ENA pinera konektatuta dago.
int IN1=6; //6 pina motor kontrolagailuaren IN1 pinera konektatuta dago.
...
//SERVOMOTORES
Servo servo1; // WALL-E BURUA //
Servo servo2; // WALL-E ESKUIN ESKUA
Servo servo3; // WALL-E EZKER ESKUA
//MOBIMIENTUA PROGRAMATUAK+++++++++++++++++++++++++++++++++++++++++++++++++++++++
//BEGIAK
//BEGIAK PIZTU
void ojosencendidos(){ //Mugimenduak objetuetan gordeko ditugu.
digitalWrite(ledojos, 255);
}
…
Wall-e Arduino
14
//CABEZA
//0 GRADOS
void cabeza0(){
servo1.write(0);
//BRAZO DERECHO
//O GRADOS
int brazoderecho0(){
servo2.write(0);
}
//BRAZO IZQUIERDO
//0 GRADOS
int brazoizquierdo0(){
servo3.write(0);
}
//ULTRASONIDO
void ultrasonido(){
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
distancia=pulseIn(echo,HIGH);
Serial.println(distancia);
}
//MOTORES
int adelante(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
delay(2000);
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
int adelante1(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
delay(2000);
}
//GESTOS
//RESET
int reset(){
ojosencendidos();
servo1.write(90);
servo2.write(0);
servo3.write(180);
}
Wall-e Arduino
15
//BAILE
int baile(){
for (a=nota1;a<=nota1;a++)
tone(A2, a, duracion);
servo1.write(90);
servo2.write(0);
servo3.write(90);
delay(300);
…
}
//INICIO==============================================================================
void setup()
{
//PINES--------------------------------------------------------------------------------------------------------------------------------
//COMUNICACION SERIAL BLUETOOTH
Serial1.begin(9600); //
//ULTRASONIDO
pinMode(trigger,OUTPUT); //’trigger’ objektua OUTPUT moduan ezarriko du
pinMode(echo,INPUT); //’echo’ objektua INPUT moduan ezarriko du
//LED OJOS
pinMode(ledojos, OUTPUT); //’ledojos’ objektua OUTPUT moduan ezarriko du
digitalWrite(ledojos, HIGH); //’ledojos’ objektuari HIGH balorea emango diogu
//BUZZER
pinMode (buzzer, OUTPUT); //’buzzer’ objektua OUTPUT moduan ezarriko du
//SERVOMOTORES
servo1.attach(2); //’servo1’ objektua 2 pinean ezartzen du
servo2.attach(3); //’servo2’ objektua 3 pinean ezartzen du
servo3.attach(4); //’servo3’ objektua 4 pinean ezartzen du
//MOVIMIENTO DE INICIO-------------------------------------------------------------------------------------------------------
//DESPERTAR
despertar(); //Hau piztean Wall-e egingo dituen mobimentuak da.
//SALUDO AL INICIO
saludo(); //Hau piztean Wall-e egingo dituen mobimentuak da.
//MOTORES
pinMode(ENA,OUTPUT);
pinMode(IN1,OUTPUT);
…
digitalWrite(ENA,HIGH); //Motorrak aktibatuko ditugu
digitalWrite(ENB,HIGH); //Motorrak aktibatuko ditugu
}
Wall-e Arduino
16
//COMANDOS=========================================================================
void loop()
{
while (Serial1.available()){
char dato= Serial1.read();
switch(dato) {
case'h': {
ojosencendidos(); //Begiak piztuko ditu
break;
}
…
//CABEZA
case'i': {
cabeza180(); //Burua 180º mugituko du
break;
}
…
//BRAZO DERECHO
case'k': {
brazoderecho0(); //Eskuina 0º mugituko du
break;
}
…
//BRAZO IZQUIERDO
case'b': {
brazoizquierdo180(); //Ezkerra 180º mugituko du
break;
}
…
//RESET
case'r': {
reset();//Eskuak jaitsi, burua zentratu eta begiak piztuko ditu
break;
}
…
//MOTORES
//ADELANTE
case'w': {
adelante();//Aurrera mugituko da
break;
}
…
//BAILE
case'0': {
baile();//Dantzatu egingo du
break;
}
Wall-e Arduino
17
//AUTONOMIA DEL WALL-E
case'1': { //’1’ sakatzean:
while(var < 200){ //While funtzioa irekiko du var objektua 200 baino txikiagoa bada
ultrasonido(); //Lehenengo ultrasoinuarekin distantzia neurtuko dugu
if (distancia>1000) { //’distancia’ objektua 1000 baino handiagoa bada:
int numeroaleatorio = random(30); //’numeroaleatorio’ objektua sortuko dugu eta honek 0 eta 29
zenbakien arteko zenbaki bat gordeko du.
Serial.println(numeroaleatorio); //’numeroaleatorio’ objektua inprimatuko dugu
switch (numeroaleatorio) { //switch funtzioa irekiko du ‘numeroaleatorio’ objektuarekin
case 0: //’numeroaleatorio’ 0 izatean:
atzera1(); //Wall-e atzera joango da.
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 15:
reset();//Errobotaren eskuak eta burua zentratuko dira eta begiak piztuko ditu.
adelante1(); //Wall-e aurrera joango da.
break;
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 25:
adelante1(); //Wall-e aurrera joango da.
break;
case 13:
case 23:
derecha1();//Wall-e eskuinera joango da.
break;
case 14:
case 24
izquierda1();//Wall-e ezkerrera joango da.
break;
Wall-e Arduino
18
case 26:
case 27:
case 28:
case 29:
quieto();//Wall-e gelditu egingo da.
break;
}
int numeroaleatorio1=random(30,60); //’numeroaleatorio1’ objektua sortuko dugu eta honek 30 eta
59 zenbakien arteko zenbaki bat gordeko du.
Serial.println(numeroaleatorio1);
delay(1000);
switch (numeroaleatorio1){ // switch funtzioa irekiko du ’numeroaleatorio1’ objektuarekin
case 30:
case 31:
case 34:
case 35:
case 36:
case 37:
case 39:
case 41:
case 42:
case 45:
case 46:
case 47:
case 48:
case 49:
case 50:
case 51:
case 54:
case 55:
case 56: // Hauek ez dute ezer egiten
delay(1000);
break;
case 52: //Burua 0º mugituko du
cabeza0();
break;
case 43: //Burua 180º mugituko du
cabeza180();
break;
case 53: //Eskuina 90º mugituko du
brazoderecho90();
break;
Wall-e Arduino
19
case 32: //Eskuina 180º mugituko du
brazoderecho180();
break;
case 38: //Ezkerra 90º mugituko du
brazoizquierdo90();
break;
case 57: //Ezkerra 180º mugituko du
brazoizquierdo180();
break;
case 58: //Eskuak gora mugituko ditu
manosarriba();
break;
case 59: //Eskuak behera mugituko ditu
manosabajo();
break;
case 40: //Eskuarekin agurra egingo du.
saludo();
break;
case 44: //Dantza egingo du
baile();
break;
}
}
else //’distancia’ objetua 1000 baino txikiagoa bada:
{
{
izquierda1(); //Ezkerretara joango da
}
}
}
}
}
}
}
Wall-e Arduino
20
Bibliografia
www.arduino.cc: http://www.arduino.cc/es/
 Sarrera: http://arduino.cc/es/Guide/Introduction
 Lengoaia: http://arduino.cc/es/Reference/HomePage
o Egiturak:
 setup http://arduino.cc/es/Reference/Setup
 loop: http://arduino.cc/es/Reference/Loop
 if: http://arduino.cc/es/Reference/If
 if/else: http://arduino.cc/es/Reference/Else
o Aldagaiak:
 Objektuak:
 int: http://arduino.cc/es/Reference/Int
 void: http://arduino.cc/es/Reference/Void
 switch/case: http://arduino.cc/es/Reference/SwitchCase
 break: http://arduino.cc/es/Reference/Break
o Funtzioak:
 Pin digitalak
 Pin moduak: http://arduino.cc/es/Reference/PinMode
 digitalWrite: http://arduino.cc/es/Reference/DigitalWrite
 digitalRead: http://arduino.cc/es/Reference/DigitalRead
 Pin analogikoak
 analogRead: http://arduino.cc/es/Reference/AnalogRead
 analogWrite: http://arduino.cc/es/Reference/AnalogWrite
 Moduloak:
o Buzzer: http://arduino.cc/es/Reference/Tone
o Serbomotoreak: http://arduino.cc/es/Reference/Servo
 Write: http://arduino.cc/es/Reference/ServoWrite
 Attach: http://arduino.cc/es/Reference/ServoAttach
Erabilitako Objetuak
 arduino Leonardo: http://www.ebay.es/itm/Arduino-compatible-Revision-3-R3-Leonardo-with-Free-USB-
Cable-
/161248175039?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item258b23e3bf&_uhb=1#shpCntId
 Ultrasoinu Moduloa: http://www.ebay.es/itm/Arduino-Modulo-Ultrasonico-HC-SR04-Sensor-Distancia-
Medidor-Transductor-D1-/221333788165?pt=LH_DefaultDomain_186&hash=item3388859605&_uhb=1
 Motor Kontrolagailua: http://www.ebay.es/itm/Modulo-de-servo-motor-controlador-conductor-L298N-
arduino-PIC-step-D1-/231180228189?pt=LH_DefaultDomain_186&hash=item35d36a565d&_uhb=1
 Pila kablea: http://www.ebay.es/itm/LOTE-KIT-PILA-BOToN-CR1220-3V-PORTAPILAS-CLIP-BATERIA-
ELECTRONICA-ARDUINO-/261420369589?pt=LH_DefaultDomain_186&hash=item3cddde46b5&_uhb=1

More Related Content

Viewers also liked

Inbentarioa kudeatzeko web aplikazioa dok
Inbentarioa kudeatzeko web aplikazioa  dokInbentarioa kudeatzeko web aplikazioa  dok
Inbentarioa kudeatzeko web aplikazioa dokTolosaldea TLHI
 
Exemple d'un essai vaccinal contre le vaccinal: principes, étapes et résultats
Exemple d'un essai vaccinal contre le vaccinal: principes, étapes et résultatsExemple d'un essai vaccinal contre le vaccinal: principes, étapes et résultats
Exemple d'un essai vaccinal contre le vaccinal: principes, étapes et résultatsInstitut Pasteur de Madagascar
 
Résistance de Plasmodium falciparum aux dérivés de l'artémisinine
Résistance de Plasmodium falciparum aux dérivés de l'artémisinineRésistance de Plasmodium falciparum aux dérivés de l'artémisinine
Résistance de Plasmodium falciparum aux dérivés de l'artémisinineInstitut Pasteur de Madagascar
 
Réponses immunes de l'hôte contre les ligands parasitaires dans le paludisme ...
Réponses immunes de l'hôte contre les ligands parasitaires dans le paludisme ...Réponses immunes de l'hôte contre les ligands parasitaires dans le paludisme ...
Réponses immunes de l'hôte contre les ligands parasitaires dans le paludisme ...Institut Pasteur de Madagascar
 
2012 revised kai new line up (domestic market)1
2012 revised kai new line up (domestic market)12012 revised kai new line up (domestic market)1
2012 revised kai new line up (domestic market)1Cletis Tout
 

Viewers also liked (10)

ipv4 ariketak adibidea
ipv4 ariketak adibidea ipv4 ariketak adibidea
ipv4 ariketak adibidea
 
Ecommerce dok
Ecommerce   dokEcommerce   dok
Ecommerce dok
 
Inbentarioa kudeatzeko web aplikazioa dok
Inbentarioa kudeatzeko web aplikazioa  dokInbentarioa kudeatzeko web aplikazioa  dok
Inbentarioa kudeatzeko web aplikazioa dok
 
Asterisk dok
Asterisk   dokAsterisk   dok
Asterisk dok
 
Exemple d'un essai vaccinal contre le vaccinal: principes, étapes et résultats
Exemple d'un essai vaccinal contre le vaccinal: principes, étapes et résultatsExemple d'un essai vaccinal contre le vaccinal: principes, étapes et résultats
Exemple d'un essai vaccinal contre le vaccinal: principes, étapes et résultats
 
De l'antigène à l'anticorps
De l'antigène à l'anticorpsDe l'antigène à l'anticorps
De l'antigène à l'anticorps
 
Méthodes d'évaluation de la transmission
Méthodes d'évaluation de la transmissionMéthodes d'évaluation de la transmission
Méthodes d'évaluation de la transmission
 
Résistance de Plasmodium falciparum aux dérivés de l'artémisinine
Résistance de Plasmodium falciparum aux dérivés de l'artémisinineRésistance de Plasmodium falciparum aux dérivés de l'artémisinine
Résistance de Plasmodium falciparum aux dérivés de l'artémisinine
 
Réponses immunes de l'hôte contre les ligands parasitaires dans le paludisme ...
Réponses immunes de l'hôte contre les ligands parasitaires dans le paludisme ...Réponses immunes de l'hôte contre les ligands parasitaires dans le paludisme ...
Réponses immunes de l'hôte contre les ligands parasitaires dans le paludisme ...
 
2012 revised kai new line up (domestic market)1
2012 revised kai new line up (domestic market)12012 revised kai new line up (domestic market)1
2012 revised kai new line up (domestic market)1
 

Similar to Arduino wall e - dok

Lanaren aurkezpena
Lanaren aurkezpenaLanaren aurkezpena
Lanaren aurkezpenaMaite
 
Oinarrizko lana
Oinarrizko lanaOinarrizko lana
Oinarrizko lanaleire
 
Informatika eta ordenagailua
Informatika eta ordenagailua Informatika eta ordenagailua
Informatika eta ordenagailua MAIDER BAIGORRI
 
Informatika eta ordenagailua
Informatika eta ordenagailuaInformatika eta ordenagailua
Informatika eta ordenagailuaMIGUEL TEJADO
 
Informatika eta ordenagailua
Informatika eta ordenagailuaInformatika eta ordenagailua
Informatika eta ordenagailuaMikel Tejado
 
Ordenagailuaren desmontaketa xabix2,more
Ordenagailuaren desmontaketa   xabix2,moreOrdenagailuaren desmontaketa   xabix2,more
Ordenagailuaren desmontaketa xabix2,morexabier muñoz
 
Ordenagailuaren desmontaketa xabix2,more
Ordenagailuaren desmontaketa   xabix2,moreOrdenagailuaren desmontaketa   xabix2,more
Ordenagailuaren desmontaketa xabix2,morexabier muñoz
 
Ordenagailuaren desmontaketa xabix2,more
Ordenagailuaren desmontaketa   xabix2,moreOrdenagailuaren desmontaketa   xabix2,more
Ordenagailuaren desmontaketa xabix2,moreunai moreno
 
Presentación 2
Presentación 2Presentación 2
Presentación 2Paula
 
Presentación 2
Presentación 2Presentación 2
Presentación 2Paula
 
WIRELESS SARE ADIBIDEA
WIRELESS SARE ADIBIDEAWIRELESS SARE ADIBIDEA
WIRELESS SARE ADIBIDEAamaiora
 
Infor.rafael.blazquez
Infor.rafael.blazquezInfor.rafael.blazquez
Infor.rafael.blazquezleorafardo
 
zer da informatika
zer da informatikazer da informatika
zer da informatikaainarabello
 
Oinarrizko imformatika mikel martinez
Oinarrizko imformatika mikel martinezOinarrizko imformatika mikel martinez
Oinarrizko imformatika mikel martinezslidemount
 
Oinarrizko imformatika mikel martinez
Oinarrizko imformatika mikel martinezOinarrizko imformatika mikel martinez
Oinarrizko imformatika mikel martinezslidemount
 
Informatika eta ordenagailua
Informatika eta ordenagailuaInformatika eta ordenagailua
Informatika eta ordenagailuaAnder Rodriguez
 

Similar to Arduino wall e - dok (20)

Lanaren aurkezpena
Lanaren aurkezpenaLanaren aurkezpena
Lanaren aurkezpena
 
Oinarrizko lana
Oinarrizko lanaOinarrizko lana
Oinarrizko lana
 
Ordenagailua eta informatika
Ordenagailua eta informatikaOrdenagailua eta informatika
Ordenagailua eta informatika
 
Informatika eta ordenagailua
Informatika eta ordenagailua Informatika eta ordenagailua
Informatika eta ordenagailua
 
Informatika eta ordenagailua
Informatika eta ordenagailuaInformatika eta ordenagailua
Informatika eta ordenagailua
 
Informatika eta ordenagailua
Informatika eta ordenagailuaInformatika eta ordenagailua
Informatika eta ordenagailua
 
Ordenagailuaren desmontaketa xabix2,more
Ordenagailuaren desmontaketa   xabix2,moreOrdenagailuaren desmontaketa   xabix2,more
Ordenagailuaren desmontaketa xabix2,more
 
Ordenagailuaren desmontaketa xabix2,more
Ordenagailuaren desmontaketa   xabix2,moreOrdenagailuaren desmontaketa   xabix2,more
Ordenagailuaren desmontaketa xabix2,more
 
Ordenagailuaren desmontaketa xabix2,more
Ordenagailuaren desmontaketa   xabix2,moreOrdenagailuaren desmontaketa   xabix2,more
Ordenagailuaren desmontaketa xabix2,more
 
Presentación 2
Presentación 2Presentación 2
Presentación 2
 
Presentación 2
Presentación 2Presentación 2
Presentación 2
 
WIRELESS SARE ADIBIDEA
WIRELESS SARE ADIBIDEAWIRELESS SARE ADIBIDEA
WIRELESS SARE ADIBIDEA
 
Infor.rafael.blazquez
Infor.rafael.blazquezInfor.rafael.blazquez
Infor.rafael.blazquez
 
zer da informatika
zer da informatikazer da informatika
zer da informatika
 
Oinarrizko imformatika mikel martinez
Oinarrizko imformatika mikel martinezOinarrizko imformatika mikel martinez
Oinarrizko imformatika mikel martinez
 
Oinarrizko imformatika mikel martinez
Oinarrizko imformatika mikel martinezOinarrizko imformatika mikel martinez
Oinarrizko imformatika mikel martinez
 
Informatika eta ordenadorea (1)
Informatika eta ordenadorea (1)Informatika eta ordenadorea (1)
Informatika eta ordenadorea (1)
 
Ariketa 2
Ariketa 2Ariketa 2
Ariketa 2
 
Ariketa 2
Ariketa 2Ariketa 2
Ariketa 2
 
Informatika eta ordenagailua
Informatika eta ordenagailuaInformatika eta ordenagailua
Informatika eta ordenagailua
 

More from Tolosaldea TLHI

Web gune baten sorkuntza joomlarekin - dok
Web gune baten sorkuntza joomlarekin - dokWeb gune baten sorkuntza joomlarekin - dok
Web gune baten sorkuntza joomlarekin - dokTolosaldea TLHI
 
Virtual box eskuliburua dok
Virtual box eskuliburua   dokVirtual box eskuliburua   dok
Virtual box eskuliburua dokTolosaldea TLHI
 
Software hardware librea - dok
Software hardware librea - dokSoftware hardware librea - dok
Software hardware librea - dokTolosaldea TLHI
 
Linux distribuzio bat sortzen dok
Linux distribuzio bat sortzen   dokLinux distribuzio bat sortzen   dok
Linux distribuzio bat sortzen dokTolosaldea TLHI
 
Baskula kudeatzeko web aplikazioa - dok
Baskula kudeatzeko web aplikazioa - dokBaskula kudeatzeko web aplikazioa - dok
Baskula kudeatzeko web aplikazioa - dokTolosaldea TLHI
 
Virtual box eskuliburua dok
Virtual box eskuliburua   dokVirtual box eskuliburua   dok
Virtual box eskuliburua dokTolosaldea TLHI
 
Web gune baten sorkuntza wordpressekin - dok
Web gune baten sorkuntza wordpressekin - dokWeb gune baten sorkuntza wordpressekin - dok
Web gune baten sorkuntza wordpressekin - dokTolosaldea TLHI
 
Sare sozial korporatiboak yammer - dok
Sare sozial korporatiboak yammer - dokSare sozial korporatiboak yammer - dok
Sare sozial korporatiboak yammer - dokTolosaldea TLHI
 

More from Tolosaldea TLHI (14)

Agenda digitala
Agenda digitalaAgenda digitala
Agenda digitala
 
Web gune baten sorkuntza joomlarekin - dok
Web gune baten sorkuntza joomlarekin - dokWeb gune baten sorkuntza joomlarekin - dok
Web gune baten sorkuntza joomlarekin - dok
 
Virtual box eskuliburua dok
Virtual box eskuliburua   dokVirtual box eskuliburua   dok
Virtual box eskuliburua dok
 
Ubuntu inplantatzen dok
Ubuntu inplantatzen   dokUbuntu inplantatzen   dok
Ubuntu inplantatzen dok
 
Software hardware librea - dok
Software hardware librea - dokSoftware hardware librea - dok
Software hardware librea - dok
 
Me zow server 12.04 dok
Me zow server 12.04   dokMe zow server 12.04   dok
Me zow server 12.04 dok
 
Linux distribuzio bat sortzen dok
Linux distribuzio bat sortzen   dokLinux distribuzio bat sortzen   dok
Linux distribuzio bat sortzen dok
 
Euskara softwarean dok
Euskara softwarean   dokEuskara softwarean   dok
Euskara softwarean dok
 
Baskula kudeatzeko web aplikazioa - dok
Baskula kudeatzeko web aplikazioa - dokBaskula kudeatzeko web aplikazioa - dok
Baskula kudeatzeko web aplikazioa - dok
 
Undervolting dok
Undervolting   dokUndervolting   dok
Undervolting dok
 
Virtual box eskuliburua dok
Virtual box eskuliburua   dokVirtual box eskuliburua   dok
Virtual box eskuliburua dok
 
Web gune baten sorkuntza wordpressekin - dok
Web gune baten sorkuntza wordpressekin - dokWeb gune baten sorkuntza wordpressekin - dok
Web gune baten sorkuntza wordpressekin - dok
 
Ecommerce dok
Ecommerce   dokEcommerce   dok
Ecommerce dok
 
Sare sozial korporatiboak yammer - dok
Sare sozial korporatiboak yammer - dokSare sozial korporatiboak yammer - dok
Sare sozial korporatiboak yammer - dok
 

Arduino wall e - dok

  • 1. Proiektu honetan Arduino plataformarekin lan egingo dugu. Bertan Arduino lengoaia nolakoa den ikusiko dugu hainbat adibide erabilita eta Wall-e errobot bat ere programatuko dugu. Honek 3 serbomotore(eskuak eta burua), 2 LED(begiak), buzzer 1(soinua), bluetooth modulo bat, 2 DC motore(gurpilak) eta ultrsoinu modulo(distantzia neurtzeko) bat izango ditu. Hauek gure Wall-e errobota mugitzeko eta erreakzionatzeko erabiliko ditugu. ARDUINO
  • 2. Wall-e Arduino 1 Aurkibidea Sarrera..........................................................................................................................................................2 Zer da? .....................................................................................................................................................2 Zer behar dugu?.......................................................................................................................................2 Arduino ezaugarriak (Pin-ak)....................................................................................................................2 Lengoaia .......................................................................................................................................................3 Egitura......................................................................................................................................................3 Aldagaiak..................................................................................................................................................3 Funtzioak..................................................................................................................................................3 Softwarea .....................................................................................................................................................4 Instalazioa ................................................................................................................................................4 Lehen bista...............................................................................................................................................5 Sketch-ak (Kodea).........................................................................................................................................6 Egitura......................................................................................................................................................6 delay (geldiunea) .................................................................................................................................6 digitalWrite..........................................................................................................................................6 analogWrite .........................................................................................................................................6 Komunikazioa...........................................................................................................................................6 Komunikazio seriala (PC-tik) ................................................................................................................6 Komunikazio seriala (Bluetooth)..........................................................................................................6 Kontrola....................................................................................................................................................7 IF erabiliz..............................................................................................................................................7 CASE erabiliz ........................................................................................................................................7 random (Ausazko zenbakia).....................................................................................................................7 LED-a piztu eta itzali.................................................................................................................................8 Datuak irakurri eta imprimatu .................................................................................................................8 print eta println (imprimatu) ...............................................................................................................8 echo eta trig (Ultrasoinua) .......................................................................................................................9 Buzzer.......................................................................................................................................................9 Serbomotoreak ......................................................................................................................................10 Motoreak ...............................................................................................................................................11 Komandoak objektuetan gorde..................................................................................................................12 Wall-e Kodea ..............................................................................................................................................13 Bibliografia..................................................................................................................................................20
  • 3. Wall-e Arduino 2 Sarrera Zer da? Arduino sfoftware libreko plataforma elektronikoa da, hardware eta software irekiak eta flexibleak erabiliz prototipoak sortzeko erabiltzen dena. Arduino-ren pin-ak gure ingurumenetik informazioa lortu dezakete hainbat sentsore erabiliz eta hauen bitartez LED-ak, motorrak eta horrelako gauzekin eragin dezakete. Xafla programatzeko Arduino Lengoaia erabiltzen da, hau C/C++. Zer behar dugu? Proiektu honetan hainbat gauza erabili ditugu errobota egiteko:  Arduino Leonardo x1  Serbomotoreak x3  DC motoreak x2  Buzzer modulua x1  Ultrasoinu modulua x1  Bluetooth moduloax1 Arduino ezaugarriak (Pin-ak) Atal honetan gure arduinoaren pinak ikusi eta azalduko ditugu. Hau da guk erabiliko dugun xafla: Arduino Leonardo. Pin-ak  5V/3.3V: Pin positiboak, gure moduluei 5V edo 3.3V-ko potentzia emango die.  GND: Pin negatiboa.  Vin: 9V potentzia sartu diezaiokegu edo 9V potentzia atera  Pin Digitalak: Hauek 2 balore dituzte LOW eta HIGH(itzalita eta piztuta). o PWM~ simboloa dutenak 0 eta 255-en arteko balorea hartu dezakete  Pin Analogikoak: PWM-ak bezalakoak. 0 eta 255-en arteko balorea hartu dezakete.  IOREF: Pin honekin mikrokontrolagailuaren tentsioa irakurri ditzakegu.  RESET: Hau Arduino xafla berrabiarazteko botoia da.  RESET: Hemen botoi bat konektatu dezakegu reset botoia bezala erabiltzeko.  SCL/SDA: I2C eta TWI dispositiboak konektatzeko balio du.  AREF: 5V baino txikiagoko potentzia erabiltzeko. Hemen jarritako potentzia xaflak erabiliko duena da.  TX/RX: Komunikazio serial-erako erabiltzen dira.  ICSP: USB interfazeak konektatzeko.
  • 4. Wall-e Arduino 3 Lengoaia Arduino plakaren lengoaia C eta C++ lengoaietan oinarritzen da. Xafla programatzeko sketch-ak erabiltzen dira eta hauek hiru zatitan bana daitezke: Estruktura, aldagaiak eta funtzioak. Ondorengo taulan proiektu honetan erabiliko ditugunak bakarrik daude, egitura, aldagai eta funtzio bakoitza Arduino-ren web orrira darama bertako azalpena ikusi ahal izateko. Egitura Aldagaiak Funtzioak Egitura  setup() (Hasiera)  loop() (Begizta) Sintaxia  ; (Puntu eta koma)  {} (Giltzak)  // (Iruzkinak) Kontrol Egiturak  if (Konparaketa. Hau izanda, hau egin)  if...else (Konparaketa. Hau egin, bestela... )  for (Begizta zenbatzailea)  switch case (Konparaketa anitza)  while (Begizta boolean konparaketarekin)  break (Kodearen hausketa) Operadore Aritmetikoak  = (Berdin) Operadore Konparatiboak  == (Hau bestearen berdina)  < (Hau bestea baino txikiagoa)  > (Hau bestea baino handiagoa )  <= (Hau bestea baino txikiagoa edo berdina)  >= (Hau bestea baino handiagoa edo berdina) Konposizio Operadoreak  ++ (Haunditu) Constantes  HIGH | LOW (Altua/Baxua)  INPUT | OUTPUT (Sarrera/Irteera)  true | false (Egia/Gezurra  Constantes Numéricas Tipos de Datos  char (Karaktereak)  int (Osoa)  float (Komarekin)  void (Hutsa) Konbersioa  char()  int()  float() E/S Digitalak  pinMode()  digitalWrite()  digitalRead() E/S Analogikoak  analogRead()  analogWrite() - PWM (modulación por ancho de pulso) E/S Aurreratuak  tone()  noTone()  shiftOut()  pulseIn() Denbora  delay() Ausazko Zenbakiak  random() Komunikazioa  Serial
  • 5. Wall-e Arduino 4 Softwarea Instalazioa Gure Arduinoa programatzeko lehenengo softwarea behar dugu. Software hau web orri ofizialetik deskargatu dezakegu:  Web ofizialera joango gara: http://www.arduino.cc/es/  Hondoren ‘Download’ atalera joan beharko gara:  Download atalean gure sistema aukeratu beharko dugu, gure kasuan: Windows Installer.  Deskargatzen denean ireki egingo dugu, eta pausoak jarraituko ditugu:  Instalatzean honelako ikonoa agertuko zaigu.
  • 6. Wall-e Arduino 5 Lehen bista Software honetan gure kodigoa idatziko du. Hau da lehenik prestatu behar dena.  Irekitzean ikusten den koadro zurian kodigoa idazten da.  Gure xaflaren modeloa aukeratuko dugu. Herramientas-Tarjetas-Arduino Leonardo.  Hondoren usb-tik xafla konektatu eta Herramientas-Puerto serial-COM X aukeratu.  Monitore Seriala irekitzeko Herramientas-Monitor Serial aukeratu.  Horrelako terminal txuria irekiko da.
  • 7. Wall-e Arduino 6 Sketch-ak (Kodea) Sketch-ak gure kodea dira. Softwarearekin hauek gorde eta hainbat ezberdin izan ditzazkegu. Egitura void setup(){ } Setup() funtzioan Arduino plakaren pinak ezartzeko erabiltzen da (adibidez led bat bigarren pinan jartzen dugula), objektuak sortu ditzakegu eta hauen barruan komandoak ezarri (hau komando berbera behin eta berriz ez idazteko erabiltzen da) eta bertan ere libreriak ezarri ditzakegu. void loop(){ } loop() funtzioa begizta bat da, hau da, bertakoa behin eta berriz exekutatuko du gure Arduino-ari komunikatzeko aukera emanez. delay (geldiunea) Arduino kodean geldiuneak egiteko delay-a erabiltzen da, hau milisegundotan adierazten dira eta ezarritako denbora pasa beharko da kodearekin jarraitzeko. Adib: delay(2000); //Hau kodea bi segundo geldituko du. digitalWrite Pin digitalei HIGH edo LOW (Piztu edo itzali) balorea emateko erabiltzen dira. Adib: LED batekin digitalWrite (5, HIGH); //Hau bosgarren pinan konektatutako LED-a pizten du. analogWrite Pin digitalei HIGH edo LOW (Piztu edo itzali) balorea emateko erabiltzen dira. Adib: LED batekin analogWrite (5, 100); //bosgarren pinan konektatutako LED-ari ehuneko balorea ematen dio. Komunikazioa Komunikazio seriala (PC-tik) Komunikazio seriala Arduino-rekin komunikatzeko erabiliko dugu PC-aren bitartez. Proiektu honetan bluetooth komunikazioa erabili da baina proiektuko adibideak komunikazio hau erabiliko dute. Hemen dugu eskema: void setup() { Serial.begin(9600); //Komunikazio seriala pizten du 9600 baudioetara } //Baudio: Transmisio digital batean zenbat bit bidaltzen diren segundoro. void loop() { if(Serial.available() > 0) { //Komunikazio seriala 0 bit baino altuagoa bada //HEMEN GURE KODIGOA } // if(Serial.available() > 0) itxiko du. Komunikazio seriala (Bluetooth) Komunikazio seria bluetooth-aren bidez egiteko gure bluetooth moduluaren TX pina Arduinoaren RX pinarekin konektatuko dugu eta RX pina TX- pinarekin. void setup() { Serial1.begin(9600); //Komunikazio serial2-a pizten du 9600 baudioetara } void loop() { if(Serial1.available() > 0) { //Komunikazio serial2-a 0 bit baino altuagoa bada //HEMEN GURE KODIGOA } //if(Serial2.available() > 0) itxiko du.
  • 8. Wall-e Arduino 7 Kontrola Monitore serialetik hitzak edo hizkiak bidaliz xaflak guk programatutakoa egingo du. IF erabiliz void setup() { Serial.begin(9600); } void loop() { if(Serial.available() > 0) { int var = Serial.read(); //Objektu bat ‘var’ izenekoa. Serial portutik idatzitakoa bertan gordeko da. if (var == '0'){ //var ‘0’ baldin bada bada ondorengoa egingo du: //HEMEN GURE KODIGOA } //if (var==’0’) itxiko du. //Hemen if (var==’x’) gehiago joan daitezke bakoitza bere kodigoarekin. else { //’var’ objektua ezarrita ez badago ondorengoa egingo du //HEMEN GURE KODIGOA } } //if(Serial.available() > 0) itxiko du. CASE erabiliz Proiektuan batez ere CASE kontrol egitura erabili da, beraz, adibideetan hau erabiliko da. void setup() { Serial.begin(9600); } void loop() { if(Serial.available() > 0) { int var = Serial.read(); //Objektu bat ‘var’ izenekoa. Serial portutik idatzitakoa bertan gordeko da. switch (var) { //Hondorengo ‘case’-ak ‘var’ objetuarekin konparatuko ditu case '0': //’var’ objetua ‘0’ baldin bada ondorengoa egingo du: //Hemen gure kodigoa break; //case ‘0’-a bukatuko du. //Hemen case ‘x’: gehio jarri daitezke. } // switch (var) itxiko du }} random (Ausazko zenbakia) void setup() { } void loop() { int numeroaleatorio = random(3); //Objektu bat sortuko dugu 'numeroaleatorio' izenarekin. Honek random funtzioa erabiliko du eta 0-tik 3-ra zenbaki bat aukeratuko du (berak nahi duena) Serial.println(numeroaleatorio); //Terminalean ‘numeroaleatorio’ objektua inprimatuko digu. delay(2000); //tiempo de espera de 2 segundos switch (numeroaleatorio) { //Switch funtzioa 'numeroaleatorio' objektuarekin habiaraziko du. case 0: //’numeroaleatorio’ objetua 0 edo 1 denean ondorengoa egingo du: case 1: // Serial.println ("ASD"); //Terminalean ‘ASD’ inprimatiko digu delay(2000); //kodea 2 segundo geldituko du. break; case 2: //si el objeto 'numeroaleatorio' es igual a '2' Serial.println ("QWE"); //’numeroaleatorio’ objetua 0 edo 1 denean ondorengoa egingo du: delay(2000); //kodea 2 segundo geldituko du. break; } }
  • 9. Wall-e Arduino 8 LED-a piztu eta itzali Case-ak erabiliz LED-a piztu eta itzaliko dugu. - LED-aren positiboa xaflaren 13 pin-ean konektatuta egongo da. (LED baten positiboa makil luzea da). - LED-aren negatiboa xaflaren GND pin batean (nahi duna erabili dezakegu). (LED baten negatiboa makil motza da). int ledPin = 13; // ‘ledPin’ objetua 13. pin-a(LED-a) izango da. void setup() { Serial.begin(9600); } void loop() { if(Serial.available() > 0) { int var = Serial.read(); switch (var) { //ondorengo kasuak (case) ‘var’ objetuarekin konparatuko ditu. case '0': digitalWrite(ledPin, HIGH); //‘ledPin’ objetua HIGH balorera aldatuko da (LED-a piztuko da). break; case '1': //hacer algo cuando sea igual a 1 digitalWrite(ledPin, LOW); //‘ledPin’ objetua HIGH balorera aldatuko da (LED-a piztuko da). break; else digitalWrite(ledPin, HIGH); //‘ledPin’ objetua HIGH balorera aldatuko da (LED-a piztuko da). } } } Datuak irakurri eta imprimatu print eta println (imprimatu) Honekin gure Arduino plaka terminalean guk esandakoa inprimatuko digu. void setup() { Serial.begin(9600); // Komunikazioa serie portutik irekiko du 9600 baudio-tara (abiadura) } void loop() { Serial.print("ASD"); // Serial portutik ‘ASDASDASD…’ bidaliko digu hitzak bata bestearen atzetik jarrita. Serial.println("ASD"); // Serial portutik ‘ASD ASD ASD…’ bidaliko digu hitz bakoitza lerro bakarrean jarrita. delay(1000); // Segundo bateko delay bat jarriko diogu programa trabatuta ez geratzeko. } Serial.prin Serial.println
  • 10. Wall-e Arduino 9 echo eta trig (Ultrasoinua) Ultrasoinu moduloa Arduinoa zenbateko distantzia duen ikusteko balioko digu. Hau gure errobota paretekin ez jotzeko balioko digu. Honek 4 pin ditu: trigger, echo, 5V eta GND int trigger=A0; //’trigger’ objetua A0 pinean, pin analogikoetan egongo da.(moduloaren trigger pina). int echo=A1; // echo objetua A1 pinean pin analogikoetan egongo da.(moduloaren echo pina). int distantzia; //’distantzia’ izeneko objektua sortuko dugu void setup() { pinMode(trigger, OUTPUT); //’trigger’ pina OUTPUT bezala jarriko dugu ultrasoinua bidaliko duelako. pinMode(echo, INPUT); //’echo’ pina INPUT bezala jarriko dugu ultrasoinua jasoko duelako. } void loop() { digitalWrite(trigger,HIGH); //trigger pinari HIGH balorea emanez ultrasoinua bidaliko du. delayMicroseconds(10); //’delay’ bat egingo dugu digitalWrite(trigger,LOW); //trigger pinari LOW balorea emanez ultrasoinua geldituko dugu distantzia=pulseIn(echo,HIGH); //’echo’ pina ‘trigger’ pina irakurriko du HIGH balorea hartu duen momentutik LOW balorera aldatu de arte. Honek neurri bat emango digu: Pultsu zabalera mikrosegundotan. Neurri hori ‘distantzia’ objetuan gordeko du. Serial.println(distantzia); //Serial monitoretik ‘distantzia’ objetua inprimatuko digu delay(1000); } Ondoko adibidean 6000 baino gehiagoko zenbakiak distantzia dezente dute eta 1000 baino gutxiagoko zenbakiak distantzia gutxi dute Buzzer Buzzer-a bozgorailu txiki bat da, guk musika jotzeko erabiliko dugu. Hau A2 pinera konektatu dugu (Pin analogikoetara). int iraupena=575; //gure notaren durazioa microsegundutan int nota1=349.228231; //erreproduzitu nahi dugun notaren hertzio-ak. int a=0; //’a’ objetua hutxa egongo dena bertan nota berriro kalibratu ahal izateko. void setup(){ Serial.begin(9600); pinMode (A2, OUTPUT); //’A2’ pina OUTPUT bezala konfiguratuko dugu soinua ateratzeko. } void loop(){ while (Serial.available()){ char dato= Serial.read(); switch(dato) { case'1': { for (a=nota1;a<=nota1; a++) //‘a’ objetuan ‘nota1’ sartuko dugu, ‘a’ objetua ‘nota1’ baino txikiagoa bada, ‘a’ objetua errepikatuko da. tone(A2, a, iraupena); //Erreproduzituko duen soinua ‘A2’ pinetik aterako da ‘a’ objetukoa entzungo dugu eta ‘iraupena’ objektuan jarritakoa iraungo du. break; } } } }
  • 11. Wall-e Arduino 10 Serbomotoreak Gure errobotaren besoak eta burua mugitzeko sebomotoreak erabiliko ditugu. Motore hauek 0 eta 180 graduen arteko mugimendua dute. Serbomotoreak <Servo.h> liburutegiarekin erabiltzen dira. Honekin gure serbomotoreak edozein pin digitalean jarri ditzakegu eta gainera Servo komandoa edukiko dugu kodean jarri ahal izateko. #include <Servo.h> //servoak pin digitaletan jartzeko erabiliko dugun liburutegia Servo serbo1; //’serbo1’ izeneko objektu bat sortuko dugu Servo motatakoa izango dena. void setup() { Serial.begin(9600); serbo1.attach(2); //’serbo1’ objetua bigarren pinan jarrita dagoela esango diogu. } // Serbo motoreak zein pinetan dauden ‘void setup(){}’ atalean ezartzen dira. void loop() { while (Serial.available()){ char dato= Serial.read(); switch(dato) { case'1': { serbo1.write(0); //’serbo1’ objetua ‘0’ gradura mugituko da. delay(1000); break; } case'2': { serbo1.write(180); //’serbo1’ objetua ‘180’ gradura mugituko da. break; } } } } 180º 0º
  • 12. Wall-e Arduino 11 Motoreak Errobotak 2 gurpil izango ditu beraz bi DC motor erabiliko ditugu. Arduino-ak bakarrik ezin du motorrei behar duten tentsioa eman, hau egiteko motor kontrolagailu bat behar dugu. Guk L298N kontrolagailua erabili dugu. Honek 2 DC motor kontrolatzeko aukera ematen digu. Sei konektore ditu: ENA IN1 IN2 ENB IN3 IN4  ENA: Pin honek IN1 eta IN2 pinak pizten ditu. o IN1/IN2 hauetako pin bat HIGH balorea emanez(eta besteari LOW) motorra alde batera edo bestera mugituko da (aurrera edo atzera).  ENB: Pin honek IN3 eta IN4 pinak pizten ditu. o IN2/IN3 hauetako pin bat HIGH balorea emanez(eta besteari LOW) motorra alde batera edo bestera mugituko da (aurrera edo atzera). int ENA=5; //5 pina motor kontrolagailuaren ENA pinera konektatuta dago. ENA motorra pizten du. int IN1=6; //6 pina kontrolagailuaren IN1 pinera konektatzen da. IN1 motorraren lehen kablea bat da. int IN2=7; //7 pina kontrolagailuaren IN2 pinera konektatzen da. IN2 motorraren bigarren kablea da. int ENB=8; //8 pina motor kontrolagailuaren ENB pinera konektatuta dago. ENB motorra pizten du. int IN3=9; //9 pina kontrolagailuaren IN3 pinera konektatzen da. IN3 motorraren lehen kablea da. int IN4=10;//10pina kontrolagailuaren IN4 pinera konektatzen da. IN4 motorraren bigarren kablea da. void setup() { Serial1.begin(9600); } void loop() { if(Serial1.available() > 0) { int var = Serial1.read(); switch (var) { case '0': digitalWrite(IN1,HIGH); //Lehen motorraren IN1 kableari HIGH balorea jartzen dio. digitalWrite(IN2,LOW); //Lehen motorraren IN2 kableari LOW balorea jartzen dio. digitalWrite(IN3,HIGH); //Bigarren motorraren IN3 kableari HIGH balorea jartzen dio. digitalWrite(IN4,LOW); //Bigarren motorraren IN4 kableari LOW balorea jartzen dio. delay(2000); digitalWrite(IN1,LOW); // Pinei LOW balorea emango diegu motorrak geldik uteko. digitalWrite(IN2,LOW); // Pinei LOW balorea emango diegu motorrak geldik uteko. digitalWrite(IN3,LOW); // Pinei LOW balorea emango diegu motorrak geldik uteko. digitalWrite(IN4,LOW); // Pinei LOW balorea emango diegu motorrak geldik uteko. break; } } } Taulan motorraren konbinaketa posibleak ikusi ditzakegu: AURRERA ESKUINERA EZKERRERA ATZERA GELDIRIK IN1 HIGH LOW HIGH LOW LOW IN2 LOW HIGH LOW HIGH LOW IN3 HIGH HIGH LOW LOW LOW IN4 LOW LOW HIGH HIGH LOW Balore hauekin aurrera doa Balore hauekin aurrera doa
  • 13. Wall-e Arduino 12 Komandoak objektuetan gorde Komandoak objektuen barruan gorde daitezke, honela objektuari deituz guk ezarritako kodea habiatuko du. Hau eginez gero ez daukagu behin eta berriz berdina idatzi behar, eta, gainera objektuan komandoa aldatuz erabili dugun tokietan ere aldatuko da. int ledbegiak = 13; void begipiztuak(){ //objektu bat sortuko dugu void(hutsa) formatuan ‘begipiztuak()’ izenekoa eta bertan ‘ledbegiak’ objetuari HIGH balorea emango diogu digitalWrite(ledbegiak, HIGH); } void begiitzaliak(){//objektu bat sortuko dugu ‘begiitzaliak()’ izenekoa eta bertan ‘ledbegiak’ objetuari LOW balorea emango diogu digitalWrite(ledojos, LOW); } void setup() { Serial.begin(9600); pinMode(ledbegiak, OUTPUT); } void loop(){ while (Serial.available()){ char dato= Serial.read(); switch(dato) { case'h': { begipiztuak(); //’begipiztuak’ objetuari deitzen diogu eta honek ‘ledbegiak’ objetuari HIGH balorea emango diogu. break; } case'g': { begiitzaliak(); //’begiitzaliak’ objetuari deitzen diogu eta honek ‘ledbegiak’ objetuari LOW balorea emango diogu. break; } } } } Wall-e errobotaren kodigoan hainbat kodigo objektuetan gorde ditugu hau bezala.
  • 14. Wall-e Arduino 13 Wall-e Kodea Orain Wall-e errobotaren kodea ikusiko dugu. Dena txikitu da gauzak ez errepikatzeko. Ezaugarriak:  2 LED: Begiak.  3 serbomotore: Eskuak eta burua.  Buzzer bat.  Ultrasoinu bat.  Bluetooth moduloa.  2 DC motore.  Motor Kontrolagailu bat. //LIBRERIA SERVOS #include <Servo.h> //Serbomotorren liburutegia ezarriko dugu //RANDOM int var = random(10); // Random hau wall-e errobotaren autonomia buklean uzteko erabiliko dugu. //ULTRASOINUA int trigger=A0; //ultrasoinuen pinak ezarriko ditugu pin analogikoetan int echo=A1; int distancia; //’distancia’ objektua erabiliko dugu ultrasoinuaren datuak bertan gordetzeko //LED BEGIAK int ledojos = 13; //13 pinera konektatut dagoen ‘ledojos’ izena duen objektua //SONIDO int buzzer = 5; //5 pinera konektatut dagoen ‘buzzer izena duen objektua //DURAZIOA int duracion=275; ////gure notaren durazioa microsegundutan … //Hemen guk nahi ditugunak jarriko ditugu. //NOTAK Hz int nota1=293.664768; // 'nota1' objetua nota baten hertzioak gordetzeko gero erreproduzitzeko. … //Hemen guk nahi ditugunak jarriko ditugu //OBJEKTUAK int a=0//’a’ objetua nota berriro kalibratu ahal izateko. … //MOTORES int ENA=5; // 5 pina motor kontrolagailuaren ENA pinera konektatuta dago. int IN1=6; //6 pina motor kontrolagailuaren IN1 pinera konektatuta dago. ... //SERVOMOTORES Servo servo1; // WALL-E BURUA // Servo servo2; // WALL-E ESKUIN ESKUA Servo servo3; // WALL-E EZKER ESKUA //MOBIMIENTUA PROGRAMATUAK+++++++++++++++++++++++++++++++++++++++++++++++++++++++ //BEGIAK //BEGIAK PIZTU void ojosencendidos(){ //Mugimenduak objetuetan gordeko ditugu. digitalWrite(ledojos, 255); } …
  • 15. Wall-e Arduino 14 //CABEZA //0 GRADOS void cabeza0(){ servo1.write(0); //BRAZO DERECHO //O GRADOS int brazoderecho0(){ servo2.write(0); } //BRAZO IZQUIERDO //0 GRADOS int brazoizquierdo0(){ servo3.write(0); } //ULTRASONIDO void ultrasonido(){ digitalWrite(trigger,HIGH); delayMicroseconds(10); digitalWrite(trigger,LOW); distancia=pulseIn(echo,HIGH); Serial.println(distancia); } //MOTORES int adelante(){ digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); delay(2000); digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); } int adelante1(){ digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); delay(2000); } //GESTOS //RESET int reset(){ ojosencendidos(); servo1.write(90); servo2.write(0); servo3.write(180); }
  • 16. Wall-e Arduino 15 //BAILE int baile(){ for (a=nota1;a<=nota1;a++) tone(A2, a, duracion); servo1.write(90); servo2.write(0); servo3.write(90); delay(300); … } //INICIO============================================================================== void setup() { //PINES-------------------------------------------------------------------------------------------------------------------------------- //COMUNICACION SERIAL BLUETOOTH Serial1.begin(9600); // //ULTRASONIDO pinMode(trigger,OUTPUT); //’trigger’ objektua OUTPUT moduan ezarriko du pinMode(echo,INPUT); //’echo’ objektua INPUT moduan ezarriko du //LED OJOS pinMode(ledojos, OUTPUT); //’ledojos’ objektua OUTPUT moduan ezarriko du digitalWrite(ledojos, HIGH); //’ledojos’ objektuari HIGH balorea emango diogu //BUZZER pinMode (buzzer, OUTPUT); //’buzzer’ objektua OUTPUT moduan ezarriko du //SERVOMOTORES servo1.attach(2); //’servo1’ objektua 2 pinean ezartzen du servo2.attach(3); //’servo2’ objektua 3 pinean ezartzen du servo3.attach(4); //’servo3’ objektua 4 pinean ezartzen du //MOVIMIENTO DE INICIO------------------------------------------------------------------------------------------------------- //DESPERTAR despertar(); //Hau piztean Wall-e egingo dituen mobimentuak da. //SALUDO AL INICIO saludo(); //Hau piztean Wall-e egingo dituen mobimentuak da. //MOTORES pinMode(ENA,OUTPUT); pinMode(IN1,OUTPUT); … digitalWrite(ENA,HIGH); //Motorrak aktibatuko ditugu digitalWrite(ENB,HIGH); //Motorrak aktibatuko ditugu }
  • 17. Wall-e Arduino 16 //COMANDOS========================================================================= void loop() { while (Serial1.available()){ char dato= Serial1.read(); switch(dato) { case'h': { ojosencendidos(); //Begiak piztuko ditu break; } … //CABEZA case'i': { cabeza180(); //Burua 180º mugituko du break; } … //BRAZO DERECHO case'k': { brazoderecho0(); //Eskuina 0º mugituko du break; } … //BRAZO IZQUIERDO case'b': { brazoizquierdo180(); //Ezkerra 180º mugituko du break; } … //RESET case'r': { reset();//Eskuak jaitsi, burua zentratu eta begiak piztuko ditu break; } … //MOTORES //ADELANTE case'w': { adelante();//Aurrera mugituko da break; } … //BAILE case'0': { baile();//Dantzatu egingo du break; }
  • 18. Wall-e Arduino 17 //AUTONOMIA DEL WALL-E case'1': { //’1’ sakatzean: while(var < 200){ //While funtzioa irekiko du var objektua 200 baino txikiagoa bada ultrasonido(); //Lehenengo ultrasoinuarekin distantzia neurtuko dugu if (distancia>1000) { //’distancia’ objektua 1000 baino handiagoa bada: int numeroaleatorio = random(30); //’numeroaleatorio’ objektua sortuko dugu eta honek 0 eta 29 zenbakien arteko zenbaki bat gordeko du. Serial.println(numeroaleatorio); //’numeroaleatorio’ objektua inprimatuko dugu switch (numeroaleatorio) { //switch funtzioa irekiko du ‘numeroaleatorio’ objektuarekin case 0: //’numeroaleatorio’ 0 izatean: atzera1(); //Wall-e atzera joango da. break; case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 15: reset();//Errobotaren eskuak eta burua zentratuko dira eta begiak piztuko ditu. adelante1(); //Wall-e aurrera joango da. break; case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 25: adelante1(); //Wall-e aurrera joango da. break; case 13: case 23: derecha1();//Wall-e eskuinera joango da. break; case 14: case 24 izquierda1();//Wall-e ezkerrera joango da. break;
  • 19. Wall-e Arduino 18 case 26: case 27: case 28: case 29: quieto();//Wall-e gelditu egingo da. break; } int numeroaleatorio1=random(30,60); //’numeroaleatorio1’ objektua sortuko dugu eta honek 30 eta 59 zenbakien arteko zenbaki bat gordeko du. Serial.println(numeroaleatorio1); delay(1000); switch (numeroaleatorio1){ // switch funtzioa irekiko du ’numeroaleatorio1’ objektuarekin case 30: case 31: case 34: case 35: case 36: case 37: case 39: case 41: case 42: case 45: case 46: case 47: case 48: case 49: case 50: case 51: case 54: case 55: case 56: // Hauek ez dute ezer egiten delay(1000); break; case 52: //Burua 0º mugituko du cabeza0(); break; case 43: //Burua 180º mugituko du cabeza180(); break; case 53: //Eskuina 90º mugituko du brazoderecho90(); break;
  • 20. Wall-e Arduino 19 case 32: //Eskuina 180º mugituko du brazoderecho180(); break; case 38: //Ezkerra 90º mugituko du brazoizquierdo90(); break; case 57: //Ezkerra 180º mugituko du brazoizquierdo180(); break; case 58: //Eskuak gora mugituko ditu manosarriba(); break; case 59: //Eskuak behera mugituko ditu manosabajo(); break; case 40: //Eskuarekin agurra egingo du. saludo(); break; case 44: //Dantza egingo du baile(); break; } } else //’distancia’ objetua 1000 baino txikiagoa bada: { { izquierda1(); //Ezkerretara joango da } } } } } } }
  • 21. Wall-e Arduino 20 Bibliografia www.arduino.cc: http://www.arduino.cc/es/  Sarrera: http://arduino.cc/es/Guide/Introduction  Lengoaia: http://arduino.cc/es/Reference/HomePage o Egiturak:  setup http://arduino.cc/es/Reference/Setup  loop: http://arduino.cc/es/Reference/Loop  if: http://arduino.cc/es/Reference/If  if/else: http://arduino.cc/es/Reference/Else o Aldagaiak:  Objektuak:  int: http://arduino.cc/es/Reference/Int  void: http://arduino.cc/es/Reference/Void  switch/case: http://arduino.cc/es/Reference/SwitchCase  break: http://arduino.cc/es/Reference/Break o Funtzioak:  Pin digitalak  Pin moduak: http://arduino.cc/es/Reference/PinMode  digitalWrite: http://arduino.cc/es/Reference/DigitalWrite  digitalRead: http://arduino.cc/es/Reference/DigitalRead  Pin analogikoak  analogRead: http://arduino.cc/es/Reference/AnalogRead  analogWrite: http://arduino.cc/es/Reference/AnalogWrite  Moduloak: o Buzzer: http://arduino.cc/es/Reference/Tone o Serbomotoreak: http://arduino.cc/es/Reference/Servo  Write: http://arduino.cc/es/Reference/ServoWrite  Attach: http://arduino.cc/es/Reference/ServoAttach Erabilitako Objetuak  arduino Leonardo: http://www.ebay.es/itm/Arduino-compatible-Revision-3-R3-Leonardo-with-Free-USB- Cable- /161248175039?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item258b23e3bf&_uhb=1#shpCntId  Ultrasoinu Moduloa: http://www.ebay.es/itm/Arduino-Modulo-Ultrasonico-HC-SR04-Sensor-Distancia- Medidor-Transductor-D1-/221333788165?pt=LH_DefaultDomain_186&hash=item3388859605&_uhb=1  Motor Kontrolagailua: http://www.ebay.es/itm/Modulo-de-servo-motor-controlador-conductor-L298N- arduino-PIC-step-D1-/231180228189?pt=LH_DefaultDomain_186&hash=item35d36a565d&_uhb=1  Pila kablea: http://www.ebay.es/itm/LOTE-KIT-PILA-BOToN-CR1220-3V-PORTAPILAS-CLIP-BATERIA- ELECTRONICA-ARDUINO-/261420369589?pt=LH_DefaultDomain_186&hash=item3cddde46b5&_uhb=1