Showing
1 changed file
with
29 additions
and
43 deletions
1 | #include <CoDrone.h> // 코드론 라이브러리 | 1 | #include <CoDrone.h> // 코드론 라이브러리 |
2 | 2 | ||
3 | #define ShockLed 12 // 충격 상태 확인을 위한 LED 핀번호 | 3 | #define ShockLed 12 // 충격 상태 확인을 위한 LED 핀번호 |
4 | +#define buzzer 7 // 피에조 버저 핀번호 | ||
4 | #define LeftVib 27 // 왼쪽 진동자 핀번호 | 5 | #define LeftVib 27 // 왼쪽 진동자 핀번호 |
5 | #define RightVib 28 // 오른쪽 진동자 핀번호 | 6 | #define RightVib 28 // 오른쪽 진동자 핀번호 |
6 | 7 | ||
... | @@ -55,9 +56,9 @@ void accel_calculate() | ... | @@ -55,9 +56,9 @@ void accel_calculate() |
55 | */ | 56 | */ |
56 | 57 | ||
57 | // Data SHIFT From CoDrone Accelerometer | 58 | // Data SHIFT From CoDrone Accelerometer |
58 | - ac_x = CoDrone.getAccelerometer().x; | 59 | + ac_x = CoDrone.ImuAccX / 2; |
59 | - ac_y = CoDrone.getAccelerometer().y; | 60 | + ac_y = CoDrone.ImuAccY / 2; |
60 | - ac_z = CoDrone.getAccelerometer().z; | 61 | + ac_z = CoDrone.ImuAccZ / 2; |
61 | 62 | ||
62 | //맵핑화 시킨 것 - 즉 10000으로 맵핑시킴 | 63 | //맵핑화 시킨 것 - 즉 10000으로 맵핑시킴 |
63 | normal_x = map(int(ac_x), -16384, 16384, -5000, mapping_value); | 64 | normal_x = map(int(ac_x), -16384, 16384, -5000, mapping_value); |
... | @@ -76,17 +77,6 @@ void accel_calculate() | ... | @@ -76,17 +77,6 @@ void accel_calculate() |
76 | void Emergency_state_() | 77 | void Emergency_state_() |
77 | { | 78 | { |
78 | digitalWrite(ShockLed , HIGH); // 릴레이핀을 True값으로 바꿔 13번 핀의 LED를 ON시킨다. | 79 | digitalWrite(ShockLed , HIGH); // 릴레이핀을 True값으로 바꿔 13번 핀의 LED를 ON시킨다. |
79 | - Serial.print("SHOCK level : "); | ||
80 | - Serial.println(shock_level); // Serial 모니터로 확인 | ||
81 | - Serial.print(" x: "); | ||
82 | - Serial.print(deltha_x[0]); | ||
83 | - Serial.print(" y: "); | ||
84 | - Serial.print(deltha_y[0]); | ||
85 | - Serial.print(" z: "); | ||
86 | - Serial.println(deltha_z[0]); | ||
87 | - | ||
88 | - /*Serial.print(" deltha_1 : "); Serial.print(deltha_x[1]); | ||
89 | - Serial.print(" deltha_2 : "); Serial.println(deltha_x[2]);*/ | ||
90 | } | 80 | } |
91 | 81 | ||
92 | // 충격 감지함수 | 82 | // 충격 감지함수 |
... | @@ -168,6 +158,9 @@ void Shock_Sensing() | ... | @@ -168,6 +158,9 @@ void Shock_Sensing() |
168 | // 진동함수 | 158 | // 진동함수 |
169 | void vibrate() | 159 | void vibrate() |
170 | { | 160 | { |
161 | + // if 충격값이 왼쪽인지 오른쪽인지 대소비교로 판단 | ||
162 | + // 판단되면 그위치에 나눈것만큼의 진동을 나눠서 크기별로 부여 | ||
163 | + // analogWrite(); | ||
171 | 164 | ||
172 | } | 165 | } |
173 | 166 | ||
... | @@ -176,10 +169,15 @@ void vibrate() | ... | @@ -176,10 +169,15 @@ void vibrate() |
176 | // Main 함수부 | 169 | // Main 함수부 |
177 | void setup() | 170 | void setup() |
178 | { | 171 | { |
172 | + // 부속 하드웨어 제어 | ||
179 | pinMode(LeftVib,OUTPUT); | 173 | pinMode(LeftVib,OUTPUT); |
180 | pinMode(RightVib,OUTPUT); | 174 | pinMode(RightVib,OUTPUT); |
181 | pinMode(ShockLed,OUTPUT); // 핀모드사용, led로 육안확인 가능하게끔 | 175 | pinMode(ShockLed,OUTPUT); // 핀모드사용, led로 육안확인 가능하게끔 |
176 | + pinMode(buzzer,OUTPUT); | ||
177 | + | ||
182 | digitalWrite(ShockLed,LOW); // HIGH - LED on, LOW - LED off (DEFAULT : OFF) | 178 | digitalWrite(ShockLed,LOW); // HIGH - LED on, LOW - LED off (DEFAULT : OFF) |
179 | + digitalWrite(buzzer,LOW); | ||
180 | + | ||
183 | CoDrone.begin(115200); // 드론 플러그의 통신 개시 (115200bps) | 181 | CoDrone.begin(115200); // 드론 플러그의 통신 개시 (115200bps) |
184 | CoDrone.AutoConnect(NearbyDrone); // 가장 가까운 위치의 드론과 연결 | 182 | CoDrone.AutoConnect(NearbyDrone); // 가장 가까운 위치의 드론과 연결 |
185 | CoDrone.DroneModeChange(Flight); // 드론을 플라이트 모드로 설정 | 183 | CoDrone.DroneModeChange(Flight); // 드론을 플라이트 모드로 설정 |
... | @@ -192,47 +190,35 @@ void loop() | ... | @@ -192,47 +190,35 @@ void loop() |
192 | byte bt1 = digitalRead(11); // ■ □ □ □ □ □ □ 밑면 적외선 센서를 입력으로 사용 | 190 | byte bt1 = digitalRead(11); // ■ □ □ □ □ □ □ 밑면 적외선 센서를 입력으로 사용 |
193 | byte bt4 = digitalRead(14); // □ □ □ ■ □ □ □ 밑면 적외선 센서를 입력으로 사용 | 191 | byte bt4 = digitalRead(14); // □ □ □ ■ □ □ □ 밑면 적외선 센서를 입력으로 사용 |
194 | byte bt8 = digitalRead(18); // □ □ □ □ □ □ ■ 밑면 적외선 센서를 입력으로 사용 | 192 | byte bt8 = digitalRead(18); // □ □ □ □ □ □ ■ 밑면 적외선 센서를 입력으로 사용 |
195 | - | ||
196 | if (bt1 && !bt4 && !bt8) // 밑면 센서 가장 끝 11번 센서에 손을 대면 실행합니다. | 193 | if (bt1 && !bt4 && !bt8) // 밑면 센서 가장 끝 11번 센서에 손을 대면 실행합니다. |
197 | { | 194 | { |
198 | - CoDrone.FlightEvent(Stop); // 드론을 정지시킵니다. | 195 | + CoDrone.FlightEvent(Stop); // 드론을 정지시킵니다. |
199 | } | 196 | } |
200 | - | 197 | + if (!bt1 && !bt4 && bt8) // 밑면 센서 가장 끝 18번 센서에 손을 대면 실행합니다. |
201 | - if (!bt1 && !bt4 && bt8) // 밑면 센서 가장 끝 18번 센서에 손을 대면 실행합니다. | ||
202 | { | 198 | { |
203 | - CoDrone.FlightEvent(Landing); // 드론을 착륙시킵니다. | 199 | + CoDrone.FlightEvent(Landing); // 드론을 착륙시킵니다. |
204 | } | 200 | } |
205 | 201 | ||
206 | Shock_Sensing(); | 202 | Shock_Sensing(); |
207 | - if(State_Parameter == true){ | 203 | + if(State_Parameter == true) |
208 | - shock_sum += deltha; | 204 | + { |
209 | - //currentMillis = millis(); | 205 | + shock_sum += deltha; |
210 | - } | 206 | + //currentMillis = millis(); |
207 | + } | ||
211 | 208 | ||
212 | - if(State_Parameter == false && shock_sum != 0){ | 209 | + if(State_Parameter == false && shock_sum != 0) |
210 | + { | ||
213 | //bluetooth.write(char_maker(shock_sum)); // 블루투스로 충격정도 전송 (shock_maker 라는 char 리턴함수를 통해 진동강도 전송) | 211 | //bluetooth.write(char_maker(shock_sum)); // 블루투스로 충격정도 전송 (shock_maker 라는 char 리턴함수를 통해 진동강도 전송) |
214 | - Serial.print("누적 충격값 : "); | ||
215 | - Serial.println(shock_sum); // 충격 누적값 전송 | ||
216 | shock_sum = 0; // 충격의 지속이 끝났으니 원래값인 0으로 초기화 | 212 | shock_sum = 0; // 충격의 지속이 끝났으니 원래값인 0으로 초기화 |
217 | } | 213 | } |
218 | 214 | ||
219 | - // 연결(페어링)이 성공한 경우에만 실행 | 215 | + |
220 | - if(PAIRING == true) | 216 | + if(PAIRING == true) // 연결(페어링)이 성공한 경우에만 실행 |
221 | { | 217 | { |
222 | - | 218 | + YAW = -1 * CoDrone.AnalogScaleChange(analogRead(A3)); // 아날로그 3번 핀의 값을 YAW 값으로 사용합니다. - 좌우회전 |
223 | - YAW = -1 * CoDrone.AnalogScaleChange(analogRead(A3)); | 219 | + THROTTLE = CoDrone.AnalogScaleChange(analogRead(A4)); // 아날로그 4번 핀의 값을 THROTTLE 값으로 사용합니다. - 승하강 |
224 | - // 아날로그 3번 핀의 값을 YAW 값으로 사용합니다. - 좌우회전 | 220 | + ROLL = -1 * CoDrone.AnalogScaleChange(analogRead(A5)); // 아날로그 5번 핀의 값을 ROLL 값으로 사용합니다. - 좌우이동 |
225 | - | 221 | + PITCH = CoDrone.AnalogScaleChange(analogRead(A6)); // 아날로그 6번 핀의 값을 PITCH 값으로 사용합니다. - 전후진 |
226 | - THROTTLE = CoDrone.AnalogScaleChange(analogRead(A4)); | 222 | + CoDrone.Control(SEND_INTERVAL); // 제어 신호를 보냅니다. 통신이 안정하게 가도록 시간을 두고 보냄 (최소 50ms) |
227 | - // 아날로그 4번 핀의 값을 THROTTLE 값으로 사용합니다. - 승하강 | ||
228 | - | ||
229 | - ROLL = -1 * CoDrone.AnalogScaleChange(analogRead(A5)); | ||
230 | - // 아날로그 5번 핀의 값을 ROLL 값으로 사용합니다. - 좌우이동 | ||
231 | - | ||
232 | - PITCH = CoDrone.AnalogScaleChange(analogRead(A6)); | ||
233 | - // 아날로그 6번 핀의 값을 PITCH 값으로 사용합니다. - 전후진 | ||
234 | - | ||
235 | - CoDrone.Control(SEND_INTERVAL); | ||
236 | - // 제어 신호를 보냅니다. 통신이 안정하게 가도록 시간을 두고 보냄 (최소 50ms) | ||
237 | } | 223 | } |
238 | } | 224 | } | ... | ... |
-
Please register or login to post a comment