Advertisement
Villalba2006

POST_37

Nov 25th, 2016
1,926
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.17 KB | None | 0 0
  1. /*  TITULO: Control de una barra de 10 LEDS con un potenciómetro.
  2.  
  3.     AUTOR:
  4.    
  5.     MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
  6.     - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
  7.     - TWITTER: https://twitter.com/MarianoCampoGa
  8.     - CORREO: marianodc83@gmail.com
  9.    
  10.    
  11.     DESCRIPCIÓN DEL PROGRAMA
  12.    
  13.     Con este programa controlamos el encendido y apagado de los LED de una barra de 10 LEDS, mediante
  14.     un potenciómetro lineal de 10K ohms, que hemos conectado a una entrada analógica (A0) de Arduino.
  15.     Al mover el mando del potenciómetro conseguiremos un efecto dominó de apagado/encendido de LEDS.
  16.    
  17.    
  18.     ESQUEMA DE CONEXION
  19.    
  20.                                       +-----+
  21.          +----[PWR]-------------------| USB |--+
  22.          |                            +-----+  |
  23.          |         GND/RST2  [ ][ ]            |
  24.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |    
  25.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |    
  26.          |                             AREF[ ] |
  27.          |                              GND[ ] |
  28.          | [ ]N/C                    SCK/13[ ] |  
  29.          | [ ]IOREF                 MISO/12[ ] |  
  30.          | [ ]RST                   MOSI/11[ ]~|   Pin 1 de la barra de 10 LEDS
  31.          | [ ]3V3    +---+               10[ ]~|   Pin 2 de la barra de 10 LEDS
  32.          | [ ]5v    -| A |-               9[ ]~|   Pin 3 de la barra de 10 LEDS
  33.          | [ ]GND   -| R |-               8[ ] |   Pin 4 de la barra de 10 LEDS
  34.          | [ ]GND   -| D |-                    |
  35.          | [ ]Vin   -| U |-               7[ ] |   Pin 5 de la barra de 10 LEDS
  36.          |          -| I |-               6[ ]~|   Pin 6 de la barra de 10 LEDS
  37.     P2   | [ ]A0    -| N |-               5[ ]~|   Pin 7 de la barra de 10 LEDS
  38.          | [ ]A1    -| O |-               4[ ] |   Pin 8 de la barra de 10 LEDS
  39.          | [ ]A2     +---+           INT1/3[ ]~|   Pin 9 de la barra de 10 LEDS
  40.          | [ ]A3                     INT0/2[ ] |   Pin 10 de la barra de 10 LEDS
  41.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  42.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  43.          |            [ ] [ ] [ ]              |
  44.          |  UNO_R3    GND MOSI 5V  ____________/
  45.           \_______________________/
  46.  
  47.   NOTAS:
  48.    
  49.    - Pines del 11 al 20 de la barra de 10 LEDS a GND a través de una R=220 omhs (diferente para cada pin).
  50.    - Utilizamos un potenciómetro lineal de 10K ohms.
  51.    - Denomínamos a los terminales del potenciómetro como P1, P2 y P3 (donde P2 es el terminal central).    
  52.      - P1 conectado a VCC.
  53.      - P3 conectado a GND.
  54.        
  55. */
  56.  
  57.   const int potenciometro = 0;  // Pin digital para el potenciómetro
  58.   const int LED[] = {2,3,4,5,6,7,8,9,10,11}; // Pines digitales para los 10 LEDS
  59.   int numero_LEDS = 10;    // Número de LEDS de la barra
  60.   int cuenta;  // Variable para el índice de la matriz de LEDS
  61.   int lectura_potenciometro; // Variable que guarda el valor del potenciómetro (0-1023)
  62.   int nivel_potenciometro; // Variable que guarda el nivel mapeado del potenciómetro
  63.  
  64.   void setup()
  65.   {
  66.     Serial.begin(9600); // Comienzo de la comunicación serie
  67.    
  68.     // Declaramos los pines digitales para los LEDS como salidas
  69.     for (int cuenta = 0; cuenta < numero_LEDS; cuenta++)
  70.     {
  71.       // LED[0] = 2, LED[1] = 3, ... , LED[9]=11.
  72.       pinMode(LED[cuenta], OUTPUT);
  73.     }
  74.   }
  75.  
  76.   void loop()
  77.   {
  78.     // Leemos el valor del potenciómetro
  79.     lectura_potenciometro = analogRead(potenciometro);
  80.     // Mostramos el valor del potenciómetro a través del monitor serie.
  81.     Serial.println(lectura_potenciometro);
  82.     delay(20);
  83.    
  84.     // Mapeamos el valor del potenciómetro entre los niveles 0 y 10.
  85.     nivel_potenciometro = map(lectura_potenciometro, 0, 1023, 0, numero_LEDS);
  86.    
  87.     // Se encienden los LEDS de la barra de 10 LEDS dependiendo del nivel obtenido.
  88.     for (cuenta = 0; cuenta < numero_LEDS; cuenta++)
  89.     {
  90.       if (cuenta < nivel_potenciometro)
  91.       {
  92.         digitalWrite(LED[cuenta], HIGH);
  93.       }
  94.  
  95.       else
  96.       {
  97.         digitalWrite(LED[cuenta], LOW);
  98.       }  
  99.     }
  100.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement