2018-07-11-2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
**進捗・残り作業 [#qdb7a763]
-だいたい完成した
-ディスプレイに表示する顔の作成
-音声認識関連で少し手直し
-パワーポイントの作成
**連絡事項 [#q8a78a2c]
-PC2台と作品に使用するパーツをお借りしています.
**必要な物 [#ha68c6ab]
-[[電池スナップ DC変換>https://www.sengoku.co.jp/mod/sgk...
**学習させた用語とindex [#vee91cf2]
|0|前|
|1|後ろ|
|2|左|
|3|右|
|4|こんにちは|
|5|へいshiri|
|6|おみくじ|
|7|元気?|
***問題点 [#v4ce75e9]
-電源落としたりすると学習させた内容がおかしくなる
-学習はあきらめた
**プログラム [#kf21ca8d]
***本体(車) [#d9a8f43d]
#include <time.h>
#include <SoftwareSerial.h>
#define motorR1 8
#define motorR2 9
#define motorRout 3
#define motorL1 5
#define motorL2 12
#define motorLout 13
SoftwareSerial mySerial(10,11); // 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 if (x == '') {
mySerial.print("watashiwashiridewaarimasen");
} else if (x == '') {
int omikuzi = rand() % 3;
switch (omikuzi) {
case 0:
mySerial.print("daikitidesu");
mySerial.print("omedetougozaimasuooataridesu");
break;
case 1:
mySerial.print("kyoudesu");
mySerial.print("kyouwaunngawaruimitaidesu");
break;
case 2:
mySerial.print("yazawaeikiti");
delay(1000);
mySerial.print("gomennnasai");
break;
}
mySerial.print("");
}*/
} else {
/*
int action = rand() % 5;
switch (action) {
case 0:
mySerial.print("sorosorotukaretana---\r");
break;
default:
motorCtr(random() % 5, 1000);
}*/
}
}
***コントローラ(音声認識) [#kcf8c8e6]
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
#define DELAY() delay( 20 );
#define CMD_BREAK() cmd0( 'b' )
#define CMD_SLEEP(x) cmd1( 's', (x)+0x41 )
#define CMD_LANGUAGE(x) cmd1( 'l', (x)+0x41 )
#define CMD_TIMEOUT(x) cmd1( 'o', (x)+0x41 )
#define CMD_BAUDRATE(x) cmd1( 'a', (x)+0x41 )
#define CMD_RESETALL() cmd1( 'r', 'R' )
#define CMD_RECOG_SI(x) cmd1r1( 'i', (x)+0x41, 's' )
#define LANG_En 0
#define LANG_It 1
#define LANG_Ja 2
#define LANG_De 3
#define LANG_Es 4
#define LANG_Fr 5
#define PHRASE_action 1
#define PHRASE_direction 2
#define PHRASE_number 3
int cmd0( byte cmd ) {
int r;
mySerial.write( cmd );
DELAY();
while ( mySerial.available() <= 0 );
r = mySerial.read();
DELAY();
return r;
}
int cmd1( byte cmd, byte arg ) {
int r;
mySerial.write( cmd );
DELAY();
mySerial.write( arg );
DELAY();
while ( mySerial.available() <= 0 );
r = mySerial.read();
DELAY();
return r;
}
int cmd1r1( byte cmd, byte arg, byte succ ) {
int r;
mySerial.write( cmd );
DELAY();
mySerial.write( arg );
DELAY();
while ( mySerial.available() <= 0 );
r = mySerial.read();
DELAY();
if ( r != succ ) return r;
mySerial.write( ' ' );
DELAY();
while ( mySerial.available() <= 0 );
r = mySerial.read();
DELAY();
return r - 0x41;
}
void setup() {
Serial.begin( 9600 );
pinMode( 10, INPUT );
pinMode( 11, OUTPUT );
mySerial.begin( 9600 );
while ( CMD_BREAK() != 'o' );
CMD_LANGUAGE( LANG_Ja );
}
void loop() {
int x;
x = CMD_RECOG_SI(PHRASE_direction);
switch ( x ) {
case 't':
Serial.println( "Time out" );
break;
case 'e':
Serial.println( "Cannot regognize" );
break;
case 0:
Serial.write( 'L' );
Serial.println("0-0");
break;
case 1:
Serial.write( 'R' );
Serial.println("1-1");
break;
case 2:
Serial.write( 'S' );
Serial.println("2-2");
break;
case 4:
Serial.write( 'F' );
Serial.println("3-3");
break;
case 5:
Serial.write( 'B' );
Serial.println("4-4");
break;
default:
Serial.println( x );
break;
}
}
***ディスプレイ(表情) [#c49e1828]
終了行:
**進捗・残り作業 [#qdb7a763]
-だいたい完成した
-ディスプレイに表示する顔の作成
-音声認識関連で少し手直し
-パワーポイントの作成
**連絡事項 [#q8a78a2c]
-PC2台と作品に使用するパーツをお借りしています.
**必要な物 [#ha68c6ab]
-[[電池スナップ DC変換>https://www.sengoku.co.jp/mod/sgk...
**学習させた用語とindex [#vee91cf2]
|0|前|
|1|後ろ|
|2|左|
|3|右|
|4|こんにちは|
|5|へいshiri|
|6|おみくじ|
|7|元気?|
***問題点 [#v4ce75e9]
-電源落としたりすると学習させた内容がおかしくなる
-学習はあきらめた
**プログラム [#kf21ca8d]
***本体(車) [#d9a8f43d]
#include <time.h>
#include <SoftwareSerial.h>
#define motorR1 8
#define motorR2 9
#define motorRout 3
#define motorL1 5
#define motorL2 12
#define motorLout 13
SoftwareSerial mySerial(10,11); // 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 if (x == '') {
mySerial.print("watashiwashiridewaarimasen");
} else if (x == '') {
int omikuzi = rand() % 3;
switch (omikuzi) {
case 0:
mySerial.print("daikitidesu");
mySerial.print("omedetougozaimasuooataridesu");
break;
case 1:
mySerial.print("kyoudesu");
mySerial.print("kyouwaunngawaruimitaidesu");
break;
case 2:
mySerial.print("yazawaeikiti");
delay(1000);
mySerial.print("gomennnasai");
break;
}
mySerial.print("");
}*/
} else {
/*
int action = rand() % 5;
switch (action) {
case 0:
mySerial.print("sorosorotukaretana---\r");
break;
default:
motorCtr(random() % 5, 1000);
}*/
}
}
***コントローラ(音声認識) [#kcf8c8e6]
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
#define DELAY() delay( 20 );
#define CMD_BREAK() cmd0( 'b' )
#define CMD_SLEEP(x) cmd1( 's', (x)+0x41 )
#define CMD_LANGUAGE(x) cmd1( 'l', (x)+0x41 )
#define CMD_TIMEOUT(x) cmd1( 'o', (x)+0x41 )
#define CMD_BAUDRATE(x) cmd1( 'a', (x)+0x41 )
#define CMD_RESETALL() cmd1( 'r', 'R' )
#define CMD_RECOG_SI(x) cmd1r1( 'i', (x)+0x41, 's' )
#define LANG_En 0
#define LANG_It 1
#define LANG_Ja 2
#define LANG_De 3
#define LANG_Es 4
#define LANG_Fr 5
#define PHRASE_action 1
#define PHRASE_direction 2
#define PHRASE_number 3
int cmd0( byte cmd ) {
int r;
mySerial.write( cmd );
DELAY();
while ( mySerial.available() <= 0 );
r = mySerial.read();
DELAY();
return r;
}
int cmd1( byte cmd, byte arg ) {
int r;
mySerial.write( cmd );
DELAY();
mySerial.write( arg );
DELAY();
while ( mySerial.available() <= 0 );
r = mySerial.read();
DELAY();
return r;
}
int cmd1r1( byte cmd, byte arg, byte succ ) {
int r;
mySerial.write( cmd );
DELAY();
mySerial.write( arg );
DELAY();
while ( mySerial.available() <= 0 );
r = mySerial.read();
DELAY();
if ( r != succ ) return r;
mySerial.write( ' ' );
DELAY();
while ( mySerial.available() <= 0 );
r = mySerial.read();
DELAY();
return r - 0x41;
}
void setup() {
Serial.begin( 9600 );
pinMode( 10, INPUT );
pinMode( 11, OUTPUT );
mySerial.begin( 9600 );
while ( CMD_BREAK() != 'o' );
CMD_LANGUAGE( LANG_Ja );
}
void loop() {
int x;
x = CMD_RECOG_SI(PHRASE_direction);
switch ( x ) {
case 't':
Serial.println( "Time out" );
break;
case 'e':
Serial.println( "Cannot regognize" );
break;
case 0:
Serial.write( 'L' );
Serial.println("0-0");
break;
case 1:
Serial.write( 'R' );
Serial.println("1-1");
break;
case 2:
Serial.write( 'S' );
Serial.println("2-2");
break;
case 4:
Serial.write( 'F' );
Serial.println("3-3");
break;
case 5:
Serial.write( 'B' );
Serial.println("4-4");
break;
default:
Serial.println( x );
break;
}
}
***ディスプレイ(表情) [#c49e1828]
ページ名: