Project

General

Profile

Actions

16 Channel Multiplexer

Opis

Schemat podłączenia

Kod

File miniSixtenChannelMultiplexer.ino

// mozliwe warianty kanalow
int muxChannel[16][4]={
    {0,0,0,0}, //channel 0 
    {1,0,0,0}, //channel 1 
    {0,1,0,0}, //channel 2 
    {1,1,0,0}, //channel 3 
    {0,0,1,0}, //channel 4 
    {1,0,1,0}, //channel 5 
    {0,1,1,0}, //channel 6 
    {1,1,1,0}, //channel 7 
    {0,0,0,1}, //channel 8 
    {1,0,0,1}, //channel 9 
    {0,1,0,1}, //channel 10 
    {1,1,0,1}, //channel 11 
    {0,0,1,1}, //channel 12 
    {1,0,1,1}, //channel 13 
    {0,1,1,1}, //channel 14
    {1,1,1,1}  //channel 15 
}; 

// mux control pins
int s0 = 4;
int s1 = 5;
int s2 = 6;
int s3 = 7;

// mux "SIG" pin
int SIG_pin = 0;

void setup()
{
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
  pinMode(s3, OUTPUT);

  digitalWrite(s0, LOW);
  digitalWrite(s1, LOW);
  digitalWrite(s2, LOW);
  digitalWrite(s3, LOW);

  Serial.begin(9600);
}

void loop()
{
  // petla czytajaca wszystkie 16 wartosci  
  Serial.println("Value at channel: ");
  for(int i = 0; i < 16; i++)
  {    
    Serial.print(" ch : ");
    Serial.print(i);
    Serial.print(" : ");
    Serial.println(readMux(i));
  }
  delay(1000);
}

int readMux(int channel)
{
  int controlPin[] = {s0, s1, s2, s3};

  // loop po 4 ustawiajacych pinach
  for(int i = 0; i < 4; i++)
  {
    digitalWrite(controlPin[i], muxChannel[channel][i]);
  }

  // czytanie wartosci z SIH pin1
  int val = analogRead(SIG_pin);
  return val;
}

Wynik

Repozytorium

Git: https://git.clss.pl/codinglifestyle/minis/miniarduino/miniSixtenChannelMultiplexer.git

Linki

Korzystano z poradnika:
https://bildr.org/2011/02/cd74hc4067-arduino/

Updated by Lukasz over 3 years ago · 2 revisions

Go to top
Add picture from clipboard (Maximum size: 50 MB)