El primer programa en Wiring.

Obriu al vostre ordinador l'entorn de programació Arduino i escriviu el següent programa:

/*
Aquest és un primer programa de prova en Wiring.

Funció:
=====
Connectant un díode, amb la seua resistència de limitació, entre la pota 13 de la placa Arduino i la referència a massa (pota "GND"), el LED s'encén i s'apaga intermitentment.

Autor: Joan Salelles.
====

Data: Desembre 2007.
====
*/

void setup() //Part setup, preparem tarja
{
pinMode(13, OUTPUT); // al pin on anem a connectar, el definim com eixida
}

void loop() // Part loop, programa que rodarà
{
digitalWrite(13, HIGH); // Posem pin 13 a ALT, si LED ben connec. farà llum
delay(1000); // esperem un segon (1000 ms)
digitalWrite(13, LOW); // Posem pin 13 a BAIX, s'apaga LED
delay(1000); // Tornem a esperar
}

Circuit a connectar

Per a vore en funcionament el programa aquest, primer hem de connectar el següent circuit a la placa. El circuit el podem muntar sobre una placa protoboard.
Circuit connexió intermitent
Com es pot vore i també es descriu al programa, es tracta de connectar un LED en sèrie amb la resistència de limitació d'intensitat entre els pins 13 i GND de la placa Arduino.
ATENCIÓ: he comés un error i tal com està dibuixat el circuit no funcionarà. Cal connectar el LED al revés: el càtode cap a GND i l'ànode cap al pin d'eixida.

Comentaris

Els comentaris d'un programa son textos que no intervenen en el funcionament del programa. Estan escrits en llenguatge normal i serveixen per:
  • Identificar el programa, l'autor i altres dades.
  • Explicar el funcionament d'alguna part del programa.
  • Explicar la funció d'alguna estructura de dades
  • Qualsevol altra funció de documentació.
En un programa Wiring podem utilitzar els mateixos dos tipus de comentaris que en C:
Comentaris multilínea: per posar explicacions llargues, de vàries línies:

/* Tot el que posem entre aquests símbols

serà tractat com un comentari. */

Comentaris d'una línia: explicacions de una sola línia. Molt utilitzat per explicar què fa una línia en concret del programa:

contador++; //Incrementem en 1 el contador.


Funció pinMode()

La funció aquesta serveix per indicar al micro-controlador quins dels seus pins anem a utilitzar com a eixida i quins com a entrada. La sintaxi és:

pinMode(pin, mode);

On:
  • pin és un valor de 0 a 13, indicant quin pin anem a definir.
  • mode ha de ser OUTPUT o INPUT
Aquesta funció se sol utilitzar a la part setup() dels programes.

Funció digitalWrite()

Aquesta funció serveix per posar a 0 o a 1 lògics els pins prèviament definits com eixides.

digitalWrite(pin, valor);
On:
  • pin número del pin que anem a "escriure".
  • valor que treurem pel pin, pot ser HIGH (1 lògic o +5Vcc) o LOW (0 lògic o GND).

Funció delay()

Serveix per esperar un temps sense que l'arduino faça res. La sintaxi és:
delay(temps);
El paràmetre temps és el número de milisegons d'espera.

Variables

Una cosa imprescindible que han de tindre tots els llenguatges de programació és una manera de guardar valors en memòria, per després poder treballar amb ells. Una variable és un lloc a la memòria del micro-controlador on podem desar diferents valors per un ús posterior. Les variables, en Wiring, han de ser definides abans de poder usar-les. Durant la definició s'ha de donar el nom de la variable i el tipus de dades que contindrà, a més, també podem enmagatzemar un valor inicial.
Al fer ús de variables incrementem moltíssim la flexibilitat d'un programa, la seua legibilitat i el seu futur desenvolupament i documentació. El programa d'abans, escrit fent ús de les variables podria quedar:

/*
Aquest és un primer programa de prova en Wiring,
modificat per fer ús de variables.

Funció:
=====
Connectant un díode, amb la seua resistència de limitació, entre la pota 13 de la placa Arduino i la referència a massa (pota "GND"), el LED s'encén i s'apaga intermitentment.

Autor: Joan Salelles.
====

Data: Gener 2007.
====
*/

int ledPin=13; //Variable tipus int que conté num pin on conn. el LED.
int tempsEspera=500; //Aquesta var conté el num de microsegons que esperarem
//entre intermitents.
void setup() //Part setup, preparem tarja

{
pinMode(ledPin, OUTPUT); // al pin on anem a connectar, el definim com eixida
}

void loop() // Part loop, programa que rodarà
{
digitalWrite(pinLed, HIGH); // Posem pin 13 a ALT, si LED ben connec. farà llum
delay(tempsEspera); // esperem un segon (1000 ms)
digitalWrite(pinLed, LOW); // Posem pin 13 a BAIX, s'apaga LED
delay(tempsEspera); // Tornem a esperar
}
Els

Operadors

A més dels operadors matemàtics que ja coneixem, ja hem vist un primer operador específic dels llenguatges de programació:

Operador d'assignació

És l'operador que serveix per assignar i modificar el valor de les variables. Es tracta del símbol =, que té un significat diferent al que té en matemàtiques. Exemples:

int variable=10; //durant la definició podem fer una assignació inicial.
preu=cost*tipusIva; //assignem a una var el resultat d'una operació.
char inicial="A"; //hi ha altres tipus a més de les int

Operadors compostos

Són uns operadors molt típics de C, i per tant també de Wiring. Serveixen per fer una operació i una assignació a la vegada. Uns quants exemples amb el seu equivalent al comentari:

contador+=1; //contador=contador+1
temps-=decrement; //temps=temps-decrement
preu*=tipusDescompte; //preu=preu*tipusDescompte

Operadors autoincrement i autodecrement

Són uns altres operadors típics de C. Serveixen per incrementar i/o decrementar en una unitat el valor d'una variable:

contador++; //equival a contador+=1; També a contador=contador+1.
i--; Aquest és el decrement i-=1; i=i-1

També existeixen els mateixos, però posant-los abans de la variable,

--contador;
++test;

es diferencien en que aquest primer fant l'actualització del valor i després retornen el valor. Així:

int abans, despres; //variables senceres, sense valor inicial
int numVegades=10; //numVegades val ara 10
abans=numVegades++; //primer fa abans=10, després numVegades=11
despres=++numVegades; //primer numVegades=12, després despres=12

Atenció als errors que pot provocar això!!
Darrera modificació: dijous, 16 agost 2012, 17:48