질문게시판 > 서보모터, 온습도센서 코드 질문

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

서보모터, 온습도센서 코드 질문

페이지 정보

작성자 kshdlfaldfh 작성일22-06-22 13:20 조회412회 댓글2건

첨부파일

본문

안녕하세요. 여쭤볼 게 있어서 글 남깁니다. 소리가 130이 넘으면 서보모터와 스피커가 작동하고 온습도가 일정값이 넘으면 O,X 데이터를 앱에 전송하는 코드를 작성하였는데 어디서 잘못된 것인지 실행을 시키면 소리가 130이 넘지 않은 상태에서 서보모터가 조금씩 작동을 합니다. (첨부된 영상) 이 코드에 오류가 있는건가요..? 코드를 서보모터와 온습도를 따로따로 작동시켰을 때에는 오류가 없는 걸로 보아 합치면서 오류가 생긴 듯합니다.  

 

#include <MsTimer2.h>

#include <Servo.h>

#include <Wire.h>

#include "DHT.h"

#include <SoftwareSerial.h>

 

#define DHTPIN 4        // SDA 핀의 설정

#define DHTTYPE DHT22   // DHT22 (AM2302) 센서종류 설정

 

DHT dht(DHTPIN, DHTTYPE);

SoftwareSerial BTserial(8,9); //블루투스 연결

 

Servo myservo1;// create servo object to control a servo

Servo myservo2;// twelve servo objects can be created on most boards

int Sensor = A1; 

int speakerPin = 12;

 

char notes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc "; 

int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };

int tempo = 300;

volatile int pos=0,length=15,len=0,run=0;

 

void playTone(int tone, int duration) { //자장가 출력1

  for (long len = 0; len < duration * 1000L; len += tone * 2) {

    digitalWrite(speakerPin, HIGH);

    delayMicroseconds(tone);

    digitalWrite(speakerPin, LOW);

    delayMicroseconds(tone);

  }

}

 

void playNote(char note, int duration) { //자장가 출력2

  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };

  int tones[] = { 2015, 1800, 1619, 1532, 1375, 1236, 1114, 1056 };

  

  for (int len = 0; len < 8; len++) {

    if (names[len] == note) {

      playTone(tones[len], duration);

    }

  }

}

 

 

void flash() { //서보모터 작동

  if(run){

    if    (len< 5){ if(pos<100)pos++; }

    else if(len< 9){ if(pos>  0)pos--; }

    else if(len<14){ if(pos<100)pos++; }

    else          { if(pos>  0)pos--; }

    myservo1.write(pos);

    myservo2.write(pos);

  }

  else{

    pos=0; myservo1.write(0); myservo2.write(0);

  }

}

 

void setup() {

  myservo1.attach(6);

  myservo2.attach(5);// attaches the servo on pin 5,6 to the servo object

  Serial.begin(9600);

  dht.begin();

  pinMode(Sensor,INPUT);

  pinMode(speakerPin, OUTPUT);

  BTserial.begin(9600);

 

  MsTimer2::set(20,flash);// flash함수를 20ms마다 호출한다

  MsTimer2::start();

}

 

 

void loop() {

 int Sound = analogRead(Sensor);

 Serial.println(Sound);

 

 if (Sound > 130) { //소리가 130이상이면

    run=1;

    for (len=0;len<length;len++){

      if (notes[len]==' ') { delay(beats[len] * tempo); }

      else { playNote(notes[len], beats[len] * tempo); }

      delay(tempo / 2); 

    }

    run=0;

  }

  float t = dht.readTemperature(); //온도 읽어옴

  float h = dht.readHumidity();    //습도 읽어옴

  

  if (isnan(t) || isnan(h)) { //값 읽기 실패시 시리얼 모니터 출력

    Serial.println("Failed to read from DHT");

  } else { //온도, 습도 표시 시리얼 모니터 출력

    //Serial.print("Temperature: "); 

    //Serial.print(t);

    //Serial.print(" ºC\t");

    //Serial.print("Humidity: "); 

    //Serial.print(h);

    //Serial.println(" % rH");

  }

  BTserial.print(t); 

  BTserial.println(" ºC");

  BTserial.print(h);

  BTserial.println(" %");

  if(t >=29 and h >= 80) {

    BTserial.println("O"); //출력

  } else{

    BTserial.println("X");

  } 

  delay(1000); 

}

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

댓글 : 2

조회수 : 412

master님의 댓글

master 작성일

if(t>=29 and h>=80){
문법에 맞지 않는 문장입니다.
if(t>=29 && h>=80){

kshdlfaldfh님의 댓글

kshdlfaldfh 댓글의 댓글작성일

and로 했을 때도 실행되었고, &&로 바꿔도 영상에 나온 거랑 똑같이 작동됩니다..

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 PIC 블루투스 연결 댓글[18] 픽공부 새글 10:28
질문 PIC18F452 블루투스 연결 댓글[4] 마이컴 새글 22-08-08
질문 아두이노 코드 해석을 못하겠습니다... 댓글[2] 김가헌 새글 22-08-08
질문 아두이노 코드를 avr로 변환해 주세요 ...ㅠ 댓글[3] 옹냥냥 새글 22-08-08
질문 아두이노 녹음-스피커모듈 관련 질문있습니다 ㅠㅠ 댓글[2] 방귀뿡뿡 새글 22-08-08
질문 Serial EEPROM 실수값 저장.. 댓글[2] 첨부파일광이  22-08-07
질문 STM32 Live Expression 값들이 깜빡이는… 댓글[3] 둠둠  22-08-05
질문 아두이노 ESP32 wifi module 댓글[1] Yoon  22-08-03
질문 atmega128과 dht11, lcd를 연결했는데 0… 댓글[1] 고양이33  22-08-02
질문 ATMEGA 128 코드를 합치려고 하는데 어렵네요 댓글[2] 고양이33  22-08-02
질문 서보모터 제어에 대해 질문있습니다. 댓글[2] 첨부파일뉴비에오  22-07-30
질문 적외선 통신 알려주실분있나요 ㅠㅠ 댓글[1] hkjsj10  22-07-30
질문 아두이노 관련 궁금합니다. 댓글[1] 뱝뱝  22-07-28
질문 아두이노 우노 MCP4725 댓글[3] opqr  22-07-27
질문 레오나르도 인체감지센서 알림 안옴 면지지  22-07-24
답변 답변 : 레오나르도 인체감지센서 알림 안옴 master  22-07-25
질문 Uno에서 엔코더값 놓치는 이유가 뭘까요... 댓글[3] MAKTUB  22-07-24
질문 아두이노 압력센서 연동 질문 댓글[4] dbice  22-07-23
질문 아두이노 버튼 누르기 문의 댓글[1] 김형근  22-07-23
질문 HM10 다중페어링 댓글[1] ㅎㅋㅎㅋㅎ  22-07-22
질문 모터드라이브 선정 댓글[6] 조숩인  22-07-22
질문 ad9850 sin파 2 댓글[6] 첨부파일opqr  22-07-21
질문 ad9850 sin파 합성 댓글[7] 첨부파일opqr  22-07-20
질문 특정값이 n초이상,n번 이상 연속될경우를 감지하는 함수… 댓글[4] 우수  22-07-17
질문 delay를 millis함수로 바꾸는데 질문있습니다. 댓글[12] 첨부파일뉴비에오  22-07-16
질문 피에조 부저로 맬로디 만들기인대 코딩 까지 했는데 아두… 댓글[2] 첨부파일mingu123  22-07-15
질문 블루투스와 안드로이드 연동관련 질문입니다! ㅎㅇㅎㅇ  22-07-14
질문 아두이노간 블루투스 통신에 대해서 질문있습니다 첨부파일뉴비에오  22-07-13
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전