Advertisement
tiodocomputador

Multiplexador 4067 - 32 portas - seguidor de sombras

Jul 23rd, 2014
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.82 KB | None | 0 0
  1. //pinos do multiplexador de escrita
  2. int w0 = 8;
  3. int w1 = 7;
  4. int w2 = 3;
  5. int w3 = 2;
  6. int Wcomum = A0;
  7. //pinos do multiplexador de leitura
  8. int r0 = 11;
  9. int r1 = 12;
  10. int r2 = 9;
  11. int r3 = 10;
  12. int Rcomum = 5;
  13.  
  14. int led;
  15.  
  16. int T = 500;
  17. // tempo que o pino do mux fica ON
  18.  
  19. // Matriz de 16 linhas com 4 itens cada
  20. // Cada linha da matriz eh um pino do multiplexador
  21. // Cada conjunto de 4 itens eh o endereco do pino
  22. int matriz[16][4] = {
  23.   {
  24.     0,0,0,0              }
  25.   ,
  26.   {
  27.     0,0,0,1              }
  28.   ,
  29.   {
  30.     0,0,1,0              }
  31.   ,
  32.   {
  33.     0,0,1,1              }
  34.   ,
  35.   {
  36.     0,1,0,0              }
  37.   ,
  38.   {
  39.     0,1,0,1              }
  40.   ,
  41.   {
  42.     0,1,1,0              }
  43.   ,
  44.   {
  45.     0,1,1,1              }
  46.   ,
  47.   {
  48.     1,0,0,0              }
  49.   ,
  50.   {
  51.     1,0,0,1              }
  52.   ,
  53.   {
  54.     1,0,1,0              }
  55.   ,
  56.   {
  57.     1,0,1,1              }
  58.   ,
  59.   {
  60.     1,1,0,0              }
  61.   ,
  62.   {
  63.     1,1,0,1              }
  64.   ,
  65.   {
  66.     1,1,1,0              }
  67.   ,
  68.   {
  69.     1,1,1,1              }
  70.   ,
  71. };
  72.  
  73.  
  74. void setup()
  75. {
  76.   //Define os modos de cada pino
  77.   pinMode(w0, OUTPUT);
  78.   pinMode(w1, OUTPUT);
  79.   pinMode(w2, OUTPUT);
  80.   pinMode(w3, OUTPUT);
  81.   pinMode(r0, OUTPUT);
  82.   pinMode(r1, OUTPUT);
  83.   pinMode(r2, OUTPUT);
  84.   pinMode(r3, OUTPUT);
  85.   // Todos os pinos digitais estao em modo de saida porque todos
  86.   // escrevem um conjunto de 4 binarios, q fazem o enderecamento
  87.   // do pino ativo no multiplexador
  88.   pinMode(Wcomum, OUTPUT);
  89.   // Rcomum equivale ao pino analogico do multiplexador de saida
  90.   pinMode(Rcomum, INPUT);
  91.   // Rcomum equivale ao pino analogico do multiplexador de entrada
  92.   digitalWrite(w0, LOW);
  93.   digitalWrite(w1, LOW);
  94.   digitalWrite(w2, LOW);
  95.   digitalWrite(w3, LOW);
  96.   digitalWrite(r0, LOW);
  97.   digitalWrite(r1, LOW);
  98.   digitalWrite(r2, LOW);
  99.   digitalWrite(r3, LOW);
  100.   // analogWrite(Wcomum, 0);
  101.   //Coloca todos os pinos em LOW
  102.   Serial.begin(9600);
  103. }
  104.  
  105. void loop()
  106. {
  107.   {
  108.     for(int i = 0; i<16; i++)
  109.     {
  110.       int sensor = analogRead(Rcomum);
  111.       acender(matriz[i]);
  112.       escreve(i);
  113.       Serial.print(sensor);
  114.       Serial.print(" - ");
  115.       Serial.println(sensor/4);
  116.       delay(T);              // tempo que o pino dfica ON
  117.       analogWrite(Wcomum, (1023-sensor)/4);    // escreve o valor do LDR no LED
  118.     }
  119.   }
  120. }
  121.  
  122.  
  123. void acender( int m[] )
  124. {
  125.   digitalWrite(w0, m[0]);
  126.   digitalWrite(w1, m[1]);
  127.   digitalWrite(w2, m[2]);
  128.   digitalWrite(w3, m[3]);
  129.   digitalWrite(r0, m[0]);
  130.   digitalWrite(r1, m[1]);
  131.   digitalWrite(r2, m[2]);
  132.   digitalWrite(r3, m[3]);
  133. }
  134.  
  135. void escreve(int led)
  136. {
  137.   Serial.print("Led ativo: ");
  138.   Serial.print(led);
  139.   Serial.print(" - ");
  140.   Serial.print(matriz[led][0]);
  141.   Serial.print(matriz[led][1]);
  142.   Serial.print(matriz[led][2]);
  143.   Serial.print(matriz[led][3]);  
  144.   Serial.print(" - Leitura: ");  
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement