Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- code example for useing 4051 Analog Multiplexer.
- by lovecoding.blogger.com 2018
- */
- int s0 = 2; //value of select pin at the 4051 (A)
- int s1 = 3; //value of select pin at the 4051 (B)
- int s2 = 4; //value of select pin at the 4051 (C)
- //พอร์ต COM
- #define dataPin A0
- // Select bit ตัวเลือกช่องสัญญานของ Analog Multiplexer ที่ต้องการอ่านค่า
- /* s2 s1 s0
- * 0 0 0 ช่องที่ 0
- * 0 0 1 ช่องที่ 1
- * 0 1 0 ช่องที่ 2
- * 0 1 1 ช่องที่ 3
- * 1 0 0 ช่องที่ 4
- * 1 0 1 ช่องที่ 5
- * 1 1 0 ช่องที่ 6
- * 1 1 1 ช่องที่ 7
- */
- int bit0[8] = {0,1,0,1,0,1,0,1};
- int bit1[8] = {0,0,1,1,0,0,1,1};
- int bit2[8] = {0,0,0,0,1,1,1,1};
- void setup() {
- //กำหนดความเร็วในการรับส่งข้อมูลผ่าน Serial
- Serial.begin(9600);
- // กำหนดสถานะเริ่มต้นของ GPIO s0 s1 s2 ให้เป็น OUTPUT
- pinMode(s0,OUTPUT);
- pinMode(s1,OUTPUT);
- pinMode(s2,OUTPUT);
- // กำหนดสถานะเริ่มต่นของ GPIO A0 เพื่อรับข้อมูลจาก Analog Multiplexer
- pinMode(dataPin,INPUT);
- }
- void loop() {
- // วนลูปเพื่อเก็บข้อมูลจาก Analog Multiplexer ในแต่ละช่องสัญญาน
- for(int ch = 0; ch < 8; ch++){
- /* ตัวเลือกช่องสัญญานของ Analog Multiplexer ที่ต้องการอ่านค่า
- * สลับช่องสัญญานโดยการกำหนดลอจิกทางไฟฟ้า(HIGH,LOW) ให้กับ GPIO s0 s1 s2
- */
- digitalWrite(s0,bit0[ch]);
- digitalWrite(s1,bit1[ch]);
- digitalWrite(s2,bit2[ch]);
- delay(20); // หน่วงเวลาเพื่อรอให้ Analog Multiplexer สลับช่องสัญญานเสร็จ
- // อ่านค่าจาก Analog Multiplexer ในแต่ละช่องสัญญานโดยจะเริ่มตั้งแต่ช่องที่ 0 ถึง 8 และนำมาเก็บไว้ในตัวแปร value
- int value = analogRead(dataPin);
- // แสดงข้อมูลที่อ่านค่าได้จาก Analog Multiplexer ในแต่ละช่องสัญญาน
- Serial.print(value);
- Serial.print(" ");
- }
- Serial.println(""); //ขึ้นบรรทัดใหม่
- }
Add Comment
Please, Sign In to add comment