ã¿ã¹ã¯ã®æŠèŠ
ã³ã³ã»ããããå§ããŸãããããã®çµè·¯ã§ééãããã¹ãŠã®é害ãåé¿ããªãããéšå±ã®åšããç¬ç«ããŠç§»åã§ãããããããå¿ èŠã§ãã
ã¿ã¹ã¯ãèšå®ãããŸããã ã·ã§ããã«èµ°ãåã£ãŠããŸãïŒ 1ïŒãã©ãããã©ãŒã ã ãã®ãããªãªãã·ã§ã³ããããŸãïŒãã¹ãŠãèªåã§è¡ããéšåïŒã¿ãã€ãªã©ïŒãè³Œå ¥ããŠããããçµã¿ç«ãŠãããŸãã¯æ¢è£œã®ãã®ãè³Œå ¥ããã ç§ã¯æåŸã®ãªãã·ã§ã³ã«æ±ºããŸããã äœããã®çç±ã§ãç§ã¯æŠè»ãäºæžããŸãã¯ãã©ã¯ã¿ãŒã®çºãã奜ãã§ãæçµçã«ãã®ãªãã·ã§ã³ïŒ DFããããã®ãã©ãããã©ãŒã ïŒã«æ±ºããŸããïŒ
ãã©ãããã©ãŒã ïŒåãã©ãã¯ã«1ã€ã®ãšã³ãžã³ïŒãšããããªãŒã³ã³ããŒãã¡ã³ããå«ãŸããŸãã
è€éãªããšã¯äœããããŸãããããã«å ã«é²ã¿ãŸãããã
è·é¢èš
ãœããŒïŒå¥åè·é¢èšãå¥åè¶ é³æ³¢ã¢ãžã¥ãŒã«ïŒè·é¢èšãšããŠã®éžæã¯ãæåã¯è¶ é³æ³¢ãšèµ€å€ç·ã®ã©ã¡ããã§ããã è¶ é³æ³¢ç¹æ§ã¯ã¯ããã«åªããŠããïŒæ倧ç¯å²ã¯çŽ4ã5ã¡ãŒãã«ã§ã30ã60 cmïŒãäŸ¡æ Œã¯ã»ãŒåãã§ãããããéžæã¯è¶ é³æ³¢ã§è¡ããŸããã æãäžè¬çãªã¢ãã«ã¯HC-SR04ã§ãã
ãã®æç©ã®ä»çµã¿ãç解ããããã«ãã€ã³ã¿ãŒãããäžã«ããŒã¿ã·ãŒããšååãªæ å ±ããããŸãã
äž»ãªããšã説æããŸãã åçã¯2ã€ã®ã·ãªã³ããŒã瀺ããŠããŸãã ãããã®1ã€ã¯åä¿¡æ©ã§ããã1ã€ã¯éä¿¡æ©ã§ãã åä¿¡æ©ã¯è¶ é³æ³¢ãçæããéä¿¡æ©ã¯ç©äœããã®åå°æ³¢ãåä¿¡ããããã«ã€ããŠãç¥ãããã ããã ããŒãã«ã¯4ã€ã®ãã³ïŒ5VãGNDãTrigãEchoïŒããããŸãã
æäœã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã
10ÎŒsã®ä¿¡å·ãTrigã¬ãã°ã«é©çšã ããžã§ãã¬ãŒã¿ãŒãèµ·åããŠããã©ã³ã¹ããã¿ãŒã«çããã«ã¹ã®ãã±ãããäœæããŸãïŒ8åïŒã ããã«ãåä¿¡æ©ã¯åå°ä¿¡å·ãåä¿¡ãããšã³ãŒã¬ãã°ã§ç©åœ¢ä¿¡å·ãçæãããŸãããã®é·ãã¯ããã«ã¹ã®æŸå°ãšåä¿¡æ©ã«ãããã«ã¹ã®æ€åºã®éã®æéã«æ¯äŸããŸãã
ãã¡ãããé³ãã¬ã·ãŒããŒã«å°éãããªã¢ã«ã¿ã€ã ã¯1ãããŒã«ãªããŸãã ããããã®è·é¢ã決å®ããã«ã¯ãç°¡åãªåŒã䜿çšã§ããŸãã
s = vt / 2 ãsã¯è·é¢ãvã¯é³éãtã¯åä¿¡æ©ã§ä¿¡å·ãåä¿¡ãããæéã§ãã
ããŠããªãååã«åå²ããã®ãã誰ããç解ããŠãããšæããŸãã ãã®å Žåã«ã®ã¿ããã®åŒã¯å¿ èŠãããŸããã ããã»ã¹ã®ç©çåŠãç解ããããã ãã«ããã«æã£ãŠããŸãã
ãšã³ãŒåºåããã¯ãååã«é·ãæç¶æéã§æ¢ã«çæãããä¿¡å·ãéãããŸãã ããŒã¿ã·ãŒããèŠããšãåèšç®åŒã衚瀺ãããŸããs = t / 58 ãsã¯è·é¢ãtã¯ãã«ã¹å¹ Echoãsã¯ã»ã³ãã¡ãŒãã«åäœã®è·é¢ã§ãã
ããŠããã¹ãŠã®åºæ¬ãæŽçããŸããã Arduinoã®äžã®ã³ãŒãã«ç§»ããŸãããïŒ
const int Trig = 3; //ã©ã®ã¬ãã°ãšæ¥ç¶ãããã瀺ããŸãconst int Echo = 2;
ãã€ãèšå®ïŒïŒ
{
pinModeïŒTrigãOUTPUTïŒ;
pinModeïŒãšã³ãŒãå ¥åïŒ;
Serial.beginïŒ9600ïŒ; //ã·ãªã¢ã«ããŒããåæåããŠãã¢ãã¿ãŒã«çµæã衚瀺ããŸã
}
unsigned int time_us = 0; //æéééãä¿åããå€æ°
unsigned int distance_sm = 0; //è·é¢ãã»ã³ãã¡ãŒãã«ã§ä¿åããå€æ°
ãã€ãã«ãŒãïŒïŒ
{
digitalWriteïŒTrigãHIGHïŒ; //ãã€ã¯ãã³ã³ãããŒã©ãŒã®åºåã«ä¿¡å·ãéä¿¡ããŸã
delayMicrosecondsïŒ10ïŒ; // 10ãã€ã¯ãç§ä¿æããŸã
digitalWriteïŒTrigãLOWïŒ; //次ã«åé€ããŸã
time_us = pulseInïŒãšã³ãŒãé«ïŒ; //ãã«ã¹é·ã枬å®ããŸã
distance_sm = time_us / 58; //ã»ã³ãã¡ãŒãã«ã«å€æ
Serial.printïŒdistance_smïŒ; //ããŒãã«åºå
Serial.printïŒ ""ïŒ;
é 延ïŒ500ïŒ;
}
é転æ
ãŸãã圌ãã¯ãœããŒã§ãããæŽçããŸããã ç¶ããŸãããã
ãã©ãããã©ãŒã ã«ã¯2ã€ã®ã¢ãŒã¿ãŒãå«ãŸããŠããŸãã 圌ãã¯äœããã®åœ¢ã§ç®¡çããå¿ èŠããããŸãã ã©ããã-ããããçŽæ¥æ¥ç¶ããŠãããHIGHãäžããŠããLOWãäžããŠåã¶ã éèŠãªãBUTãã1ã€ãããŸããatmegaã䜿çšãããšãçŽ40mAãè¶ ããé»æµã¯æµãããã¢ãŒã¿ãŒã«ã¯1æ¡ä»¥äžå¿ èŠã§ãã
ã«ãªãæ¹æ³ æåã«é ã«æµ®ãã¶ã®ã¯ããã€ã¯ãã³ã³ãããŒã©ãŒã®åºåã«ãã©ã³ãžã¹ã¿ãé 眮ããããããã¢ãŒã¿ãŒã«çµŠé»ããããšã§ãã ããã¯ç¢ºãã«è¯ãããšã§ãããã¢ãŒã¿ãŒãä»ã®æ¹åã«å§åãããå Žåã«ã¯æ©èœããŸãã...ããããHããªããžã¯ããã©ã³ãžã¹ã¿ã®ãã¢ãããå°ãè€éãªåè·¯ã§ããããã®ã¿ã¹ã¯ãããŸãè¡ãããšãã§ããŸãã ãããããã®å Žåããããã¯æ¢è£œã®éç©åè·¯ã®åœ¢ã§ãã£ã±ãã§ãã®ã§ãèªè»¢è»ãçºæããå¿ èŠã¯ãªããšæããŸã-ç§ãã¡ã¯æ¢è£œã®ãã®ãè³Œå ¥ããŸãã ããã«ãäŸ¡æ Œã¯2-3ãã«ã§ã...
ãããã®ããã€ã¹ã«ã€ããŠã¯ãããšãã°ããã§å°ãèªãããšãã§ããŸã ã
ç¶ããŸãããã ãããã®ç®çã®ããã«ãç§ã¯èªåã§L293Dããããè³Œå ¥ããŸããããå®éã«ã¯åŸã§èª¬æããŸãã 䜿ãããããåºãå©çšå¯èœã§ã䟿å©ãªDip16ã±ãŒã¹ããããŸãã
æ倧é»æµã¯æ¯èŒçå°ããïŒ600 mAïŒãç¹å®ã®ã¿ã¹ã¯ã«ã¯ååã§ãã ããã«å¿ èŠãªå Žåãããšãã°ã L293B ïŒ1AïŒãªã©...
ç§ã¯ã»ãšãã©å¿ããŠããŸãããããã®ããªããžã䜿çšãããšã2ã€ã®ã¢ãŒã¿ãŒãäž¡åŽã«1ã€ãã€æ¥ç¶ã§ããŸãã
圌ãšããåãããæ¹æ³ãç解ããããã«ãç§ã¯è¯ãèšäºãèŠã€ããŸãããããã䜿çšããŸãã
ãã¹ãŠãã·ã³ãã«ã§æ確ã§ãã èšäºã®æåã®éšåã泚ææ·±ãç 究ããã®ã§ãå³ã®æ³šèŠãæ¢ããŸãã
-å®éã«ã¯ãããŒã¿ã·ãŒãããåããããã®ãããã®å å«åè·¯ã
ç°¡åã«åœŒå¥³ã®è¶³ã«è¡ããŸãïŒ
1ïŒã¢ãŒã¿ãŒã®åæå1ã ãã®èã«HIGHãããããŸã§ãä»ã®éšåã§äœãããŠããã¢ãŒã¿ãŒã¯åäœããŸããã 1,2EãšæžãããŠããŸããã1ã€ã®ã¢ãŒã¿ãŒããããŸãã æ··åããªãã§ãã ããã å®éã«ã¯ã1ã€ã®ã¢ãŒã¿ãŒãå¶åŸ¡ããã«ã¯ããã€ã¯ãã³ã³ãããŒã©ãŒã®2ã€ã®èãå¿ èŠã§ãããããã«å¿ããŠH-ããªããžãå¿ èŠã§ãã çæ¹ã®è¶³ãHIGHã«ãããäžæ¹ã®è¶³ãLOW-ã¢ãŒã¿ãŒãäžæ¹åã«å転ãããŸãã æåã®LOWã2çªç®ã®HIGHã«é©çšããŸããã-å察ã«å転ããŸãã äž¡æ¹ã®LOWã«é©çšããŸããã-åæ¢ããŸãã
2ïŒ 1A ã ãã®åºéã§ã¯ããã€ã¯ãã³ã³ãããŒã©ãŒããã®ä¿¡å·ïŒäœé»æµïŒãéä¿¡ããŠã1ã€ã®ã¢ãŒã¿ãŒå ¥åãå¶åŸ¡ããŸãã
3ïŒ 1Y ãããŠãããã¯ã¢ãŒã¿ãŒã«çŽæ¥éãããä¿¡å·ïŒé«é»æµïŒã§ãã ãã®å€èŠ³ã§ã¯ãå ¥å1Aã«äŸçµŠãããä¿¡å·ãå®å šã«ç¹°ãè¿ããŸãã
4ïŒ-5ïŒ å°ç
6ïŒ 2Yããã§ãã¢ãŒã¿ãŒã®2çªç®ã®èãæ¥ç¶ããŸãã
7ïŒ 2Aã¢ãŒã¿ãŒã®2çªç®ã®å ¥åãå¶åŸ¡ããããã®ãã€ã¯ãã³ã³ãããŒã©ãŒããã®ä¿¡å·ã
8ïŒããã§ãã¢ãŒã¿ãŒãäŸçµŠããé»å§ãå°å ããŸãã å®éããã®å ¥åã«äžãããã®ã¯ãã¬ãã°1Y ã 2Yã§ããã¯è§£é€ãããŸãã
9ïŒ-16ïŒæåã®8ã€ãšå®å šã«é¡äŒŒããŠããŸããã2çªç®ã®ã¢ãŒã¿ãŒã«ã€ããŠã§ãã
次ã«ãå å«åè·¯ïŒ
ã¢ãŒã¿ãŒããªã³ã«ãªã£ãŠãããšãã®é»åãµãŒãžãé€å»ããããã«ã以äžã«ç€ºãããã«ãã³ã³ãã³ãµã䜿çšããŸãã
æåŸã«ãäžèšã®ãã¹ãŠãèŠçŽããç§ã®å°ããªãšãã£ã·ã§ã³ã§ããœãŒã¹ã³ãŒããæäŸãããŸãã
const int motor1Pin = 3; // Hããªããžè1ïŒãã³2ã1AïŒ
const int motor2Pin = 4; // Hããªããžè2ïŒãã³7ã2AïŒ
const int enablePin = 9; // Hããªããžã€ããŒãã«ãã³
ãã€ãèšå®ïŒïŒ
{//åºåãšããŠäœ¿çšããŠããä»ã®ãã¹ãŠã®ãã³ãèšå®ããŸãã
pinModeïŒmotor1PinãOUTPUTïŒ;
pinModeïŒmotor2PinãOUTPUTïŒ;
pinModeïŒenablePinãOUTPUTïŒ; // enablePinãé«ãèšå®ããŠãã¢ãŒã¿ãŒããªã³ã«ã§ããããã«ããŸãã
digitalWriteïŒenablePinãHIGHïŒ;
}
ãã€ãã«ãŒãïŒïŒ
{//ã¢ãŒã¿ãŒãäžæ¹åã«åã
digitalWriteïŒmotor1PinãLOWïŒ; // Hããªããžã®ã¬ãã°1ãäœãèšå®ããŸã
digitalWriteïŒmotor2PinãHIGHïŒ; // Hããªããžã®ã¬ãã°2ãé«é 延ïŒ1000ïŒã«èšå®ããŸã; //ãããŠã1ç§åŸã«å¥ã®digitalWriteïŒmotor1PinãHIGHïŒ; // Hããªããžã®ã¬ãã°1ãé«ãèšå®ããŸã
digitalWriteïŒmotor2PinãLOWïŒ; // Hããªããžã®ã¬ãã°2ãäœé 延ïŒ1000ïŒã«èšå®ããŸã;
//ãããŠä»ãããäžåºŠ
}
ãµãŒã
ããã§ãã¬ã³ãžãã¡ã€ã³ããŒã®ä»äºãèŠã€ããŸããã ç¶ããŸãããã è·é¢èšã1ã€ãããŸããåæ¹ãšåšå²ã®äž¡æ¹ãèŠãå¿ èŠãããã®ã§ãäœãã®å Žåã«ã©ããåãã¹ãããç¥ãããšãã§ããŸãã ãããã®ç®çã®ããã«ããµãŒãïŒãµãŒãããµãŒãããµãŒãïŒã䜿çšããŸãã
ãããã®ããã¡ãã¯äž»ã«èªç©ºæ©ã®ã¢ããªã³ã°ã«äœ¿çšãããŸãããããããã«ãã»ãšãã©äœ¿çšãããŸããã
ãã®ããã€ã¹ã¯ã0ã180床ã®è§åºŠã§å転ã§ããŸãã ã±ãŒã¹ã«ã¯3ç·ã±ãŒãã«ãä»å±ããŠããŸãã
é»-GND
èµ€-5V
çœ-ä¿¡å·
ã¢ãŒã¿ãŒã¯ã³ã³ãããŒã©ãŒã«ãã£ãŠå¶åŸ¡ãããŸãïŒæãããªãã§ãã ãã-è³Œå ¥ããå¿ èŠã¯ãããŸãããæ¢ã«ãµãŒãã®å éšã«ãããŸãïŒãå€éšä¿¡å·ãåä¿¡ãããšãã¢ãŒã¿ãŒãæå®ã®è§åºŠã ãå転ããããã«å¶åŸ¡ããŸãã ãããã®ç®çã®ããã«ãã¢ãŒã¿ãŒããã³ã³ãããŒã©ãŒãžã®ãã£ãŒãããã¯ã確ç«ãããŸããããã¯ãå転è§ã«å¿ããŠæµæå€ãå€åããå¯å€æµæåšã§ãã ã³ã³ãããŒã©ãŒèªäœã¯ãå ¥åãã«ã¹é·ã«ãã£ãŠå¶åŸ¡ãããŸãã éåžžïŒ380-400ÎŒs-0床ã2200ÎŒs-180床ã Arduinoã®ç°¡åãªãµãŒãå¶åŸ¡ã¢ã«ãŽãªãºã ã次ã«ç€ºããŸãã
#define ServoPin 2 //ãã®èã«ãµãŒããæ¥ç¶ããŸãïŒçœãã¯ã€ã€ãŒïŒ
ãã€ãèšå®ïŒïŒ
{
pinModeïŒ2ãOUTPUTïŒ;
}
void Servo_motionïŒint angleïŒ//ãµãŒãå¶åŸ¡æ©èœ
{
int time = 390 + 10 *è§åºŠ; //ãµãŒãã«äŸçµŠããããã«ã¹é·ã§æå®ãããå転è§åºŠãåèšç®ããŸã//
digitalWriteïŒãµãŒããã³ãé«ïŒ; //ä¿¡å·ã¯æ¶ããŸãã
delayMicrosecondsïŒæéïŒ; //æå®ãããæéä¿æããŸã
digitalWriteïŒãµãŒããã³ãLOWïŒ; //ãªãã«ããŸã
delayMicrosecondsïŒ20000æéïŒ; //å転ãããµãŒãæéãäžããŸãïŒ20000ÎŒs-50 HzïŒ
}
ãã€ãã«ãŒãïŒïŒ
{
forïŒint i = 0; i <= 180; i ++ïŒ
{
Servo_motionïŒiïŒ; //ã¹ã¯ããŒã«ãµãŒãã¯ã³ãŠã§ã€
é 延ïŒ10ïŒ; //å次æ°ã§10ããªç§ã®é 延
}
forïŒint i = 180; i> = 0; i--ïŒ
{
Servo_motionïŒiïŒ; //ãã®åŸãä»ã®æ¹æ³
é 延ïŒ10ïŒ;
}
}
ããããå°æ¥çã«ã¯ãç¹å¥ãªã©ã€ãã©ãªã䜿çšããŠãµãŒããå¶åŸ¡ããŸãããã®èª¬æã¯æ¬¡ã®ãšããã§ãã
www.arduino.cc/en/Reference/Servo
arduino.cc/en/Tutorial/Sweep
ãã®äŸïŒ2ã€ã®ãªã³ã¯ïŒã¯ãäžèšã®ããã°ã©ã ãšãŸã£ããåãããšãè¡ããŸãã åçãåçãã³ã¡ã³ãä»ãã®ã³ãŒãã®ã«ã©ãã«ãªèª¬æããããŸãã®ã§ãç¹å¥ãªå°é£ã¯ãªããšæããŸãã ãã®ã³ãŒãã確èªãããšãã¯ãããžã¿ã«ããŒã9ã®ãµãŒããåé 眮ãããããã®ã³ãŒãã®æ¬¡ã®è¡ãä¿®æ£ããããšãå¿ããªãã§ãã ããã
myservo.attachïŒ9ïŒ; //ãã³9ã®ãµãŒãããµãŒããªããžã§ã¯ãã«æ¥ç¶ããŸã
ãããŠãäœãåäœããŸããã æåŸã«è¿œå ãããããš-ãã®äŸã¯ãäžèšã®ãªã³ã¯ãšArduinoéçºç°å¢ã®[äŸ]ã¿ãã®äž¡æ¹ã§å©çšã§ããŸãã
çµç«
åµé ã®çµã¿ç«ãŠã«ç§»ããŸãããã ããŒããäœæããªãã£ããããæ®å¿µãªããåè·¯å³ã¯ãããŸããã ããããããã¯ç§ãã¡ãããŸã劚ããªããšæããŸã-ã¹ããŒã ã¯ã·ã³ãã«ã§ããã¹ãŠãæ確ã§ãã åçãšå°ããªã³ã¡ã³ãã§ååã§ãã ãã®æ®µéã§ã¯ãArduino nanoã衚瀺ãããŸããããã¯ããæ³åã®ãšããã以åã®ã³ãŒãã¯ãã¹ãŠæåŸ ããŠäœæãããŠããããã§ãã ãã®ããã€ã¹ã説æããã®ã¯ããªãé¢åã§éå±ãªäœæ¥ã§ããç¥ããªã人ã«ãšã£ãŠã¯-ãªã³ã¯ïŒ
arduino.cc/en/Guide/HomePage
freeduino.ru/arduino/index.html
arduino.ru
ããã«ãããããããç§ã¯ã以åã®ããã«ãããªãã¯å°ãªããšããã®ããšããŸã å°ãçµéšããŠããããŸãã¯å°ãªããšããããäœã§ããããæ³åããŠãããšä»®å®ããŸãã ãã®å Žåãããã§ååã§ãã ããã§ãããŸãå€ãã®ç¥èãåŸãªãã§ãããã«é£ã¹ãŸãã
æ¥ç¶ããå§ããŸãããã ã©ã®å ¥åãšæ¥ç¶ãããã®ããªã¹ãããŸãã
4æ¬ã®è-Hããªããžã®å ¥åãåã¢ãŒã¿ãŒã«2æ¬ïŒ
1A-11
2A-6
3A-10
4A-5
enablePin-12
1,2ENããã³3,4ENçšã®1æ¬ã®è-äž¡æ¹ã®ã¢ãŒã¿ãŒãåå¥ã«å¿ èŠãšããªãããããããããŸãšããŸãã ååãšããŠãäžè¬çã«ãããªããžã®ãããã®2æ¬ã®è¶³ãArduinoã«æ¥ç¶ããããšã¯ã§ããŸãããããããã«5Vãå°å ããã ãã§ãã
ãœããŒçšã®2æ¬ã®èïŒ
ããªã¬ãŒ-3
ãšã³ãŒ-2
ãµãŒããããïŒ
ãµãŒã-8
ããã ãã§ãã ããã«ãããããã®çµã¿ç«ãŠäžã«1ã€ã®åé¡ãçºçããŸããããããããå®æçã«åæ¢ããArduinoãåèµ·åããŸããã å°ãèããŠã¿ããšãArduino nanoã¯æšæºã®å®å®è£ 眮ãããã®ã·ã¹ãã å šäœïŒHããªããžããµãŒãããœããŒïŒã«é»åãäŸçµŠã§ããªãããšã«æ°ä»ããŸããã é»å§å®å®åš7805ïŒL7805ãLM7805ïŒãç§ã®å©ãã«ãªã£ãããã§ãã ãã®ããã€ã¹ã¯äœ¿ãããããå ¥åïŒ6ã35 VïŒãæ¥å°ãåºåïŒã5VïŒã®3æ¬ã®èããããŸãã Datashitã¯ãã€ã³ã¿ãŒãããäžã®ã©ãã«ã§ããããŸãã ãã®åå°ãArduinoã®åå°ãããã«å¿ããŠããããªãŒã®ãã€ãã¹ãçµã¿åãããããšã«ãã£ãŠã ç§ã¯ãããããŸãã-Arduinoããç§ã¯Hããªããžã«çµŠé€ããã ãã§ãã¹ã¿ãã©ã€ã¶ãŒããä»ã®ãã¹ãŠïŒãµãŒãããœããŒïŒã«çµŠé€ããŸãã ãã®åŸãããããã¯æ éããããšãªãå®å šã«åäœãå§ããŸããã ã¯ããéèŠãªã«ãŒã«ãå¿ããªãã§ãã ãã-ã©ããªã¹ããŒã ã®å°çããã¹ãŠã®èŠçŽ ã«å ±éã§ãªããã°ãªããŸããïŒ ã¢ãŒã¿ãŒèªäœã«ã€ããŠã¯ãç解ã§ãããšæããŸã-ããããªãŒããããªããžå ¥åã«é»å§ãäŸçµŠããŸã-Vcc2ã ãŸããæ¥ç¶ãç解ããã®ã§ãåçã§äžèšã説æããŸãïŒ
ã¹ããŒã å šäœïŒ
é»å§å®å®åšïŒã³ã³ãã³ãµãåãä»ããå¿ èŠã¯ãããŸããïŒïŒ
ãœããŒã±ãŒãã«ïŒ
H-ããªããžïŒ
ãã¶ã€ã³èªäœã«ã€ããŠå°ãïŒããªã«ã¯ãããŸããã§ããïŒã ãã©ãããã©ãŒã ã«ãã©ã¹ããã¯è£œã®èãåãããµãŒããåãä»ããããã®ç©ŽãéããŸããã åããã©ã¹ããã¯ããæ²ãã£ãŠããŸãïŒç£æ¥çšãã©ã€ã€ãŒã§äºç±ïŒ-圢ã®ãã©ã±ããã ãœããŒèªäœãæ¢ã«æ¿å ¥ãããŠãã4è¯ã±ãŒãã«ãïŒPLSãã©ã°ã®äžã«2.54 mmå»ã¿ã§ïŒæ¥çãããŠããŸãã
ããã°ã©ãã³ã°
ããã§ãããããã¯çµã¿ç«ãŠãããŸãã æçµæ®µéã§ãããã¡ãŒã ãŠã§ã¢ã«é²ã¿ãŸãã ããã§ã¯ããã®ã¢ã«ãŽãªãºã ã®å®è£ ã«ã€ããŠèª¬æããŸãã ããšãã°ããœããŒãåžžã«å転ãããã®ã§ã¯ãªããé害ç©ããããšãã«åæ¢ãããåšå²ãèŠåããŠããæé©ãªæ¹åãåããªã©ããã¹ãŠãå€§å¹ ã«ç°¡ç¥åã§ããããšã«äºåã«æ³šæããŸãã ãŸãã¯ãé ããŸã£ããåããªãã§ãã ããã
ããŠãããã§ã¯ç°¡åãªæ¹æ³ãæ¢ããŸããããæåã®ãªãã·ã§ã³ãæãèå³æ·±ããŠé¢çœãã§ãã 以äžã®ã³ãŒãã¯ãã¡ãã湿ã£ãŠããŸãããäžéšã®å Žæã§ã¯æé©ã§ã¯ãªããããããŸããã ããªãã®ã³ã¡ã³ããææ¡ã¯ãã¹ãŠæè¿ããŸãã ããã«ãé¢ãããããã®ããŒãžã§ã³ã¯çŸå Žã§å®èšŒãããŠããŸãã ãããå§ããŸãããã ã³ãŒããç解ããã®ã«æã䟿å©ãªé åºã§ã³ãŒãã®èŠç¹ãæŠèª¬ããŸãã
å€æ°å®£èšïŒ
ãœããŒã¢ã«ãŽãªãºã ãå®è£ ããããã®å€æ°ã¯ãunsigned int time_us = 0ã§ãã
ãœããŒè·é¢-unsigned int distance_sm = 0;
ãã®å€æ°ã¯ã«ãŒãã§äœ¿çšãããããããã®é»æºãå ¥ãããšãã«ããã®å ŽæããèŠåããããšã確èªãã次ã«ç§»åããŸã-
笊å·ãªãæŽæ°å= 0;
åã®æãè¿ããªããžã§ã¯ããŸã§ã®è·é¢ã¯unsigned int dist_f = 0ã§ãã
å·ŠåŽã®æãè¿ããªããžã§ã¯ããŸã§ã®è·é¢ã¯ãunsigned int dist_l = 0ã§ãã
å³åŽã®æãè¿ããªããžã§ã¯ããŸã§ã®è·é¢ã¯ãunsigned int dist_r = 0ã§ãã
45床ã®è§åºŠã§æãè¿ããªããžã§ã¯ããŸã§ã®è·é¢-unsigned int dist_45 = 0;
135床ã®è§åºŠã§æãè¿ããªããžã§ã¯ããŸã§ã®è·é¢-unsigned int dist_135 = 0;
ããããã®åãã®æå°ã¹ããããå®çŸ©ããæå®æ°ïŒmsïŒã å®éšçã«éžæã ããããã®ç§»åé床ãšãµãŒãã®å転é床ã«å¿ããŠãå€æŽããå¿ èŠããããŸãã åŸã§ãããå¿ èŠãªçç±ãããæ確ã«ãªããŸã-
unsigned int t = 15;
æ©èœïŒ
sonarïŒïŒ-ãœããŒã¢ã«ãŽãªãºã ãå®è£ ããè·é¢[cm]ãè¿ããŸãã
åæ¹ïŒïŒãåŸæ¹ïŒïŒãå³åŽïŒïŒãå·ŠåŽïŒïŒã¯åºæ¬çãªã¢ãŒã·ã§ã³æ©èœã§ãã
åããå®è£ ããäž»ãªæ©èœã¯
ãã€ãã¢ãŒã·ã§ã³ïŒchar次å ãint prev_angleãint next_angleãint timeïŒ
{
/ *ãã®æ©èœã¯ãã¢ãŒã¿ãŒãšãµãŒãã®äž¡æ¹ã®å転ãåæã«å¶åŸ¡ããŸãã
ãã£ãŒæ¬¡å -移åæ¹å
int prev_angle-åã®ãµãŒãäœçœ®
int next_angle-ãµãŒããèšå®ãããäœçœ®
int time-ããããã®1ã€ã®åãã®ã¿ã€ã ã¹ããã* /
//移åäžã«è§åºŠãå€åããå€-
int a;
ifïŒnext_angle> = prev_angleïŒ
a = 15;
ä»ã«
a = -15;
ifïŒæ¬¡å == 'f'ïŒ
{
//åã«é²ããšèšããšã
int i = prev_angle;
whileïŒiïŒ= next_angleïŒ
{
/ *èšå®è§åºŠã«éãããŸã§ãã«ãŒãå ã®*ã«ãã£ãŠãµãŒãã®çŸåšäœçœ®ãåŸã ã«å€æŽããŸã
i + = a; myservo.writeïŒiïŒ; //ãããŠããã®å€ããµãŒãã«æž¡ããŸã
転éïŒïŒ; //ãã®åŸãåé²ããŸã
é 延ïŒæéïŒ; //æééétimeã®é
}
}
/ *å·Šãå³ãåŸæ¹ã«ç§»åããŠéæ¢ããããã®åæ§ã®ã¢ã«ãŽãªãºã * /
...
}
void front_motionïŒintæéïŒ
{
/ *ãªããžã§ã¯ãã45床ãš135床ã®è§åºŠã«ããå ŽåããããããçåŽã«ãããã«ãå転ããããæ©èœ* /
ifïŒdist_45 <= 9ïŒ
{// 45床ã®è§åºŠã§ãªããžã§ã¯ããŸã§ã®è·é¢ã9 cmæªæºã®å Žåãå·Šã«æ²ãã
å·ŠïŒïŒ;
é 延ïŒ3 *æéïŒ; // 3ã€ã®æå°ééäž
}
/ *å³ã«ãæ²ãããããã®åæ§ã®ã¢ã«ãŽãªãºã * /
...
}
void motion_backïŒint timeïŒ
{
/ *ãµãŒãã180床ã180床ã®è§åºŠããå転ãããªãããããããã2æéåŸéãããŸã* /
ã¢ãŒã·ã§ã³ïŒ 'b'ã180.90.2 *æéïŒ;
}
ãã€ãã«ãŒãïŒïŒ
{
//äœæ¥ã®æçµã¢ã«ãŽãªãºã ãå®è£ ããã¡ã€ã³é¢æ°
ifïŒcircle == 0ïŒ
{
//ããããã®é»æºãå ¥ããã°ããã®å ŽåããµãŒããåæäœçœ®ã«èšå®ããŸãã
myservo.writeïŒ0ïŒ; //ãããŠãåŽé¢ããèŠãŠåãã
dist_r =ãœããŒïŒïŒ;
ã¢ãŒã·ã§ã³ïŒ 'w'ã0.45ãtïŒ;
dist_45 =ãœããŒïŒïŒ;
ã¢ãŒã·ã§ã³ïŒ 'w'ã45.90ãtïŒ;
dist_f =ãœããŒïŒïŒ;
ã¢ãŒã·ã§ã³ïŒ 'w'ã90ã135ãtïŒ;
dist_135 =ãœããŒïŒïŒ;
ã¢ãŒã·ã§ã³ïŒ 'w'ã135ã180ãtïŒ;
dist_l =ãœããŒïŒïŒ; } //ãã®ã¢ã¯ã·ã§ã³ã¯ããå®è¡ããŸãã
ãµãŒã¯ã«++; ç§ã¯
fïŒdist_f> = 25ïŒ
{//åã®æãè¿ãç©äœã25ã»ã³ãã¡ãŒãã«ãè¶ ããå Žå
aïŒ//ãµãŒãã180床ãã135床å転ãããªããåé²ããŸã
ã¢ãŒã·ã§ã³ïŒ 'f'ã180ã135ãtïŒ; // 135床ã®è§åºŠã§ãªããžã§ã¯ããŸã§ã®è·é¢ã枬å®ããŸã
dist_135 =ãœããŒïŒïŒ; //å¿ èŠã«å¿ããŠãã²ãããå ããŸã
front_motionïŒtïŒ; //ããã«äŒŒãŠããŸãããå€ãç°ãªããŸã
ã¢ãŒã·ã§ã³ïŒ 'f'ã135.90ãtïŒ;
dist_f =ãœããŒïŒïŒ;
front_motionïŒtïŒ;
ã¢ãŒã·ã§ã³ïŒ 'f'ã90.45ãtïŒ;
dist_45 =ãœããŒïŒïŒ;
front_motionïŒtïŒ;
ã¢ãŒã·ã§ã³ïŒ 'f'ã45.0ãtïŒ;
dist_r =ãœããŒïŒïŒ;
front_motionïŒtïŒ;
ã¢ãŒã·ã§ã³ïŒ 'f'ã0.45ãtïŒ;
dist_45 =ãœããŒïŒïŒ;
front_motionïŒtïŒ;
ã¢ãŒã·ã§ã³ïŒ 'f'ã45.90ãtïŒ;
dist_f =ãœããŒïŒïŒ;
front_motionïŒtïŒ;
ã¢ãŒã·ã§ã³ïŒ 'f'ã90ã135ãtïŒ;
dist_135 =ãœããŒïŒïŒ;
front_motionïŒtïŒ;
ã¢ãŒã·ã§ã³ïŒ 'f'ã135ã180ãtïŒ;
dist_l =ãœããŒïŒïŒ; front_motionïŒtïŒ; //åã®è·é¢ããŸã 25ã»ã³ãã¡ãŒãã«ãè¶ ããŠããå Žåã¯ããã€ã³ããaãã«æ»ããŸã
ifïŒdist_f> = 25ïŒ
goto a;
}
ä»ã«
{//ããã§ãªãå Žå
ifïŒdist_f <5ïŒ
{//ãããããæ¢ã«æãè¿ããªããžã§ã¯ãã«è¿ãããå Žåã¯ãåŸæ¹ã«ç§»åããŸã
motion_backïŒtïŒ;
//æ°ããè·é¢æž¬å®ãè¡ããŸã
dist_f =ãœããŒïŒïŒ;
} //ãã®å Žåãããå€ãã®ç©ºãã¹ããŒã¹ãããæ¹åã«æ²ãã
ifïŒdist_l> = dist_r || dist_135> dist_rïŒ
{
ã¢ãŒã·ã§ã³ïŒ 'l'ã180.90ãtïŒ;
dist_f =ãœããŒïŒïŒ;
}
ifïŒdist_l <dist_rïŒ
{
ã¢ãŒã·ã§ã³ïŒ 'r'ã180.90ãtïŒ;
dist_f =ãœããŒïŒïŒ;
}
} //次ã«ãæ°ãããµãŒã¯ã«
}
ãã®ããã°ã©ã ã®å®å šçã¯ããããããŠã³ããŒãã§ããŸãã
maxim.wf/arduino_code/Robot_compilation.pde
ããã§ãããã§ãã®ãããã¯ã®çµããã«æ¥ãŸãã ãããããå®æãããã¹ãŠãæ©èœããŸãïŒãã¹ã¯ååã«é·ããé¢çœããŠæ¥œãããã®ã§ããã ããã§ããã£ããåå§çã§ãããªããããŸã 人工ç¥èœãåãããããããäœæããçµéšã«åºã¥ããŠãããè€éãªãã®ãäœæã§ããŸãã ããçšåºŠãŸã§ãããªãã¯ç¹å®ã®çç©ã®åµé è ã®ããã«æããããšããã§ããŸããæãåçŽãªçãç©ã«äŒŒãå¿ã æçµçµæã®ãããªã次ã«ç€ºããŸãã
ãæž èŽããããšãããããŸããïŒ
ã質åããææ¡ãã³ã¡ã³ãããåŸ ã¡ããŠãããŸãã