티스토리 뷰
아두이노를 만들었지만 코드를 바꿔 기능을 조정해야 되는데 아쉽...다
그래도 심장박동에 의해 모터와 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 |
공지사항
최근에 올라온 글