Arduino: Pràctiques amb llum
     http://blocs.xtec.cat/mecanica


                          Francesc Pérez García
               Institut Pompeu Fabra (Martorell)
http://blocs.xtec.cat/mecanica
Pràctiques amb llum:
   LDR i LED-RGB en un Arduino
Materials:
-4 resistències de 220 Ω
-1 sensor LDR
-1 Led RGB
-1 potenciòmetre
-1 placa arduino Uno
- Cables
Arduino pràctiques amb llum
Arduino pràctiques amb llum
CODI FONT: Aquest programa canvia el color del LED RGB en funció
 de la llum ambiental
int valorLDR = 1;
int ledRojo = 9;
int ledVerde=10;
int ledAzul=11;
int pinLDR = 1;
//Necessitem 3 sortides diferents que donaran un senyal d'intensitat diferent
  als 3 colors del RGB: blau, vermell i verd.
void setup()
{
pinMode(ledRojo, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledAzul, OUTPUT);
analogReference(EXTERNAL);
}
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);
}
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);                     }                                               }
}
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 es
else if((valorLDR >=0) & (valorLDR < 63))      pugin completar les ordres i
{                                              colors que donem al Arduino.

digitalWrite(ledRojo, 55);
digitalWrite(ledVerde, 55);
digitalWrite(ledAzul, 55); }
Arduino pràctiques amb llum
Arduino pràctiques amb llum
Programes cub de LEDS: Exemple d'explosió

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);
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);
Arduino pràctiques amb llum
Arduino pràctiques amb llum
Arduino pràctiques amb llum

Más contenido relacionado

PPTX
Arduino2013
PPTX
Open source hardware
PDF
Intro arduino
PPTX
Coding tools
PPTX
Analysing the Universe
PDF
Contaminants
PPTX
Docking 1
PPTX
Campus Ítaca UAB
Arduino2013
Open source hardware
Intro arduino
Coding tools
Analysing the Universe
Contaminants
Docking 1
Campus Ítaca UAB

Más de Francisco Perez (20)

PPTX
Vivid library powerpoint
PPTX
Multicultural theatres
PPT
D'ESO a CF 2019
PPTX
Debating in Latvia
PPTX
Projecte amb institut xinès
PPTX
Projecte Erasmus+
PPTX
Visit Jeonbuk High School (Corea)
PDF
Guia pràctica per fer un bon tr btx 20 consells
DOCX
PPTX
Presentation for Portugal
PPTX
Sant Jordi 2018
PDF
Ponderacions catalunya pau 2018
PPT
Des d'ESO a CCFF 2018
PPTX
Class lists
PPTX
Families are reading the world classic novels
PPTX
Ausias March
PPTX
Don Quixote in Barcelona audio
PPTX
Don Quixote in barcelona
PPT
Logo competition Institut Pompeu Fabra
PPTX
Don Quijote Erasmus+
Vivid library powerpoint
Multicultural theatres
D'ESO a CF 2019
Debating in Latvia
Projecte amb institut xinès
Projecte Erasmus+
Visit Jeonbuk High School (Corea)
Guia pràctica per fer un bon tr btx 20 consells
Presentation for Portugal
Sant Jordi 2018
Ponderacions catalunya pau 2018
Des d'ESO a CCFF 2018
Class lists
Families are reading the world classic novels
Ausias March
Don Quixote in Barcelona audio
Don Quixote in barcelona
Logo competition Institut Pompeu Fabra
Don Quijote Erasmus+
Publicidad

Último (20)

PDF
Aumente su Autoestima - Lair Ribeiro Ccesa007.pdf
PDF
NOM-020-SSA-2025.pdf Para establecimientos de salud y el reconocimiento de l...
PDF
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
PDF
Modelo Educativo SUB 2023versión final.pdf
DOC
4°_GRADO_-_SESIONES_DEL_11_AL_15_DE_AGOSTO.doc
PDF
E1 Guía_Matemática_5°_grado.pdf paraguay
PDF
Estadística Aplicada a la Psicología y Ciencias de la Salud Ccesa.pdf
PPTX
BIZANCIO. EVOLUCIÓN HISTORICA, RAGOS POLÍTICOS, ECONOMICOS Y SOCIALES
PDF
Jodorowsky, Alejandro - Manual de Psicomagia.pdf
PDF
Mi Primer Millon - Poissant - Godefroy Ccesa007.pdf
PDF
Nadie puede salvarte excepto Tú - Madame Rouge Ccesa007.pdf
PDF
CURRICULAR DE PRIMARIA santa ursula..pdf
PDF
La Inteligencia Emocional - Fabian Goleman TE4 Ccesa007.pdf
PDF
MODULO I ENFERMERIA BASICA.pdf HIstoria en enfermeria
PDF
Introducción a la historia de la filosofía
PDF
Aprendizaje Emocionante - Begoña Ibarrola SM2 Ccesa007.pdf
PDF
Como usar el Cerebro en las Aulas SG2 NARCEA Ccesa007.pdf
PDF
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
PPTX
LAS MIGRACIONES E INVASIONES Y EL INICIO EDAD MEDIA
DOCX
TEXTO DE TRABAJO DE EDUCACION RELIGIOSA - CUARTO GRADO.docx
Aumente su Autoestima - Lair Ribeiro Ccesa007.pdf
NOM-020-SSA-2025.pdf Para establecimientos de salud y el reconocimiento de l...
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
Modelo Educativo SUB 2023versión final.pdf
4°_GRADO_-_SESIONES_DEL_11_AL_15_DE_AGOSTO.doc
E1 Guía_Matemática_5°_grado.pdf paraguay
Estadística Aplicada a la Psicología y Ciencias de la Salud Ccesa.pdf
BIZANCIO. EVOLUCIÓN HISTORICA, RAGOS POLÍTICOS, ECONOMICOS Y SOCIALES
Jodorowsky, Alejandro - Manual de Psicomagia.pdf
Mi Primer Millon - Poissant - Godefroy Ccesa007.pdf
Nadie puede salvarte excepto Tú - Madame Rouge Ccesa007.pdf
CURRICULAR DE PRIMARIA santa ursula..pdf
La Inteligencia Emocional - Fabian Goleman TE4 Ccesa007.pdf
MODULO I ENFERMERIA BASICA.pdf HIstoria en enfermeria
Introducción a la historia de la filosofía
Aprendizaje Emocionante - Begoña Ibarrola SM2 Ccesa007.pdf
Como usar el Cerebro en las Aulas SG2 NARCEA Ccesa007.pdf
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
LAS MIGRACIONES E INVASIONES Y EL INICIO EDAD MEDIA
TEXTO DE TRABAJO DE EDUCACION RELIGIOSA - CUARTO GRADO.docx
Publicidad

Arduino pràctiques amb llum

  • 1. Arduino: Pràctiques amb llum http://blocs.xtec.cat/mecanica Francesc Pérez García Institut Pompeu Fabra (Martorell)
  • 3. Pràctiques amb llum: LDR i LED-RGB en un Arduino Materials: -4 resistències de 220 Ω -1 sensor LDR -1 Led RGB -1 potenciòmetre -1 placa arduino Uno - Cables
  • 6. CODI FONT: Aquest programa canvia el color del LED RGB en funció de la llum ambiental int valorLDR = 1; int ledRojo = 9; int ledVerde=10; int ledAzul=11; int pinLDR = 1; //Necessitem 3 sortides diferents que donaran un senyal d'intensitat diferent als 3 colors del RGB: blau, vermell i verd. void setup() { pinMode(ledRojo, OUTPUT); pinMode(ledVerde, OUTPUT); pinMode(ledAzul, OUTPUT); analogReference(EXTERNAL); }
  • 7. 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); }
  • 8. 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); } } }
  • 9. 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 es else if((valorLDR >=0) & (valorLDR < 63)) pugin completar les ordres i { colors que donem al Arduino. digitalWrite(ledRojo, 55); digitalWrite(ledVerde, 55); digitalWrite(ledAzul, 55); }
  • 12. Programes cub de LEDS: Exemple d'explosió 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);
  • 13. 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);