dijous, 4 de juliol del 2013

Connectar un led RGB a l'Arduino

Així com a l'anterior article vaig comentar el led de dos colors (verd i vermell) també existeixen els leds tricolors, que permeten il·luminar amb vermell, verd i blau. Això fa que jugant amb les intensitats, sigui possible representar molts colors. En el meu cas aquest sensor al meu pack és el KY-011. I el tutorial d'on he tret com connectar-lo el podeu trobar a adafruit learning system.

Com es connectar

La connexió és ben senzilla ja que es fa com qualsevol altre led. Tant si està integrat en una placa com si es tracta d'un led independent, sempre tindrà tres pins:

  1. GND: que va directe a l'arduino
  2. R: pin vermell, que va connectar a una resistència de 220 ohm i després a un pin de sortida analógica de l'arduino (per exemple el #9)
  3. G: pin verd que va connectar a una resistència de 220 ohm i després a un pin de sortida analògica (per exemple el #10)
  4. B: pin blauque va connectar a una resistència de 220 ohm i després a un pin de sortida analògica (per exemple el #11)

Codi d'exemple

El següent exemple va rotant els colors que representa el led. Per fer-ho té 3 variables, una per cada component de la llum, que van incrementant-se a ritmes diferents.

int ledr = 9;
int ledg = 10;
int ledb = 11;

int red=0;
int green=0;
int blue=0;

void setup() {                
  pinMode(ledr, OUTPUT);
  pinMode(ledg, OUTPUT);
  pinMode(ledb, OUTPUT);
}

void loop() {
  
  analogWrite(ledr, red);
  analogWrite(ledg, green);
  analogWrite(ledb, blue);
  red=red+10;
  green=green+30;
  blue=blue+40;
  if (red>254) red=0;
  if (green>254) green=0;
  if (blue>254) blue=0;
  delay(200);
}



diumenge, 30 de juny del 2013

Connectar un led verd/vermell a l'Arduino

És molt típic que aparells com les televisions tinguin un led que canvia de vermell a verd quan s'engega. El nom del sensor al meu pack és KY-011.

Com es connecta

La connexió no és molt diferent de la d'un led normal, amb la diferència que té un pin pel color verd i un pel color vermell. Per la resta és idèntic i, com ja passava al led, cal posar una resistència de 220-ohm.

  1. Green: pin verd, a qualsevol pin digital de l'arduino
  2. Red: pin vermell, a qualsevol pin digital de l'arduino
  3. GND: directe a l'arduino

Com connectar-lo

Si voleu més informació, mireu l'article de com connectar un led.

Codi d'exemple

El codi no deixa de ser una variació del blink

int green = 13;
int red = 12;

void setup() {                
  pinMode(green, OUTPUT);
  pinMode(red, OUTPUT);  
}

void loop() {
  digitalWrite(green, LOW);
  digitalWrite(red, HIGH);
  delay(1000);
  digitalWrite(red, LOW);
  digitalWrite(green, HIGH);
  delay(1000);
}

Connectar un brunzidor (buzzer) a l'Arduino

Un buzzer és una mena de petit altaveu capaç d'emetre sons. Es tracta d'un sensor molt senzill de connectar però que es pot fer servir tant per emetre un "beep" com per fer sonar notes.

Connexió del brunzidor

La connexió és extremadament senzilla. Un buzzer bàsic només té dues potes, una que va directament al GND i l'altre que va al pin que es vulgui (millor si es connecta a un pin amb sortida analògica com el #9 ja que sinó no podrem enviar notes diferents).

Si teniu una versió amb placa, només cal connectar el pin S i el - (GND) ja que el +5V no es fa servir.

Emetre un beep amb un brunzidor

El següent exemple l'he tret d'aquesta web i explica com fer sonar un "beep" bàsic amb un buzzer.

int buzzer = 9;

void setup()  { 
  // declare pin 9 to be an output:
  pinMode(buzzer , OUTPUT);

void loop()  { 
  beep(200); 
}

void beep(unsigned char delayms){
  analogWrite(buzzer,20);
  //el 20 es arbritari, es el to que emetra
  delay(delayms);//temps que sonara
  analogWrite(buzzer,0);//apagar el buzzer
  delay(delayms);//esperar uns instants
}

Emetre notes amb un brunzidor

Per emetre notes amb un buzzer podem seguir el tutorial de la pàgina d'Arduino que, encara que explica com fer-ho amb un altaveu (la connexió és diferent) el codi és el mateix que per un buzzer.

Per fer-ho, el primer que cal fer és crear un arxiu amb els codis de les notes. Per fer-ho cal fer clic a la icona de triangle que hi ha al costat del nom de l'arxiu, seleccionar l'opció de nova pestanya i escriure "pitches.h". En aquest arxiu copiarem les definicions que podeu trobar aquí.

Com crear una nova pestanya a l'entorn d'Arduino

Un cop fet això, el codi fa servir les funcions:
  • tone (pin, freqüència, duració): que emet una nota. Si no es passa duració sonarà fins que es cridi notone.
  • notune (pin): que atura el buzzer
El codi d'exemple seria tal que així

/*
llibreria estandard on hi ha les notes
*/
#include "pitches.h"

int buzzer = 9;

//les notes
int melody[] = {
  NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};
//la duracio
int noteDurations[] = {
  4, 8, 8, 4,4,4,4,4 };

void setup()  { 

void loop()  { 
  for (int thisNote = 0; thisNote < 8; thisNote++) {

    // la duracio va amb milisegons
    int noteDuration = 1000/noteDurations[thisNote];
    tone(buzzer, melody[thisNote],noteDuration);

    // temps de pausa entre notes
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // para el buzzer
    noTone(buzzer);
    
    delay(2000);
  } 
}