Glossari

ARDUINO

Continguts:

  • Llibreries

  • Led

  • Grup de Leds amb vuMeter

  • Botons

  • Sensors d'inclinació Tilt

  • LDR Resistència llum

  • Sensor Capacitiu de contacte amb persones (paper d'alumini)

  • Sensor de vibració PiezoKnockSensor

  • Potenciòmetre: Resistència variable

  • Arrays

  • Sèrie (per enviar missatges i depurar el codi)

  • Servo estàndard 180º

  • Servo de gir continu

  • 2 Servos

No dubteu en fer copy/paste

Llibreries

Les hem d'afegir a tots els programes.

#include <CapacitiveSensor.h>

#include <Servo.h>

#include <SPI.h>

#include <SD.h>

#include <EducationShield.h>

Led

http://bcn.verkstad.cc/ca/course-literature/blink-2/

R = 220 Ω

void setup() {

pinMode(5, OUTPUT); //OUTPUT per sortida i INPUT per entrades

}

void loop() {

digitalWrite(5, HIGH);

delay(1000);

digitalWrite(5, LOW);

delay(1000);

}

Grup de Leds amb vuMeter

http://bcn.verkstad.cc/ca/course-literature/vu-%C2%AD-meter-de-led/

/* An array of pin numbers to which LEDs are attached the defaults are 2 to 6 but you can choose any of the digital */

int ledPins[] = {2, 3, 4, 5, 6};

int pinCount = 5;

VUMeter vuMeter;

int ledTime = 100; //determines how fast the LEDs will switch

void setup(){

//if your are using other pins than 2 to 6 you need to configure that here

vuMeter.config(pinCount, ledPins);

vuMeter.begin(); //does the same as pinMode, LEDs are outputs

}

void loop(){

vuMeter.scrollLeft(ledTime, 1); //The game starts by scrolling the LEDs to the left

vuMeter.scrollRight(ledTime, 1);

vuMeter.blinkAll(100,10);

}

Botons

http://bcn.verkstad.cc/ca/course-literature/boto/

R = 10 kΩ

Button button1 = Button(9); //the button connected to digital pin 9

int pressTime = 200; //determines how long time a player has to press the button

void setup(){

button1.begin(); //does the same as pinMode, buttons are inputs

}

void loop(){

/* if button1 is pressed within the press time, the game will continue */

if(button1.released(pressTime)){

// Continua el joc

}

Sensors d'inclinació Tilt

http://bcn.verkstad.cc/ca/course-literature/sensor-tilt-ca/

TiltSwitch player_1 = TiltSwitch(10); //the tilt connected to digital pin 10

void setup(){

//Initializing components

player_1.begin();

}

void loop(){

if(player_1.pressed(1)){

// Aquí passen les coses

}

}

LDR Resistència llum

http://bcn.verkstad.cc/ca/course-literature/ldr-ca-ref/

R = 1 KΩ

LDR ldr = LDR(A1); //the ldr connected to analog pin 1

void setup(){

ldr.config(800, 600); //first run LDRtest example to see what values you need to put here

}

void loop(){

//if the ldr is covered the score increases with 1

//and a sounds is played

ldr.pressed();

}

Sensor Capacitiu de contacte amb persones (paper d'alumini)

http://bcn.verkstad.cc/ca/course-literature/sensor-capacitatiu/

// Declarem el sensor capacitiu i diem que estarà connectat entre els pins digitals 2 i 3.

CapacitiveSwitch leftFoot=CapacitiveSwitch(2,3);

void setup(){

//inicialitza el sensor capacitiu que li hem dit leftfoot

//el llindar de sensibilitat és 400 a l'enllaç de dalt hi ha l'explicació de com calibrar el sensor

leftFoot.config(400);

}

void loop(){

//S'espera fins que es toqui el sensor

leftFoot.pressed();

//Aquí escriuràs el programa del que passa quan s'ha tocat el sensor

}

Sensor de vibració PiezoKnockSensor

http://bcn.verkstad.cc/ca/course-literature/sensor-de-knock-ca/

//Declara el sensor connectat a l'entrada analògica A0

PiezoKnockSensor sensor=PiezoKnockSensor(A0);

void setup(){

//defineix el llindar de sensibilitat i el temps mínim entre tocs.

//A l'enllaç de dalt explica com calibrar el sensor.

sensor.config(40,80);

}

void loop(){

//el sensor Knock espera fins que es colpegi el sensor

if(sensor.knocked(10)){

//Aquí poseu el que passa quan li hem donat un un cop al sensor

}

}

Potenciòmetre: Resistència variable

http://bcn.verkstad.cc/ca/course-literature/multimetro-2/

Knob pot=Knob(A0);//Connectem el potenciòmetre a la pota A0

void setup(){

//L'entrada analògica A0 rebrà un voltatge que anirà de 0 a 5 volts. Aquesta instrucció el que fa és dividir aquest voltatge en 5 valors diferents.

pot.setLevels(5);

}

void loop(){

//Si el voltatge que hi ha a l'entrada analògica A0 va de 0 a 1 V retornarà 0, de 1V a 2V retornarà 1,...

valorDelPotenciometre = pot.getLevel()

}

Arrays

// Exemples de declaració de diferents arrays:

int ledPins[] = {2, 3, 4, 5, 6};

boolean message[5][22]={

// H H H H O O O O L L L L A A A A

{0,1,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,1,1,0,0,0},

{0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0},

{0,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0},

{0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0},

{0,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,1,0,0,1,0,0}

};

int dau[6][9]={

//1

{

0,0,0,

0,1,0,

0,0,0

},

//2

{

1,0,0,

0,0,0,

0,0,1

},

//3

{

1,0,0,

0,1,0,

0,0,1

},

//4

{

1,0,1,

0,0,0,

1,0,1

},

//5

{

1,0,1,

0,1,0,

1,0,1

},

//6

{

1,1,1,

0,0,0,

1,1,1

}

};

// Exemple de com fer serfir un FOR per adreçar-nos a l'índex d'una array de dues dimensions

void loop(){

// If the whole array has been drawn

if(rowCount == rowLength) {

rowCount = 0; // Reset the rowCount

} else {

// Shows the message

for (int i = 0; i < pinCount; i++) {

// Checks if the array says HIGH

if (message[i][rowCount] == 1) {

vuMeter.on(i);

} else {

vuMeter.off(i);

}

}

rowCount++;

}

delay(delayTime); // This is the delay per row

}

Sèrie (per enviar missatges i depurar el codi)

http://bcn.verkstad.cc/ca/course-literature/enviant-al-ordinador/

void setup() {

Serial.begin(9600);

}

void loop() {

// Si volem depurar el codi aquí hem de posar la variable que volem monitoritzar sense cometes

Serial.println("Hola Caracola");

delay(1000); // Opcional quan només volem depurar el codi. Quan enviem a l'ordinador s'ha de posar per no saturar-lo

}

Servo estàndard 180º

http://bcn.verkstad.cc/ca/course-literature/servo-estandar-ca/

include <Servo.h>

Servo myservo;

void setup() {

myservo.attach(9);

}

void loop() {

myservo.write(0); // Mou el servo a 0º

delay(1000);

myservo.write(180);// Mou el servo a 180º

delay(1000);

}

Servo de gir continu

http://bcn.verkstad.cc/ca/course-literature/servo-de-rotacio-continua/

Servo me;

void setup(){

me.attach(9);

}

void loop(){

// De 0 a 90 fa girar el servo en un sentit i de 90 a 180 gira en sentit contrari.

// Com més ens acostem als extrems, es a dir, al 0 o a 180 més ràpid girarà i a 90 es quedarà quiet.

me.write(120);

}

2 Servos

http://bcn.verkstad.cc/ca/course-literature/fent-servir-dos-servos/

// Declara els 2 servos

Servo myservo1, myservo2;

void setup() {

myservo1.attach(9);

myservo2.attach(10);

}

void loop() {

// Arduino no té prou potència per fer anar 2 servos alhora

// per això s'ha de desconnectar un servo per poder fer anar l'altre

myservo2.detach(); // Desconnecta el servo2

myservo1.attach(9); // Connecta el servo1

myservo1.write(70); // Mou el servo1

delay(1000);

myservo1.detach(); // Desconnecta el servo1

myservo2.attach(10); // Connecta el servo2

myservo2.write(70); // Mou el servo2

delay(1000);

}

PROCESSING

  • size(ample, alt): Estableix la mida de la finestra del programa en píxels.

  • background(gray): Estableix el color de fons des de 0 (negre) fins a 255 (blanc). També pots utilitzar backround(red, green, blue) per establir el color que tu vulguis.

  • line(x1, y1, x2, y2): Dibuixa una línia des de la coordenada (x1,y1) fins la (x2,y2).

  • ellipse(x, y, diàmetre x, diàmetre y): Dibuixa una el·lipse amb centre a (x,y). La mida s’estableix amb diàmetre x i diàmetre y. Quan aquests dos paràmetres són iguals, el resultat és un cercle.

  • stroke(red, green, blue): Estableix el color de la línia. Cada valor de color pot ser des de 0 fins a 255. En aquest cas, la línia és de color blau, ja que red=0, green=0 i blue=255.

  • noStroke(): Si s’usa aquesta ordre, les figures dibuixades no tindran contorn.

  • fill(red, green, blue): Estableix el color utilitzat per omplir les figures. En aquest exemple, omple el cercle de color vermell.

  • width: l’amplada de la finestra de programa.

  • height: l’alçada de la finestra de programa.

  • mouseX: La coordenada X del cursor del ratolí.

  • mouseY: La coordenada Y del cursor del ratolí.

  • int variableName = value: Crea una variable del tipus integer, un nombre enter. Pots escollir qualsevol nom per identificar-la, però assegura’t que el nom s’adiu al context en el qual s’utilitza la variable.

  • int: Nombre enter, p.ex., 2, 99 o 532.

  • long: aquest és un tipus de dades per números enters llargs. Convé utilitzar-les quan fem servir variables temporals, perquè aquestes dades poden ser molt grans. Recordes que vam explicar que una variable és un contenidor de dades? Bé, es pot dir que long és un contenidor més gran que int. Un int es queda sense espai abans que un long.

  • float: Nombre decimal, p.ex., 2.76, 8.211 o 900.3.

  • boolean: Pot ser veritable o fals.

  • char: Un caràcter, p.ex. ‘r’, ‘2’ o ‘%’.

  • String: Una seqüència de caràcters, p.ex. “hola”, “M’encanta programar!” o “&%!@¤”.

  • int(data): Converteix data a un enter. P.ex. int(2.545) retorna 2, int(233.9999) retorna 233, etc.

  • PImage: Un tipus de variable que pot contenir una imatge.

  • loadImage(image file): Puja la imatge image file localitzada dins el directori actual de l’sketch. image file s’ha d’escriure exactament igual que el nom del fitxer. Comprova més avall com situar la imatge a la carpeta correcta.

  • image(image name, x, y): Mostra la PImage image name a les coordenades (x, y). La cantonada superior esquerra és l’eix de coordenades.

  • La declaració de les imatges és una mica diferent: PImage im[] = new PImage[2]. Això significa que declarem un array del tipus PImage amb dos blocs (o compartiments) de dades.

  • Quan mostrem i pugem les imatges, utilitzem img[0] per la primera posició de l’array i img[1] per la segona.

  • if( boolean ): comprova si boolean és true. Pots també comprovar si és fals escrivint if( !boolean ).

  • for(initiator; test; update){ statements }: Aquesta funció permet repetir una peça de codi tantes vegades com calgui. El primer que succeeix dins el for() és la inicialització, initiator. En l’exemple, aquesta declaració és un enter, i. Després, comprova si test és veritable o fals, tal i com vam fer amb l’ifal projecte anterior, recordes? Aquí, test comprova si i és menor que 4. Si és així, el codi entre claus s’executarà. A continuació, el que succeeix és l’ update; en aquest cas, es tracta d’incrementar i una unitat. Després, test es comprova de nou i, si altra cop és cert, es repeteix el procés anterior. Com que sempre actualitzem afegint 1 a i, en algun moment i serà igual a 4, la qual cosa significa que test serà fals (4 no és menor que 4). En aquest moment, s’abandonarà el bucle.

  • noLoop(): atura l’execució contínua dins de draw. Per tornar a executar el programa hauràs de cridar a loop().

  • hour(): Retorna l’hora actual com un número de 0 a 23.

  • minute(): retorna els minuts actuals com un valor de 0 a 59.

  • second(): retorna els segons actuals com un valor entre 0 i 59.

  • keyPressed(): aquesta funció es crida cada vegada que es prem una tecla. Això significa que qualsevol codi escrit dins d’aquesta funció serà executat en prémer una tecla.

  • keyCode: retorna el valor de la tecla que has premut.

  • random(high): genera un número aleatori entre 0 i el número high. Pots utilitzar també random(low,high) per generar un número entre low i high.

  • text(text, x, y): escriu un text a la pantalla a les coordenades x i y.