1. Connectem Coses a Arduino
1.1. Primera Part: Descripció de Components
En el taller d'Arduino s'han llistat diferents elements amb la possibilitat de connectar-los a Arduino que es disposaven.
S'han classificat segons si són elements de entrada, sortida, bidireccionals, analògics i digitals. Després s'han descrit de la manera més pràctica possible.
1.2. Segona Part: Learn by Doing
La segona part del taller s'ha dedicat a discutir una possible aplicació utilitzant els dispositius dels que es disposaven i a definir el seu connexionat. Per últim s'ha desenvolupat el codi entre tots i s'ha provat.
El projecte dissenyat es tractava d'una llum LED RGB que pot canviar el seu color variant la tensió que s'aplica per iluminar el LED vermell, verd o blau. la cuantitat de llum en cada un dels LED's es mostra en una pantalla LCD.
A més, aquest control de llum es fa a través d'un comandament a distància. El cmandament a distància es basa en un teclat de matriu de tecles que ens permet augmentar o disminuir cada un dels colors de la llum.
Aquest és el codi del comandament a distància:
1 #define f0 3
2 #define f1 4
3 #define f2 5
4 #define c0 6
5 #define c1 7
6
7 void setup(){
8 pinMode(f0,OUTPUT);
9 pinMode(f1,OUTPUT);
10 pinMode(f2,OUTPUT);
11 pinMode(c0,INPUT);
12 pinMode(c1,INPUT);
13 Serial.begin(9600);
14 }
15
16 void loop(){
17 uint8_t valuec0, valuec1;
18 digitalWrite(f0,HIGH);
19 digitalWrite(f1,LOW);
20 digitalWrite(f2,LOW);
21 valuec0 = digitalRead(c0);
22 valuec1 = digitalRead(c1);
23 if (valuec0 == 1){Serial.print('r');}
24 else if (valuec1 == 1){Serial.print('R');}
25
26 digitalWrite(f0,LOW);
27 digitalWrite(f1,HIGH);
28 digitalWrite(f2,LOW);
29 valuec0 = digitalRead(c0);
30 valuec1 = digitalRead(c1);
31 if (valuec0 == 1){Serial.print('b');}
32 else if (valuec1 == 1){Serial.print('B');}
33
34 digitalWrite(f0,LOW);
35 digitalWrite(f1,LOW);
36 digitalWrite(f2,HIGH);
37 valuec0 = digitalRead(c0);
38 valuec1 = digitalRead(c1);
39 if (valuec0 == 1){Serial.print('g');}
40 else if (valuec1 == 1){Serial.print('G');}
41
42 delay(200);
43 }
Aquest és el codi del control de la llum, amb control LCD:
1 // include the library code:
2 #include <LiquidCrystal.h>
3
4 #define E 12
5 #define RS 13
6 #define D4 5
7 #define D5 4
8 #define D6 3
9 #define D7 2
10
11 #define RED 9
12 #define GREEN 11
13 #define BLUE 10
14
15 int valor_red=255,valor_green=255,valor_blue=255;
16 int c,r,b,g;
17
18
19 // initialize the library with the numbers of the interface pins
20 LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
21
22 void setup() {
23 // set up the LCD's number of columns and rows:
24 lcd.begin(40, 2);
25
26 analogWrite(RED,valor_red);
27 analogWrite(BLUE,valor_blue);
28 analogWrite(GREEN,valor_green);
29 Serial.begin(9600);
30
31 }
32
33 void loop() {
34
35 if(Serial.available()){
36 c= Serial.read();
37
38 switch(c){
39
40 case 'r':
41 valor_red +=20;
42 valor_red=constrain(valor_red,0,255);
43 analogWrite(RED,valor_red);
44
45 break;
46 case 'R':
47 valor_red -=20 ;
48 valor_red=constrain(valor_red,0,255);
49 analogWrite(RED,valor_red);
50 break;
51 case 'b':
52 valor_blue +=20;
53 valor_blue=constrain(valor_blue,0,255);
54 analogWrite(BLUE,valor_blue);
55 break;
56 case 'B':
57 valor_blue -=20;
58 valor_blue=constrain(valor_blue,0,255);
59 analogWrite(BLUE,valor_blue);
60 break;
61 case 'g':
62 valor_green +=20;
63 valor_green=constrain(valor_green,0,255);
64 analogWrite(GREEN,valor_green);
65 break;
66 case 'G':
67 valor_green -=20;
68 valor_green=constrain(valor_green,0,255);
69 analogWrite(GREEN,valor_green);
70 break;
71 }
72
73
74
75 r= map(valor_red,0,255,100,0);
76 b= map(valor_blue,0,255,100,0);
77 g= map(valor_green,0,255,100,0);
78 lcd.clear();
79 lcd.setCursor(0,0);
80 lcd.print("Red: ");
81 lcd.print(r);
82 lcd.setCursor(0,1);
83 lcd.print("Blue: ");
84 lcd.print(b);
85 lcd.setCursor(20,0);
86 lcd.print("Green: ");
87 lcd.print(g);
88 }
89 }