질문게시판 > 답변 : Ph 블루투스로 앱인벤터 출력

TODAY1,095 TOTAL2,933,381
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | 답변 : Ph 블루투스로 앱인벤터 출력

페이지 정보

작성자 master 작성일2023-04-29 12:13 조회5,782회 댓글15건

본문

	

#include <SoftwareSerial.h>

#define BT_RXD 3

#define BT_TXD 2

SoftwareSerial mySerial(BT_RXD,BT_TXD);

//

#define SensorPin A0

#define LED       13

//

#define Offset           0.33  // ph7.0 측정 시 오프셋

#define samplingInterval 20

#define printInterval    800

#define ArrayLenth       40

//

int      pHArray[ArrayLenth],pHArrayIndex=0;

unsigned long samplingTime,long printTime;

float    pHValue,voltage;

double   avg

//

void setup(void){

  pinMode(LED,OUTPUT);

  Serial.begin(9600);

  mySerial.begin(9600);

  Serial.println("pH meter experiment!");

  printTime=millis();

  samplingTime=millis();

}

//

void loop(void){

  if(millis()-samplingTime>samplingInterval){

    pHArray[pHArrayIndex++]=analogRead(SensorPin);

    if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;

    voltage=avergearray(pHArray,ArrayLenth)*5.0/1024;

    pHValue=3.5*voltage+Offset;

    samplingTime=millis();

  }

  if(millis()-printTime>printInterval){

    Serial.print("Voltage:");       Serial.print(voltage,2);

    Serial.print("    pH value: "); Serial.println(pHValue,2);

    digitalWrite(LED,digitalRead(LED)^1);

    printTime=millis();

  }

}

//

double avergearray(int *arr,int number){

  int i,max,min;

  long amount=0;

  if(number<=0){ Serial.println("Error number for the array to avraging!/n"); return 0; }

  if(number< 5){

    for(i=0;i<number;i++)amount+=arr[i];

    avg=amount/number;

    return avg;

  }

  else {

    if(arr[0]<arr[1]){ min=arr[0]; max=arr[1]; }

    else             { min=arr[1]; max=arr[0]; }

    for(i=2;i<number;i++){

      if(arr[i]<min){ amount+=min; min=arr[i]; }

      else{

        if(arr[i]>max){ amount+=max; max=arr[i]; }

        else          { amount+=arr[i]; }

      }

    }

    avg=(double)amount/(number-2);

  }

  return avg;

  mySerial.println("Ph: ");     mySerial.println(pHValue,2); mySerial.println("% ");

  mySerial.println("Voltage "); mySerial.println(" V");

  delay(1000);

}

//---------------------------------------------------------------------------- 

loop()함수에서 선언된 변수는 avergearray() 함수에서 사용하지 못합니다.

여러 함수에서 사용하려면 전역변수로 선언해야 합니다.

//

  return avg; <-- 여기서 함수를 리턴하면 아래 코드는 실행되지 못합니다.

  mySerial.println("Ph: ");     mySerial.println(pHValue,2); mySerial.println("% ");

  mySerial.println("Voltage "); mySerial.println(" V"); <-- 전압 변수 출력은 안보입니다.

  delay(1000);

}


  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 15

조회수 5,782

안녕하세요13님의 댓글

안녕하세요13 작성일

mySerial.println을 앞으로 땡겨야하나여?

master님의 댓글

master 댓글의 댓글 작성일

mySerial.println("Ph: ");    mySerial.println(pHValue,2); mySerial.println("% ");
  mySerial.println("Voltage "); mySerial.println(" V"); //<-- 전압 변수 출력은 안보입니다.
  delay(1000);
  return avg; //<-- 리턴코드를 제일 아래로 내리면 됩니다.
}

안녕하세요13님의 댓글

안녕하세요13 작성일

질문이 많아 죄송하지만 왜 'pHValue' 위에 static float pHValue, voltage; 로 선언한거 같은데 블루투스 시리얼로 보낼때 pHValue가 선언되지 않았다고 나오는데 무슨 문제일까여

master님의 댓글

master 댓글의 댓글 작성일

// unsigned long samplingTime,long printTime; // printTime 앞의 long을 삭제할 것
unsigned long samplingTime,printTime;
//
double  avg; // 마지막에 세미콜론 빠져있음

안녕하세요13님의 댓글

안녕하세요13 작성일

센서값을 앱인벤터로 출력을 하고싶은데 블루투스연결은 되었는데 앱인벤터 받을수있는바이트크기가져오기를 해도 0이라고 출력되는데 혹시 블루투스쪽에는 문제가 뭐인지 알려주실수있으신가여

안녕하세요13님의 댓글

안녕하세요13 작성일

#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define SensorPin A0
#define Offset 0.33  // ph7.0 측정 시 오프셋
#define LED 13
#define samplingInterval 20
#define printInterval 800
#define ArrayLenth 40
#define BT_RXD 3
#define BT_TXD 2
#define ONE_WIRE_BUS 4
SoftwareSerial HC06(BT_RXD, BT_TXD);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int sensorValue;
int pHArray[ArrayLenth];
int pHArrayIndex = 0;
void setup(void) {
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
  HC06.begin(9600);
  sensors.begin();
  Serial.println("pH meter experiment!");
}
void loop(void) {
  HC06.print("sensorValue:");
  HC06.println(sensorValue);
  if(HC06.available()){
    Serial.write(HC06.read());
  }
  if(Serial.available()){
    HC06.write(Serial.read());
  }
  static unsigned long samplingTime = millis();
  static unsigned printTime = millis();
  static float pHValue, voltage;
  if (millis() - samplingTime > samplingInterval) {
    pHArray[pHArrayIndex++] = analogRead(SensorPin);
    if (pHArrayIndex == ArrayLenth) pHArrayIndex = 0;
    voltage = avergearray(pHArray, ArrayLenth) * 5.0 / 1024;
    pHValue = 3.5 * voltage + Offset;
    samplingTime = millis();
  }
    sensors.requestTemperatures();
 
    sensors.requestTemperatures();
  // 섭씨온도를 뜻합니다.
    Serial.print(sensors.getTempCByIndex(0));
  delay(1000);
  if (millis() - printTime > printInterval) {
    Serial.print("    pH value: ");
    Serial.println(pHValue, 2);
    digitalWrite(LED, digitalRead(LED) ^ 1);
    printTime = millis();
    delay(1000);
 
   
}
  }
double avergearray(int* arr, int number) {
  int i;
  int max, min;
  double avg;
  long amount = 0;
  if (number <= 0) {
    Serial.println("Error number for the array to avraging!/n");
    return 0;
  }
  if (number < 5) {
    for (i = 0; i < number; i++) {
      amount += arr[i];
    }
    avg = amount / number;
    return avg;
  } else {
    if (arr[0] < arr[1]) {
      min = arr[0];
      max = arr[1];
    } else {
      min = arr[1];
      max = arr[0];
    }
    for (i = 2; i < number; i++) {
      if (arr[i] < min) {
        amount += min;
        min = arr[i];
      } else {
        if (arr[i] > max) {
          amount += max;
          max = arr[i];
        } else {
          amount += arr[i];
        }
      }
    }
    avg = (double)amount / (number - 2);
  }
    return avg;
}
코드는 이렇게 바꾸었습니다.

master님의 댓글

master 댓글의 댓글 작성일

int sensorValue;

void loop(void) {
  HC06.print("sensorValue:"); HC06.println(sensorValue);

sensorValue 변수 값을 변경하지 않은 상태로 출력하고 있네요?
sensorValue 값은 0일테니 0만 출력되겠습니다.

안녕하세요13님의 댓글

안녕하세요13 작성일

void loop() {
int sensorValue;
  HC06.print("sensorValue:"); HC06.println(sensorValue);
이렇게 해야하는건가여

master님의 댓글

master 댓글의 댓글 작성일

변수 선언 위치를 말하는 것이 아니고
어디에서 sensorValue 변수에 값을 넣는지를 묻는 겁니다.

안녕하세요13님의 댓글

안녕하세요13 작성일

Ds18b20센서값을 sensorValue ph값을 phValue로 해서 보내싶습니다. 아두이노 배운지가 얼마안돼서 찾아봐도 잘 모르겠어서 dht11센서로는 온습도가 잘 전송되어서 이를 활용해서 두개의 센서값을 앱인벤터로 보내는 것을 하기위해 연습중입니다.

안녕하세요13님의 댓글

안녕하세요13 작성일

센서모니터링은 ph값 온도값은 잘 출력이되는데 ph는 Serial.println(pHValue, 2); 을 통해 시리얼통신이 되고 온도값은
Serial.print(sensors.getTempCByIndex(0));로 하고있다고 생각하는데

안녕하세요13님의 댓글

안녕하세요13 작성일

sensorValue = sensors.getTempCByIndex(0)을 통해 온도값을 int sensorValue로 선언을 하고 블루투스로 보내야 하는걸까여

master님의 댓글

master 댓글의 댓글 작성일

int sensorValue로 선언을 하면 정수값만 출력됩니다.
float sensorValue로 선언을 하면 소숫점까지 출력됩니다.

안녕하세요13님의 댓글

안녕하세요13 작성일

여전히 0으로 출력되는데 HC06.available 쪽에서 시리얼통신 출력값을 보내는 과정에서의 문제일까여
아니면 그냥 아두이노에 출력되는 센서모니터링 텍스트 전체를 보내는 방법이라도 있을까여

master님의 댓글

master 댓글의 댓글 작성일

시리얼모니터에 정상적으로 표시되도록 만들고 난 후에
같은 데이터를 블루투스로 출력하세요

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
질문 아두이노 블루투스와 초음파센서를 이용한 장애물 정지댓글[2] 둘둘이 23-09-22 102
답변 답변글 답변 : 아두이노 블루투스와 초음파센서를 이용한 장애물 정지댓글[1] master 23-09-25 93
질문 Arduino nano 33 iot 모듈 블루투스 통신댓글[5] 이미지첨부파일 senior 23-08-16 700
질문 아두이노 블루투스모듈(HC-06) 모바일 값 전송 질문댓글[3] 이미지첨부파일 소오금 23-08-13 508
질문 아두이노 서보모터 블루투스 제어댓글[3] rnqudah 23-08-01 761
질문 dfplayer 블루투스 연결 앱인벤터댓글[1] 이미지첨부파일 아두이노우 23-06-11 447
질문 Ph 블루투스로 앱인벤터 출력 안녕하세요13 23-04-28 474
현재글 답변글 답변 : Ph 블루투스로 앱인벤터 출력댓글[15] master 23-04-29 5783
질문 아두이노 초음파센서와 HC06(블루투스)를 이용, 릴레이동작댓글[3] 나도할수있어아두 23-04-27 1463
질문 아두이노 블루투스 서보 제어서 튐댓글[2] 첨부파일 타이지 23-04-24 1103
질문 아두이노 2대 블루투스댓글[2] 다유 23-04-13 1057
질문 Attiny85로 블루투스 수신받아서 모터 방향제어가 가능할까요?댓글[1] 비차 23-04-07 886
질문 아두이노우노 블루투스 2개 연결댓글[1] dsfadfs 23-02-28 1223
질문 아두이노 블루투스 관련 질문입니다. 생물공학도 23-02-21 831
답변 답변글 답변 : 아두이노 블루투스 관련 질문입니다. master 23-02-21 842
질문 블루투스에서 아두이노로 신호전달에 대하여(2)댓글[1] 이미지첨부파일 밍경 23-02-14 1251
질문 블루투스에서 아두이노로 신호전달에 대하여 밍경 23-02-13 937
답변 답변글 답변 : 블루투스에서 아두이노로 신호전달에 대하여 master 23-02-14 795
질문 블루투스 모듈을 이용해 정해진 위치로 이동할 수가 있나요?댓글[2] BBAM 23-01-05 1612
질문 매트랩 블루투스 무선 통신댓글[2] 이미지첨부파일 아두이노대학 22-12-08 2008
질문 Atmega128, 블루투스 문제 donggle 22-12-02 1468
답변 답변글 답변 : Atmega128, 블루투스 문제 master 22-12-03 1169
질문 ATmega128과 앱인벤터를 이용해 블루투스 연결을 하고싶은데 코드를 어떻게 작성해야 할까요?댓글[1] 디디 22-12-01 1897
질문 아두이노 GPS(neo-6m)정보를 블루투스(HC06)을 통해 스마트폰으로 가져오는 방법 없을까요?댓글[1] 회색고로케 22-12-01 1558
질문 아두이노 화재센서 블루투스 연동 질문드립니다.댓글[1] 원할머니보고쌈 22-11-29 2309
질문 급함)) 스위치 또는 블루투스로 전체회로를 ON/OFF하고싶습니다. 이미지 Ptype4 22-11-28 1759
답변 답변글 답변 : 급함)) 스위치 또는 블루투스로 전체회로를 ON/OFF하고싶습니다.댓글[1] 이미지 master 22-11-30 1957
질문 블루투스로 값을 받았는대 led가 켜지지 않습니다.. ENEN 22-11-26 1988
답변 답변글 답변 : 블루투스로 값을 받았는대 led가 켜지지 않습니다..댓글[1] master 22-11-27 2215
질문 블루투스 통신이랑 도어락 코드를 합치고 싶습니다.댓글[1] 이재우 22-11-20 2765
게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기