INTRODUCCIÓ
Arduino és una placa de codi lliure, amb un suport software bastant bo, que permet editar, compilar i transferir el programa a la placa; però arduino és molt més i te un joc d'instruccions molt senzilles, i molt ben explicades a la seva pròpia web (http://arduino.cc/en/Reference/HomePage). Els inconvenients que presenta, és el seu preu(a partir de 23€) i la poca flexibilitat del hardware(impossibilitat de substituir components...). En conjunt, arduino es una eina que s'utilitza per crear prototips de robòtica.
PRIMERS PASSOS
El primer pas és descarregar-nos el software de la web d'arduino http://arduino.cc/en/Main/Software pel sistema operatiu que disposeu (personalment vaig provar d'instal·lar-lo a Linux i em va portar bastants problemes, aixi que ho explicaré per Windows).
Un cop hem descarregat el programa, el descomprimim, i desprès connectem la placa mitjançant un USB i seguim les següents instruccions:
anem a administrador de dispositius("device manager"):
seleccionem buscar software manualment("browse my computer for drive software"):
busquem el directori on hem descomprimit la carpeta d'arduino:
seleccionem instal·lar igualment("install this driver software anyway"):
quan acabi d'instal·lar ens hem de fixar a quin port("COM") tenim connectada la arduino, i executem el programa "arduino" que està dins a la carpeta que hem descomprimit:
seleccionem el model d'arduino que tinguem connectat:
per últim hem de seleccionar al port que tenim connectada la placa("COM") i llestos, ara ja podem començar a treballar:
COMENÇA LA PROGRAMACIÓ
L'estructura d'un programa per microcontrolador sempre és semblant, acostumen a ser programes iteratius(evitem recursivitat en microcontroladors, ja que la capacitat d'emmagatzemar adreces de retorn és limitada i probablement fallarà), com a programació bàsica, i més endavant introduir les interrupcions i els timers.
El programa típic per començar és un programa que encén i apaga un led connectat a una pota(es pot endollar directament el led de la pota a terra), el codi en arduino seria el següent:
void setup() { // la runtins setup només s'executa un cop
pinMode(2, OUTPUT); // configura la pota 2 com a sortida
}
void loop() { // la rutina loop s'executara sempre quan acabi tornarà a començar
digitalWrite(2, HIGH); // posa a 1 logic(5v) la pota 2
delay(1000); // pausa d'un segón
digitalWrite(2, LOW); //envia un 0 lògic(0v) a la pota 2
delay(1000);
delay(1000); // pausa d'un segón
digitalWrite(2, LOW); //envia un 0 lògic(0v) a la pota 2
delay(1000);
}
i per últim ensenyar un projecte que he dut a terme amb una arduino UNO. El codi és el següent:
/*Programa que controla 3 servomotors connectats als ports 9, 10 i 11, dels quals 2 es controlen mitjançant la lectura de 4 ports digitals(dels ports 5-8), els quals és configuren com a pull-up, i l'altre servomotor controlat per un potenciòmetre conectat a A0. És fa un bucle infinit on és comprova l'estat dels pins d'entrada i és re-calculen les posicions dels servos.*/
#include <Servo.h>
Servo servo1, servo2, servo3; // declaració d'objectes de la classe servo
int pos1, pos2, potenciometre; // enters auxiliars per acomular la posició dels servos
void setup(){
pinMode(5, INPUT_PULLUP); // configura els ports com a entrades amb pull up
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
servo1.attach(9); // rutina per incialitzar el servo conectat a la pota 9
servo2.attach(10);
servo3.attach(11);
pos1 = pos2 = 0; // inicialitza les posicions dels servos a 0 graus
servo1.write(pos1); // transfereix aquesta senyal a les potes
servo2.write(pos2);
}
void loop(){
if(digitalRead(5) && pos1 < 179) ++pos1; // incrementa la posició del servo 1 si, la
// lectura de la pota 5 és 1(lògic) i la posició del servo és menor de 179
if(digitalRead(6) &&pos1 > 1) --pos1;
if(digitalRead(7) && pos2 < 179) ++pos2;
if(digitalRead(8) && pos2 > 1) --pos2;
potenciometre = analogRead(A0); // fa una lectura analogica de la pota A0
potenciometre = map(potenciometre, 0, 1023, 0, 180); //la lectura analògica d'un
// port és entre 0 i 1024, amb aquesta funció la transforma entre 0 i 180
servo1.write(pos1);
servo2.write(pos2);
servo3.write(potenciometre);
delay(20);
}
/*a la foto es pot veure que a més vaig instal·lar un "pont h"(l293) per poder controlar el motor de corrent continua de la base*/
Com veieu, el codi per programar amb arduino és molt simple, fer un codi aixi et pot portar poc més de mitja hora(depenent de l'habilitat programant), i aquest mateix codi en c podria portar diverses hores, és per aquesta raó per la qual cada dia més gent utilitza aquesta eina.
Si teniu algun dubte sobre aquest post o sobre arduino en general, no dubteu en deixar un comentari al post o enviar-me un correu electrònic.








