[WikiItic] [TitleIndex] [WordIndex

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 }

2023-07-03 11:46