dimecres, 14 de novembre del 2012

Arduino Hello World Blink + instalació de drivers

Hola a tots, suposo que si has arribat aquí és perquè ja saps què és l'Arduino.

Comencem pel més bàsic, encendre i apagar un led.

Material:

  • Placa Arduino (UNO)
  • Cable USB
  • Protoboard (opcional)
  • 1 Led (opcional, ja que porta un incorporat) (pota llarga positiu, curta negatiu o ho podeu mirar un cop tallades pel petit tall que te al plàstic al costat de la pota negativa, quedant així: "- D +")
  • 1 resistència de 1K ohms (marró, negre, vermell, or/plata) (opcional igual)
Volem fer la següent configuració:




















Primer necessitem el programa:  pàgina del software el descarreguem.

L'obrim, l'extraiem per exemple a l'escriptori.

Obrim la carpeta i fem doble clic sobre "arduino" i s'obre el programa. De moment no fa falta connectar l'arduino.

Aquesta és la interfície del programa. Tenim la barra superior amb diferents opcions, 
A sota una fletxa on diu verificar. Serveix per a mirar si hi ha algun error en el codi.
Una fletxa (carregar): fa la funció de verificar i compilar, després te'l puja automàticament a l'arduino. 
Nou, Obrir i Guardar, com sempre.


Per començar el codi podeu veure que hi ha un led al costat de la pota 13. Doncs just aquesta és a la que està connectat.

Doncs, definim el Led al programa:

"int led = 13;" 

int és una variable, en aquest cas el nom del led, que fa referència a un pin del microcontorlador.
Importantíssim posar punt i coma al acabar ja que si no no podria acabar l'acció i pensaria que es la mateixa la que continua...

Com no tenim res més a posar ja hem acabat les primeres declaracions. Més endavant ens trobarem amb els altres sensors i actuadors.

Ara ve la rutina de configuració, i ho farà cada com que li premem al botó reset o el connectem a una font d'alimentació.

"void setup() {" obrim corxera i al acabar la tancarem.

El primer que fem es configurar el Led com si fos una sortida escrivint de la següent manera:


"pinMode(led, OUTPUT);"
i tanquem: "}"

Ara ja vindria el programa en si. Com volem que s'ensengui i s'apagui sense parar escrivim:
"void loop() {" i aquí ens tocaria escriure el codi.

Per a encendre una pota/pin es fa amb una funció digitalWrite(pin, ESTAT); on pin podria ser un nom o variable que fa referència a un pin, i d'estat en digital n'hi ha dos. ON i OFF, que són HIGH i LOW respectivament. Un dóna 5 volts a la sortida i l'altre 0 volts.
Per encendre el led seria de la següent manera:

"digitalWrite(led, HIGH);"

Ara ens caldrà esperar una estona, es fa amb la funció de delay(Xmilisegon0s);
Mig segon seria 500 mili segons i un segon 1000 mili segons.
El mantindrem encès mig segon i l'apagarem.

"delay(500):
digitalWrite(led, LOW);"

Mantenim el led apagat durant mig segon:

"delay(500);"

I acabem d'escriure el programa tancant el void:

"}"

Un com s'acabi aquests mili segons tornarà al principi i s'encendrà altre cop, indefinidament fins que es quedi sense alimentació.
Quedarà així:




Connectem el cable a l'arduino i a l'ordinador:
Si ens surt que no es pot instal·lar els drivers ho fem manualment.
clic al símbol de "Windows" del sistema, abaix a l'esquerra de la pantalla, i sobre "Equipo" clic amb botó dret i a "Administrar".

Clic a "Administrador de dispositivos" i sobre el "otros dispositivos" botó dret i "Actualizar software de controlador"

"Buscar software de controlador en el equipo" i ens apareix el següent, si no està marcada la casella d'incloure sub carpetes marcar-la:
 Posem l'adreça de la carpeta on hem deixat abans el programa i acceptar.
Com podem veure s'ha canviat el nom. Ara continuem i ens apareix el següent:

Clic a "Instalar este software de controlador de todas formas" i apareix la barra de la instal·lació:

Un cop acabat "Cerrar" i podem anar tancant totes les finestres que hem obert.


Ara tornem al programa de l'arduino i clic a la fletxa blava:
Ja està! s'hauria d'encendre i apagar el led. I si volem variar la velocitat tan sols hem de canviar el valor 500 pel que ens interessi!

Si ens apareix: "avrdude: stk500_getsync(): not in sync: resp=0x00" podreu veure com s'arregla en un altre post que faré més endavant. El primer que us puc recomanar és que ho proveu en un altre ordinador!


El resultat el penjaré en un vídeo, per a que veieu com ha quedat!