Arduino pràctiques amb llum

390 views
332 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
390
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Arduino pràctiques amb llum

  1. 1. Arduino: Pràctiques amb llum http://blocs.xtec.cat/mecanica Francesc Pérez García Institut Pompeu Fabra (Martorell)
  2. 2. http://blocs.xtec.cat/mecanica
  3. 3. Pràctiques amb llum: LDR i LED-RGB en un ArduinoMaterials:-4 resistències de 220 Ω-1 sensor LDR-1 Led RGB-1 potenciòmetre-1 placa arduino Uno- Cables
  4. 4. CODI FONT: Aquest programa canvia el color del LED RGB en funció de la llum ambientalint valorLDR = 1;int ledRojo = 9;int ledVerde=10;int ledAzul=11;int pinLDR = 1;//Necessitem 3 sortides diferents que donaran un senyal dintensitat diferent als 3 colors del RGB: blau, vermell i verd.void setup(){pinMode(ledRojo, OUTPUT);pinMode(ledVerde, OUTPUT);pinMode(ledAzul, OUTPUT);analogReference(EXTERNAL);}
  5. 5. void loop(){valorLDR = analogRead(pinLDR);if(valorLDR >= 1023){digitalWrite(ledRojo, 128);digitalWrite(ledVerde, 0);digitalWrite(ledAzul, 0);// Amb la instrucció digitalWrite i amb el valor numèric aconseguim molts colors diferents}else if((valorLDR >= 959) & (valorLDR < 1023)){digitalWrite(ledRojo, 255);digitalWrite(ledVerde, 0);digitalWrite(ledAzul, 0);}
  6. 6. else if((valorLDR >= 895) & (valorLDR < 959)) else if((valorLDR >= 639) & (valorLDR < 703)) else if((valorLDR >= 383) & (valorLDR < 447)){ { {digitalWrite(ledRojo, 255); digitalWrite(ledRojo, 128); digitalWrite(ledRojo, 0);digitalWrite(ledVerde, 128); digitalWrite(ledVerde, 128); digitalWrite(ledVerde, 128);digitalWrite(ledAzul, 0); digitalWrite(ledAzul, 255); digitalWrite(ledAzul, 0);} } }else if((valorLDR >= 831) & (valorLDR < 895)) else if((valorLDR >= 575) & (valorLDR < 639)) else if((valorLDR >= 319) & (valorLDR < 383)){ { {digitalWrite(ledRojo, 255); digitalWrite(ledRojo, 0); digitalWrite(ledRojo, 0); digitalWrite(ledVerde, 128); digitalWrite(ledVerde, 255);digitalWrite(ledVerde, 255); digitalWrite(ledAzul, 255); digitalWrite(ledAzul, 0);digitalWrite(ledAzul, 0); } }} else if((valorLDR >= 511) & (valorLDR < 575)) else if((valorLDR >= 255) & (valorLDR < 319))else if((valorLDR >= 767) & (valorLDR < 831)) { {{ digitalWrite(ledRojo, 0); digitalWrite(ledRojo, 128);digitalWrite(ledRojo, 255); digitalWrite(ledVerde, 0); digitalWrite(ledVerde, 255);digitalWrite(ledVerde, 255); digitalWrite(ledAzul, 255); digitalWrite(ledAzul, 0);digitalWrite(ledAzul, 128); } }} else if((valorLDR >= 447) & (valorLDR < 511)) else if((valorLDR >= 191) & (valorLDR < 255))else if((valorLDR >= 703) & (valorLDR < 767)) { {{ digitalWrite(ledRojo, 0); digitalWrite(ledRojo, 0);digitalWrite(ledRojo, 128); digitalWrite(ledVerde, 0); digitalWrite(ledVerde, 255);digitalWrite(ledVerde, 255); digitalWrite(ledAzul, 128); digitalWrite(ledAzul, 128);digitalWrite(ledAzul, 255); } }}
  7. 7. else if((valorLDR >= 127) & (valorLDR < else 191)) {{ digitalWrite(ledRojo, 0);digitalWrite(ledRojo, 128); digitalWrite(ledVerde, 0);digitalWrite(ledVerde, 255); digitalWrite(ledAzul, 0);digitalWrite(ledAzul, 128); }} }else if((valorLDR >= 63) & (valorLDR < 127)) void color(int rojo, int verde, int azul){ {digitalWrite(ledRojo, 128); analogWrite(ledRojo, 255-rojo);digitalWrite(ledVerde, 128); analogWrite(ledVerde, 255-verde);digitalWrite(ledAzul, 128); analogWrite(ledAzul, 255-azul);} //Aquí al final posem la escritura del PWM de cada color, per a que eselse if((valorLDR >=0) & (valorLDR < 63)) pugin completar les ordres i{ colors que donem al Arduino.digitalWrite(ledRojo, 55);digitalWrite(ledVerde, 55);digitalWrite(ledAzul, 55); }
  8. 8. Programes cub de LEDS: Exemple dexplosióint Columnas[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};int Filas[] = {12, 11, 10};int t=400;void setup(){int contador;for (int contador = 0; contador < 10; contador++){pinMode(Columnas[contador], OUTPUT); }for (int contador = 0; contador < 4; contador++){pinMode(Filas[contador], OUTPUT); }}void loop(){digitalWrite(Filas[1], HIGH);digitalWrite(Columnas[4], HIGH);delay(t);
  9. 9. for(int i=0;i<t;i++){ if(i%2==0){ digitalWrite(Filas[0], HIGH); digitalWrite(Filas[2], HIGH); digitalWrite(Filas[0], LOW); digitalWrite(Columnas[1], HIGH); digitalWrite(Filas[2], LOW); digitalWrite(Columnas[3], HIGH); digitalWrite(Columnas[1], HIGH); digitalWrite(Columnas[5], HIGH); digitalWrite(Columnas[3], HIGH); digitalWrite(Columnas[7], HIGH); digitalWrite(Columnas[5], HIGH); } digitalWrite(Columnas[7], HIGH); else { } digitalWrite(Filas[0], LOW); else { digitalWrite(Filas[2], LOW); digitalWrite(Columnas[1], LOW); digitalWrite(Columnas[0], HIGH); digitalWrite(Columnas[3], LOW); digitalWrite(Columnas[2], HIGH); digitalWrite(Columnas[5], LOW); digitalWrite(Columnas[8], HIGH); digitalWrite(Columnas[7], LOW); digitalWrite(Columnas[6], HIGH); digitalWrite(Filas[0], HIGH); } digitalWrite(Filas[2], HIGH); delay(1); } } digitalWrite(Filas[0], HIGH); delay(1); digitalWrite(Filas[2], HIGH);} delay(t); for(int j=0; j<t; j++){ for (int contador = 0; contador < 10; contador++){ if(j%2==0){ digitalWrite(Columnas[contador], LOW); } digitalWrite(Columnas[0], LOW); for (int contador = 0; contador < 4; contador++){ digitalWrite(Columnas[2], LOW); digitalWrite(Filas[contador], LOW); } digitalWrite(Columnas[8], LOW); } digitalWrite(Columnas[6], LOW);

×