BASIC4MCU | 질문게시판 | 아두이노에 이산화탄소 센서 여러개 연결방법
페이지 정보
작성자 생물공학도 작성일2023-04-14 11:38 조회858회 댓글1건본문
안녕하세요
제가 예전에 도움받아 이산화탄소 센서에서 감지한 값을 엑셀(PLX-DAQ)와 연동하여 확인하는 방법을 익혔습니다.
하지만 실험 중에 여러 개의 이산화탄소 센서를 한번에 연결할 수 있지 않을까? 하는 생각이 들어서 여쭤보고 싶습니다.
브래드보드와 아두이노를 연결하여 input, output을 다르게 하면 여러 개의 이산화탄소 센서를 연결할 수 있을까요?
아니면 input, output을 동일하게 하여도 값을 측정할 수 있을까요??
만약 두 개가 가능하다면 소스코드를 어떻게 바꿔야할까요?
답변 주신다면 감사하겠습니다!
아래는 지금 사용하고 있는 이산화탄소와 PLX-DAQ(엑셀)을 연동한 소스코드입니다.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(13, 11);
unsigned char Send_data[4] = {0x11,0x01,0x01,0xED};
unsigned char Receive_Buff[8];
unsigned char recv_cnt = 0;
unsigned int PPM_Value;
void Send_CMD(void) {
unsigned int i;
for(i=0; i<4; i++) {
mySerial.write(Send_data[i]);
delay(1);
}
}
unsigned char Checksum_cal(void) {
unsigned char count, SUM=0;
for(count=0; count<7; count++) {
SUM += Receive_Buff[count];
}
return 256-SUM;
}
void setup() {
pinMode(13,INPUT);
pinMode(11,OUTPUT);
Serial.begin(9600);
while (!Serial) ;
mySerial.begin(9600);
while (!mySerial);
Serial.println("CLEARDATA");
Serial.println("LABEL,No.,ppm");
}
void loop() {
Serial.print("Sending...");
Send_CMD();
while(1) {
if(mySerial.available()) {
Receive_Buff[recv_cnt++] = mySerial.read();
if(recv_cnt ==8){recv_cnt = 0; break;}
}
}
if(Checksum_cal() == Receive_Buff[7]) {
PPM_Value = Receive_Buff[3]<<8 | Receive_Buff[4];
Serial.write(" PPM : ");
Serial.println(PPM_Value);
}
else {
Serial.write("CHECKSUM Error");
}
delay(1000);
Serial.print("DATA,TIME");
Serial.print(",");
Serial.println(PPM_Value);
}
댓글 1
조회수 858master님의 댓글
master 작성일
두 가지 점을 체크하세요
1. 여러개의 이산화탄소 센서를 연결한 예제를 웹검색으로 찾아본다
2. PLX-DAQ에서 여러개의 필드를 처리할 수 있는지 찾아본다
고수라면 직접 만들어서 처리하겠지만
초보자는 예제가 없으면 해결하기 어려울겁니다.