#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); } }
}