티스토리 뷰

활동/ETC

아두이노 만들기 (2)

geonwoopaeng@gmail.com 2020. 8. 24. 16:53

아두이노를 만들었지만 코드를 바꿔 기능을 조정해야 되는데 아쉽...다

그래도 심장박동에 의해 모터와 LED제어를 제작했다.

센서가 심장 박동을 처음 check할 때 그리고 check중 외부 환경에 의해 변화가 심해 많은 기능을 구현하기 힘들었다.

외부 환경에 대한 생각을 많이 해야 겠다.!!!!

 

 

 

<핸들에 붙어 있는 '심박수 센서'를 이용해 특정 범위를 벗어 날 때 '비상등'과 '자동차의 움직임'을 막아 더 큰 사고를 막는 System >

 

 

 

 

 

< 소스 코드 >

#define USE_ARDUINO_INTERRUPTS true    // Set-up low-level interrupts for most acurate BPM math.
#include <PulseSensorPlayground.h>     // Includes the PulseSensorPlayground Library.   

//  Variables
const int PulseWire = 0;       // PulseSensor PURPLE WIRE connected to ANALOG PIN 0
const int LED13 = 13;          // The on-board Arduino LED, close to PIN 13. fornt LED(Car)
const int LED7 = 7;            // front LED(Car)
const int LED12 = 12;          // Back LED(Car)
const int LED2 = 2;            // Back LED(Car)
int Threshold = 550;           // Determine which Signal to "count as a beat" and which to ignore.
                               // Use the "Gettting Started Project" to fine-tune Threshold Value beyond default setting.
                               // Otherwise leave the default "550" value. 
                               
PulseSensorPlayground pulseSensor;  // Creates an instance of the PulseSensorPlayground object called "pulseSensor"

/* L9110s 모터드라이버
   오른쪽모터
   L9110s A_1A D6
   L9110s A_1B D11
   왼쪽모터
   L9110s B_1A D3
   L9110s B_1B D5
*/
int A_1A = 6;
int A_1B = 11;
int B_1A = 3;
int B_1B = 5;

//모터의 좌우 속도가 다를 경우, 
//아래의 변수를 조정하여 해결할 수 있습니다.
int motorASpeed = 150; // 모터A 속도 (0~255)
int motorBSpeed = 150; // 모터B 속도 (0~255)

void setup() {   

  Serial.begin(9600);          // For Serial Monitor

  // Configure the PulseSensor object, by assigning our variables to it. 
  pulseSensor.analogInput(PulseWire);   
  pulseSensor.setThreshold(Threshold);   

    //핀을 초기화합니다.
  //L9110S 모터드라이버의 핀들을 출력으로 변경합니다.
  pinMode(A_1A, OUTPUT);
  pinMode(A_1B, OUTPUT);
  pinMode(B_1A, OUTPUT);
  pinMode(B_1B, OUTPUT);
  
  pinMode(LED13, OUTPUT); // front LED
  pinMode(LED7, OUTPUT); //front LED
  pinMode(LED2, OUTPUT); // Back LED
  pinMode(LED12, OUTPUT); // Back LED
  
  digitalWrite(A_1A, LOW);
  digitalWrite(A_1B, LOW);
  digitalWrite(B_1A, LOW);
  digitalWrite(B_1B, LOW);
  
  // Double-check the "pulseSensor" object was created and "began" seeing a signal. 
   if (pulseSensor.begin()) {
    Serial.println("We created a pulseSensor Object !");  //This prints one time at Arduino power-up,  or on Arduino reset.  
  }
}

void loop() {

 int myBPM = pulseSensor.getBeatsPerMinute();  // Calls function on our pulseSensor object that returns BPM as an "int".
                                               // "myBPM" hold this BPM value now. 

if (pulseSensor.sawStartOfBeat()) {            // Constantly test to see if "a beat happened". 
 Serial.println("♥  A HeartBeat Happened ! "); // If test is "true", print a message "a heartbeat happened".
 Serial.print("BPM: ");                        // Print phrase "BPM: " 
 Serial.println(myBPM);  // Print the value inside of myBPM. 
 
 forward();
}
else if(70>myBPM){
  digitalWrite(LED13,HIGH); // front LED on
  digitalWrite(LED7, HIGH); // front LED on
  digitalWrite(LED12,HIGH); // Back LED on
  digitalWrite(LED2, HIGH); // Back LED on
  stop();
}
  delay(30);   
  digitalWrite(LED7, LOW); // front LED off
  digitalWrite(LED13,LOW); // front LED off
  
  digitalWrite(LED2, LOW); // Back LED off
  digitalWrite(LED12,LOW); // front LED off
                   // considered best practice in a simple sketch.

}

/*
   RC카 전진
   왼쪽,오른쪽 모터를 정회전하여 전진합니다.
*/
void forward() {
  //모터A 정회전
  analogWrite(A_1A, motorASpeed);
  analogWrite(A_1B, 0);
  //모터B 정회전
  analogWrite(B_1A, motorBSpeed);
  analogWrite(B_1B, 0);
}

/*                        
 RC카 정지
   오른쪽,왼쪽모터를 모두 정지합니다.
*/
void stop() {
  //모터A 정지
  analogWrite(A_1A, 0);
  analogWrite(A_1B, 0);
  //모터B 정지
  analogWrite(B_1A, 0);
  analogWrite(B_1B, 0);
}
반응형

'활동 > ETC' 카테고리의 다른 글

kakao Coding Test  (0) 2020.09.17
Naver 오픈 클래스  (0) 2020.09.15
Japan internship  (0) 2020.09.14
Developer Student Clubs(Google)  (0) 2020.08.27
아두이노 만들기(1)  (2) 2020.08.24
공지사항
최근에 올라온 글