ماژول 74HC4067 یک هدر برد 74HC4067 می باشد که امکان اتصال آن به برد بورد را فراهم می سازد . 74HC4067 یکی مالتی پلکس آنالوگ می باشد . در مالتی پلکس های معمولی خروجی ها تنها دو حالت صفر یا یک دارند اما در مالتی پلکس های آنالوگ ، مقدار سیگنال ورودی به همان صورت در خروجی قرار می گیرد . از این ماژول می توانید برای راه اندازی سنسور های مختلف استفاده کنید . به طور مثال در SoC های ESP8266EX تنها یک کانال ورودی ADC وجود دارد لذا به راحتی با استفاده از مازول 74HC4067 می توانید چندین سنسور با خروجی آنالوگ را به آن متصل کنید . 74HC4067 دارای 16 کانال وردی آنالوگ است که از طریق 4 پین می توان هر کدام از آن ها را کنترل نمود .
پین های مازول74HC4067 :
مشخصات :
- ولتاژ تغذیه 2 تا 6 ولت
- دمای کاری -55 تا 125+ درجه سانتیگراد
- دارای 16 کانال خروجی
- دارای پین EN جهت فعال سازی ماژول
- دارای 4 پین آدرس
- خروجی کانال ها به صورت آنالوگ
- زمان پاسخ دهی 6 نانو ثانیه
- مقاومت خروجی 70 اهم
راه اندازی ماژول 74HC4067 :
برای راه اندازی این ماژول باید ابتدا تغذیه ماژول متصل گردد و پین EN صفر شود تا ماژول فعال گردد سپس با قرار گرفتن هر آدرس بر روی پین های S1 تا S3 ، سیگنال ورودی پین SIG بر روی خروجی قرار خواهد گرفت .
//Mux control pins int s0 = 8; int s1 = 9; int s2 = 10; int s3 = 11; //Mux in "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(){ //Loop through and read all 16 values //Reports back Value at channel 6 is: 346 for(int i = 0; i < 16; i ++){ Serial.print("Value at channel "); Serial.print(i); Serial.print("is : "); Serial.println(readMux(i)); delay(1000); } } int readMux(int channel){ int controlPin[] = {s0, s1, s2, s3}; 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 }; //loop through the 4 sig for(int i = 0; i < 4; i ++){ digitalWrite(controlPin[i], muxChannel[channel][i]); } //read the value at the SIG pin int val = analogRead(SIG_pin); //return the value return val; }