資源簡介
內包含了前進后退基礎功能代碼 藍牙小車代碼 紅外遙控小車 超聲波避障小車 紅外避障小車 循跡小車 小車花式動作等多方面的代碼,非常適合初學arduino的小白借鑒使用,代碼都是經過驗證的,沒有bug
代碼片段和文件信息
/*
?*?IRremote
?*?Version?0.11?August?2009
?*?Copyright?2009?Ken?Shirriff
?*?For?details?see?http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
?*
?*?Modified?by?Paul?Stoffregen??to?support?other?boards?and?timers
?*?Modified??by?Mitra?Ardron??
?*?Added?Sanyo?and?Mitsubishi?controllers
?*?Modified?Sony?to?spot?the?repeat?codes?that?some?Sony‘s?send
?*
?*?Interrupt?code?based?on?NECIRrcv?by?Joe?Knapp
?*?http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556
?*?Also?influenced?by?http://zovirl.com/2008/11/12/building-a-universal-remote-with-an-arduino/
?*
?*?JVC?and?Panasonic?protocol?added?by?Kristian?Lauszus?(Thanks?to?zenwheel?and?other?people?at?the?original?blog?post)
?*/
#include?“IRremote.h“
#include?“IRremoteInt.h“
//?Provides?ISR
#include?
volatile?irparams_t?irparams;
//?These?versions?of?MATCH?MATCH_MARK?and?MATCH_SPACE?are?only?for?debugging.
//?To?use?them?set?DEBUG?in?IRremoteInt.h
//?Normally?macros?are?used?for?efficiency
#ifdef?DEBUG
int?MATCH(int?measured?int?desired)?{
??Serial.print(“Testing:?“);
??Serial.print(TICKS_LOW(desired)?DEC);
??Serial.print(“?<=?“);
??Serial.print(measured?DEC);
??Serial.print(“?<=?“);
??Serial.println(TICKS_HIGH(desired)?DEC);
??return?measured?>=?TICKS_LOW(desired)?&&?measured?<=?TICKS_HIGH(desired);
}
int?MATCH_MARK(int?measured_ticks?int?desired_us)?{
??Serial.print(“Testing?mark?“);
??Serial.print(measured_ticks?*?USECPERTICK?DEC);
??Serial.print(“?vs?“);
??Serial.print(desired_us?DEC);
??Serial.print(“:?“);
??Serial.print(TICKS_LOW(desired_us?+?MARK_EXCESS)?DEC);
??Serial.print(“?<=?“);
??Serial.print(measured_ticks?DEC);
??Serial.print(“?<=?“);
??Serial.println(TICKS_HIGH(desired_us?+?MARK_EXCESS)?DEC);
??return?measured_ticks?>=?TICKS_LOW(desired_us?+?MARK_EXCESS)?&&?measured_ticks?<=?TICKS_HIGH(desired_us?+?MARK_EXCESS);
}
int?MATCH_SPACE(int?measured_ticks?int?desired_us)?{
??Serial.print(“Testing?space?“);
??Serial.print(measured_ticks?*?USECPERTICK?DEC);
??Serial.print(“?vs?“);
??Serial.print(desired_us?DEC);
??Serial.print(“:?“);
??Serial.print(TICKS_LOW(desired_us?-?MARK_EXCESS)?DEC);
??Serial.print(“?<=?“);
??Serial.print(measured_ticks?DEC);
??Serial.print(“?<=?“);
??Serial.println(TICKS_HIGH(desired_us?-?MARK_EXCESS)?DEC);
??return?measured_ticks?>=?TICKS_LOW(desired_us?-?MARK_EXCESS)?&&?measured_ticks?<=?TICKS_HIGH(desired_us?-?MARK_EXCESS);
}
#endif
void?IRsend::sendNEC(unsigned?long?data?int?nbits)
{
??enableIROut(38);
??mark(NEC_HDR_MARK);
??space(NEC_HDR_SPACE);
??for?(int?i?=?0;?i?????if?(data?&?TOPBIT)?{
??????mark(NEC_BIT_MARK);
??????space(NEC_ONE_SPACE);
????}?
????else?{
??????mark(NEC_BIT_MARK);
??????space(NEC_ZERO_SPACE);
????}
????data?<<=?1;
??}
??mark(NEC_BIT_MARK);
??space(0);
}
void?IRsend::sendSony(unsigned?long?data?int?nbits)?{
??enableIROut(40);
??mark(SONY_HDR_MARK);
??space(SONY_HDR_SPACE);
??data?=?data?<(32?-?nbits);
??for?(int?i?=?0;?i?
評論
共有 條評論