プログラム

本体

#include <time.h>

#include <SoftwareSerial.h>

#define motorR1 8

#define motorR2 9

#define motorRout 10

#define motorL1 11

#define motorL2 12

#define motorLout 13

SoftwareSerial mySerial(6, 7); // RX, TX int i; int phrase_state; int motor_sec;

void setup() {

 Serial.begin(9600);
 mySerial.begin(9600);
 mySerial.println("?");
 srand(time(NULL));
 pinMode(motorR1, OUTPUT); //信号用ピン
 pinMode(motorR2, OUTPUT); //信号用ピン
 pinMode(motorL1, OUTPUT); //信号用ピン
 pinMode(motorL2, OUTPUT); //信号用ピン
 i = 0;
 phrase_state = 1;
 motor_sec = 3000;

}

void stop() {

 digitalWrite(motorR1, LOW);
 digitalWrite(motorR2, LOW);
 digitalWrite(motorL1, LOW);
 digitalWrite(motorL2, LOW);

}

void forward() {

 digitalWrite(motorR1, HIGH);
 digitalWrite(motorR2, LOW);
 digitalWrite(motorL1, HIGH);
 digitalWrite(motorL2, LOW);

}

void back() {

 digitalWrite(motorR1, LOW);
 digitalWrite(motorR2, HIGH);
 digitalWrite(motorL1, LOW);
 digitalWrite(motorL2, HIGH);

}

void left() {

 digitalWrite(motorR1, HIGH);
 digitalWrite(motorR2, LOW);
 digitalWrite(motorL1, LOW);
 digitalWrite(motorL2, HIGH);

}

void right() {

 digitalWrite(motorR1, LOW);
 digitalWrite(motorR2, HIGH);
 digitalWrite(motorL1, HIGH);
 digitalWrite(motorL2, LOW);

}

void motorCtr(int select, int sec) {

 switch (select) {
   case 0:
     stop();
     break;
   case 1:
     forward();
     break;
   case 2:
     back();
     break;
   case 3:
     left();
     break;
   case 4:
     right();
     break;
 }
 analogWrite(motorRout, 255); //出力値:1~255
 analogWrite(motorLout, 255); //出力値:1~255
 delay(sec);

}

void loop() {

 //i = ++i % 5;
 //motorCtr(i, motor_sec);
 byte x;
 if (Serial.available()) {
   x = Serial.read();
   if (x == 'S') {
     /* motor stops */
     motorCtr(0, motor_sec);
   } else if (x == 'F') {
     /* motor foward */
     motorCtr(1, motor_sec);
   } else if (x == 'B') {
     /* motor back */
     motorCtr(2, motor_sec);
   } else if (x == 'R') {
     /* motor right */
     motorCtr(3, motor_sec);
   } else if (x == 'L') {
     /* motor left */
     motorCtr(4, motor_sec);
   } else if (x == 'G') {
     /* greeting */
     mySerial.print("konnitiwa--\r");
   }
 } else {
   int action = rand() % 5;
   switch (action) {
     case 0:
       mySerial.print("sorosorotukaretana---\r");
       break;
     default:
       motorCtr(random() % 5, 1000);
   }
 }

}


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS