μ΄μν μΌμ : HC-SR04
HC-SR04λ μ½ 40KHz μ λμ μ£Όνμλ₯Ό μμ±νλ©°, μ΅λ 4~5mμ λκΉμ§μ 거리λ₯Ό μΈ‘μ ν μ μμ΅λλ€.
Vcc, Trigger, Echo λ° GNDλ₯Ό μν 4κ°μ νμ΄ μμ΅λλ€.
νΈλ¦¬κ±°λ μ΄μν μ νΈλ₯Ό 보λ΄κ³ Echoλ λμμ¨ ν ν΄λΉ μ νΈλ₯Ό μμ
μ΄μν μΌμ λμμ리
거리츑μ μ μν΄ μ‘μ λΆ(νΈλ¦¬κ±°)μμ μΌμ ν μκ°μ κ°κ²©μ λ 짧μ, μ΄μν νμ€λ₯Ό λ°©μΆνκ³ , λμλ¬Όμ λΆλͺν λμμ¨ μ νΈλ₯Ό μμ λΆ(μμ½)μμ λ°μ, μ΄μ λν μκ°μ°¨λ₯Ό κΈ°λ°μΌλ‘ 거리λ₯Ό μ°μΆν©λλ€. μ΄λ₯Ό ν΅ν΄ μ₯μ λ¬Όμ μ 무, 물체μ 거리 λλ μλ λ±μ μΈ‘μ ν μ μμ΅λλ€.
μ΄μνμ μλλ μΌλ° 곡기μ€μμ μ½ 340m/s μ λλ€.
μ΄μν μΌμλ₯Ό μ΄μ©ν 거리 κ³μ°νκΈ°
μ΄μνμλ: 340 m/s
μ볡μμμκ°: duration (µs)
κ°κ²©μ΄ μ λ ΄νκ³ νμ©λκ° λμ
μΌμ LEDλ μ΄μ©(RGB)
μλμ΄λ Έ νλ‘ : μ¬λ°λ₯Έ μ μκΉμ μ¬μ©νλ μλ Ή ν°λνκΈ°.
μΆν, 물리μ μΈ κ³ν¨μ μ°ΎκΈ°κ° μ¬μμ§λ€.
μμ€ μ½λ:
2λ²μμ triggerμ Ultra Sonic μ μΈμ μ μκ³ , 3λ² echoμμ μ νΈλ₯Ό λ°λλ€.
μ€μ λ² 1λ²:
μ€μ λ² 2λ²:
μ΄μν μΌμ μ’ λ₯μ λ°λΌμ, pulseInμ κ°λ€μ νΉμ±μΉκ° λ¬λΌμ§λ©΄μ cmλ‘ νμ°νλ μμκ°μ΄ λ¬λΌμ§λ€.
μ¬κΈ°μλ 58.2
if(distance < 10){
}else if(){
}else if(){
}
μ€μ²©ν΄μ μΈ μ μμ.
νΌμμ‘° μ€νΌμ»€κΉμ§ μ°λν΄μ μ°λ μ½λλ?
μλμ°¨ νμ§ κ°μ§κΈ°/ λ¬Έμμ μ€μΉ
echoPin μ΄ HIGHλ₯Ό μ μ§ν μκ° μ¦, μ΄μνκ° λ³΄λλ€κ° λ€μ λ€μ΄μ¨ μκ°
HIGH μμ λ μκ°μ κ°μ§κ³ 물체μμ 거리(distance)λ₯Ό κ³μ° νλ€.
// μ΄μν(μ리)μ μλ: 340m/s //
μ΄(second)μ λ―Έν°(m)λ₯Ό λ§μ΄ν¬λ‘ μ΄μ cmλ‘ λ³ννκΈ° μν΄μ 10000μΌλ‘ λλ μ€λ€ //
μ볡거리μ΄λ―λ‘ 2λ‘ λλ μ€λ€ float distance = ((float)(340 * duration) / 10000) / 2; //
λλ distance = duration / 58.8
μ΄μνλ₯Ό 보λ΄λ©°, λ€ λ³΄λ΄λ©΄ echoκ° HIGH(μ νΈλ°κΈ°) μνλ‘ λκΈ° digitalWrite(trigPin, HIGH); delay(10); digitalWrite(trigPin, LOW);
pulseIn(νμ€μΈ) ν¨μ
pulseIn ν¨μλ μλμ΄λ Έλ‘ λ€μ΄μ€λ νΉμ μ νΈμ κΈΈμ΄λ₯Ό μ½μ΄ λ€μ΄λ ν¨μμ λλ€. μλ₯Ό λ€μ΄μ λ€μ μ¬μ§κ³Ό κ°μ μ νΈκ° λ€μ΄μ€κ³ μκ³ κ° μ νΈμμ HIGH κ°μ΄ λͺ λ§μ΄ν¬λ‘ μ΄ λμ λ€μ΄μλμ§ μ½μ μ μμ΅λλ€.
pulseIn(pin, value);
pulseIn(pin, value, timeout);
pin : νμ€ μ νΈλ₯Ό λ°μλ€μ΄λ ν λ²νΈ
value : μΈ‘μ νλ €λ νμ€μ νν(HIGH λλ LOW)
timeout : νμ€ μ νΈλ₯Ό μ½λλ° μ νμκ°μ μ΄κ³Όνλ©΄ 0μ μΆλ ₯
κ²°κ³Όκ° : νμ€μ κΈΈμ΄λ₯Ό unsigned long νμ λ§μ΄ν¬λ‘μ΄[us] λ¨μλ‘ λ°ννλ€. timeoutμ μ§μ νμ§ μμΌλ©΄ κΈ°λ³Έμ μΌλ‘ 1μ΄κ° μ€μ λλ€.
pulseIn(10, HIGH)
ν΄λΉ νμ μ λ ₯μ΄ LOWμμ HIGHλ‘ λ³νλ μκ°λΆν° μκ°μ μΈ‘μ νμ¬ λ€μ LOWλ‘ λ°λλ μμ κΉμ§μ μκ°μ λ§μ΄ν¬λ‘μ΄[us] λ¨μλ‘ λ°νν©λλ€.
delay()
맀κ°λ³μμ μ ν μκ°(λ°λ¦¬ μ΄) λμ νλ‘κ·Έλ¨ λ©μΆ€. (1μ΄λ 1000 λ°λ¦¬ μ΄)
ms: λ©μΆ λ°λ¦¬ μ΄ (unsigned long)
ex) delay(1000); // 1μ΄ κΈ°λ€λ¦Ό
β
β delayMicroseconds()
맀κ°λ³μμ μ§μ λ μκ°(λ§μ΄ν¬λ‘ μ΄)λμ νλ‘κ·Έλ¨μ λ©μΆλ€.
1λ°λ¦¬μ΄λ 1000 λ§μ΄ν¬λ‘ μ΄, 1μ΄λ 100λ§ λ§μ΄ν¬λ‘ μ΄
μ΄ ν¨μλ 3 λ§μ΄ν¬λ‘ μ΄ μ΄μ λ²μμμ λ§€μ° μ ννκ² λμκ°λ€.
ex) delayMicroseconds(1000); // 1ms (= 0.001μ΄) κΈ°λ€λ¦Ό
거리μ λ°λΌμ, LED μ λΆμ λ΄λ λ°©λ² 1
거리μ λ°λΌμ μ리 μ£ΌκΈ°κ° μλ μ λμ΄κ° λ°λλλ‘ μ€μ νλκ²λ ν΄λ³Όλ§νλ€.
tone ν¨μ νΉμ§:
tone(11, 500); delay(1000); noTone(11); tone(12, 500); delay(1000); noTone(12); |
μ΄λ κ²λ κ°λ₯νμ§λ§,
tone(11, 500); tone(12, 500); delay(1000); noTone(11); noTone(12); |
μ΄λ κ²λ μ¬μ©ν μ μλ€λ κ²μ΄λ€.
μλμ΄λ Έ ννμ΄μ§μ tone()μ λν μ€λͺ μ 보면 μ¬λ¬ κ°μ νμΌλ‘ tone() ν¨μλ₯Ό μ΄μ©ν΄ ννμ μΆλ ₯νκ³ μΆλ€λ©΄, μΆλ ₯λλ νμ noTone() ν¨μλ‘ μΆλ ₯μ λ©μΆ ν λ€μ νμΌλ‘ ννμ μΆλ ₯ν μ μλ€κ³ λμ΄ μλ€.
λ§μΌ μ κ²½μ°μ²λΌ noTone() ν¨μλ‘ μΆλ ₯μ μ€λ¨νμ§ μκ³ λ€μ tone() ν¨μλ₯Ό μ¬μ©νκ² λλ€λ©΄ λμ€μ μ¬μ©λ tone() ν¨μλ 무μλλ€. μ¦, 11λ² νμΌλ‘λ°μ ννμ΄ μΆλ ₯λμ§ μλλ€λ λ§.
λ μλμ΄λ Έ λ©κ°(Mega 2560/ADK) μ΄ μΈμ 보λμμλ tone() ν¨μλ₯Ό μ¬μ©ν κ²½μ° 3λ² νκ³Ό 11λ² νμ analogWrite() ν¨μμ μ¬μ©ν μ μλ€. tone() ν¨μλ νμ΄λ¨Έλ₯Ό μ΄μ©ν΄ ννμ μΆλ ₯νλλ°, μ°λ Έ(Uno) λ± λλΆλΆμ μλμ΄λ Έ 보λμμλ 3λ²κ³Ό 11λ² νμΌλ‘ PWMμ μΆλ ₯νκΈ° μν΄ μ¬μ©νλ νμ΄λ¨Έμ tone() ν¨μμμ μ¬μ©νλ νμ΄λ¨Έκ° κ°κΈ° λλ¬Έ. λ©κ°λ νμ΄λ¨Έκ° λ§μμ μλ‘ λ°©ν΄νμ§ μλλ€.
tone() ν¨μμλ μλμ΄λ Έμ λͺ¨λ νμ μ¬μ©ν μ μλ€. frequency κ°μ 31 μ΄νλ‘λ μ€μ ν μ μκ³ , frequency λ³μμ νμ μ΄ unsigned int νμ΄λΌ μ΅λ 65535HzκΉμ§λ°μ μ€μ ν μ μλ€
μ’μ μ 보 κ°μ¬ν©λλ€.
μΆμ² : m.blog.naver.com/yuyyulee/220311663655
'π₯곡λμ΄κ±°μ κ²(λ§νκΈ°) > πΊλ§μ΄ν¬λ‘νλ‘μΈμμ€μ΅' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ€μ΅ λ° κ³Όμ 1 (0) | 2020.09.26 |
---|---|
μλμ΄λ Έ 보λ ν μ€λͺ (0) | 2020.09.25 |
LCDν¨λ (0) | 2020.09.19 |