Advertisement
tiodocomputador

Multiplexador 4067 - versao 32 portas

Jul 20th, 2014
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.18 KB | None | 0 0
  1. //Mux control pins
  2. int r0 = 8;
  3. int r1 = 9;
  4. int r2 = 10;
  5. int r3 = 11;
  6.  
  7. int s0 = 11;
  8. int s1 = 12;
  9. int s2 = 9;
  10. int s3 = 10;
  11.  
  12. //Mux in "SIG" pin
  13. int sensor = 1;
  14. int led = 0;
  15. void setup(){
  16.   pinMode(r0, OUTPUT);
  17.   pinMode(r1, OUTPUT);
  18.   pinMode(r2, OUTPUT);
  19.   pinMode(r3, OUTPUT);
  20.   pinMode(s0, OUTPUT);
  21.   pinMode(s1, OUTPUT);
  22.   pinMode(s2, OUTPUT);
  23.   pinMode(s3, OUTPUT);
  24.  
  25.   digitalWrite(r0, LOW);
  26.   digitalWrite(r1, LOW);
  27.   digitalWrite(r2, LOW);
  28.   digitalWrite(r3, LOW);
  29.   digitalWrite(s0, LOW);
  30.   digitalWrite(s1, LOW);
  31.   digitalWrite(s2, LOW);
  32.   digitalWrite(s3, LOW);
  33.  
  34.   Serial.begin(9600);
  35. }
  36.  
  37.  
  38. void loop(){
  39.  
  40.   //Loop through and read all 16 values
  41.   //Reports back Value at channel 6 is: 346
  42.   for(int i = 0; i < 16; i ++)
  43.   {
  44.     Serial.print("Value at channel ");
  45.     Serial.print(i);
  46.     Serial.print("is : ");
  47.     Serial.println(255-map((readMux(i)), 0, 1023, 0, 255));
  48.     analogWrite(led, 255-map((readMux(i)), 0, 1023, 0, 255));
  49.     delay(250);
  50.   }
  51.  
  52. }
  53.  
  54.  
  55. int readMux(int channel)
  56. {
  57.   int controlPin[] = {
  58.     r0, r1, r2, r3  };
  59.   int ledPin[] = {
  60.     s0, s1, s2, s3  };
  61.   int muxChannel[16][4]={
  62.     {
  63.       0,0,0,0    }
  64.     , //channel 0
  65.     {
  66.       1,0,0,0    }
  67.     , //channel 1
  68.     {
  69.       0,1,0,0    }
  70.     , //channel 2
  71.     {
  72.       1,1,0,0    }
  73.     , //channel 3
  74.     {
  75.       0,0,1,0    }
  76.     , //channel 4
  77.     {
  78.       1,0,1,0    }
  79.     , //channel 5
  80.     {
  81.       0,1,1,0    }
  82.     , //channel 6
  83.     {
  84.       1,1,1,0    }
  85.     , //channel 7
  86.     {
  87.       0,0,0,1    }
  88.     , //channel 8
  89.     {
  90.       1,0,0,1    }
  91.     , //channel 9
  92.     {
  93.       0,1,0,1    }
  94.     , //channel 10
  95.     {
  96.       1,1,0,1    }
  97.     , //channel 11
  98.     {
  99.       0,0,1,1    }
  100.     , //channel 12
  101.     {
  102.       1,0,1,1    }
  103.     , //channel 13
  104.     {
  105.       0,1,1,1    }
  106.     , //channel 14
  107.     {
  108.       1,1,1,1    }  //channel 15
  109.   };
  110.  
  111.   //loop through the 4 sig
  112.   for(int i = 0; i < 4; i ++){
  113.     digitalWrite(controlPin[i], muxChannel[channel][i]);
  114.     digitalWrite(ledPin[i], muxChannel[channel][i]);
  115.   }
  116.  
  117.   //read the value at the SIG pin
  118.   int val = (255-map(analogRead(sensor), 0, 1023, 0, 255));
  119.  
  120.   //return the value
  121.   return val;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement