Skip to content

Commit 72eaee4

Browse files
committed
update disc supply
1 parent 7b2e7a4 commit 72eaee4

File tree

6 files changed

+221
-88
lines changed

6 files changed

+221
-88
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#include <Wire.h>
2+
#include <IcsHardSerialClass.h>
3+
4+
#define DISC_SUPPLIER 4
5+
6+
IcsHardSerialClass krs(&Serial, 2, 115200, 1000);
7+
8+
uint32_t deg;
9+
10+
void setup() {
11+
Wire.begin(8);
12+
Wire.setClock(100000);
13+
Wire.onRequest(request);
14+
krs.begin();
15+
krs.setPos(DISC_SUPPLIER, 7500);
16+
delay(1000);
17+
krs.setFree(DISC_SUPPLIER);
18+
}
19+
20+
void send_deg(uint32_t deg) {
21+
int digits[5];
22+
for (int i = 0; i < 5; ++i){
23+
digits[i] = deg % 10;
24+
deg /= 10;
25+
}
26+
for (int i = 4; i >= 0; --i)
27+
Wire.write('0' + digits[i]);
28+
}
29+
30+
void request(){
31+
send_deg(deg);
32+
Wire.write('\n');
33+
}
34+
35+
void loop() {
36+
deg = krs.setFree(DISC_SUPPLIER);
37+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include <Wire.h>
2+
3+
#define ARM_HAND_ZERO 7900
4+
#define ARM_MID_ZERO 8600
5+
#define ARM_ROOT_ZERO 7700
6+
7+
void setup() {
8+
Serial.begin(115200);
9+
Wire.begin();
10+
Wire.setClock(100000);
11+
Serial.println("start!");
12+
}
13+
14+
void loop() {
15+
if (Serial.available()) {
16+
Serial.println("\n");
17+
Serial.println((char)Serial.read());
18+
Serial.println(Wire.requestFrom(8, 6));
19+
Serial.println("requested");
20+
for (int i = 0; i < 6; ++i)
21+
Serial.print((char)Wire.read());
22+
Serial.println("done");
23+
}
24+
}

disc_supply_test/disc_supply_test.ino

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <Wire.h>
2+
#include <IcsHardSerialClass.h>
3+
4+
#define DISC_SUPPLIER 4
5+
#define DISC_SUPPLY_GET 4826
6+
#define DISC_SUPPLY_READY 10140
7+
#define DISC_SUPPLY_SHAKE 200
8+
9+
IcsHardSerialClass krs(&Serial, 2, 115200, 1000);
10+
11+
void setup() {
12+
krs.begin();
13+
}
14+
15+
void loop() {
16+
krs.setPos(DISC_SUPPLIER, DISC_SUPPLY_GET);
17+
delay(800);
18+
for (int i = 0; i < 5; ++i){
19+
krs.setPos(DISC_SUPPLIER, DISC_SUPPLY_GET + DISC_SUPPLY_SHAKE);
20+
delay(100);
21+
krs.setPos(DISC_SUPPLIER, DISC_SUPPLY_GET - DISC_SUPPLY_SHAKE);
22+
delay(100);
23+
}
24+
krs.setPos(DISC_SUPPLIER, DISC_SUPPLY_GET);
25+
delay(200);
26+
krs.setPos(DISC_SUPPLIER, DISC_SUPPLY_READY);
27+
delay(800);
28+
}

main_auto_check.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import subprocess
2+
import serial
3+
from othello_py import *
4+
from random import choice
5+
6+
7+
robot = serial.Serial('COM3',115200, timeout=1000000)
8+
egaroucid = subprocess.Popen('egaroucid5.exe 10'.split(), stdin=subprocess.PIPE, stdout=subprocess.PIPE)
9+
10+
def send_cmds(cmds):
11+
for cmd in cmds:
12+
print(cmd)
13+
cmd += '\n'
14+
robot.write(cmd.encode())
15+
print(robot.read(4))
16+
response = robot.read()
17+
print(response)
18+
19+
o = othello()
20+
o.check_legal()
21+
record = ''
22+
23+
while True:
24+
grid_str = str(o.player) + '\n'
25+
for yy in range(hw):
26+
for xx in range(hw):
27+
if o.grid[yy][xx] == black:
28+
grid_str += '0'
29+
elif o.grid[yy][xx] == white:
30+
grid_str += '1'
31+
else:
32+
grid_str += '.'
33+
grid_str += '\n'
34+
#print(grid_str)
35+
egaroucid.stdin.write(grid_str.encode('utf-8'))
36+
egaroucid.stdin.flush()
37+
value, coord = egaroucid.stdout.readline().decode().split()
38+
print(value, coord)
39+
record += coord
40+
print(record)
41+
policy = [int(coord[1]) - 1, ord(coord[0]) - ord('a')]
42+
flips = o.flippable(policy[0], policy[1])
43+
cmds = []
44+
#cmds.append('600')
45+
cmds.append(str(o.player) + str(policy[1]) + str(policy[0]))
46+
for flip in flips:
47+
cmds.append(('3' if o.player == 0 else '2') + str(flip[1]) + str(flip[0]))
48+
cmds.append(str(o.player + 4) + '00')
49+
print(cmds)
50+
send_cmds(cmds)
51+
o.move(policy[0], policy[1])
52+
print(policy)
53+
o.print_info()
54+
if not o.check_legal():
55+
o.player = 1 - o.player
56+
if not o.check_legal():
57+
o.print_info()
58+
egaroucid.kill()
59+
o.player = -1
60+
print('終局しました')
61+
exit()
62+
s = ''
63+
if o.player == 0:
64+
s += '*'
65+
else:
66+
s += ' '
67+
s += '● '
68+
s += str(o.n_stones[0])
69+
s += ' - '
70+
s += str(o.n_stones[1])
71+
s += ' ○'
72+
if o.player == 1:
73+
s += '*'
74+
else:
75+
s += ' '
76+
o.print_info()
77+
input()

main_robot/main_robot.ino

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
#include <Wire.h>
22
#include <Servo.h>
33
#include <IcsHardSerialClass.h>
4-
#include "robot2.h"
4+
5+
#define ROBOT_ID 1
6+
7+
#if ROBOT_ID == 1
8+
#include "robot1.h"
9+
#else
10+
#include "robot2.h"
11+
#endif
512

613
Servo flip_servo_out;
714
Servo flip_servo_in;
@@ -31,6 +38,12 @@ Servo flip_servo_in;
3138
#define ARM_MID 1
3239
#define ARM_ROOT 0
3340

41+
#define DISC_SUPPLIER 4
42+
#define DISC_SUPPLY_GET 4826
43+
#define DISC_SUPPLY_READY 10140
44+
#define DISC_SUPPLY_SHAKE 200
45+
46+
3447
#define ARM_HAND_TEST_1 (ARM_HAND_ZERO + 1000)
3548
#define ARM_MID_TEST_1 (ARM_MID_ZERO - 4000)
3649
#define ARM_ROOT_TEST_1 (ARM_ROOT_ZERO + 500)
@@ -565,6 +578,21 @@ void avoid(){
565578
move_arm(pos_avoid, 40, 10);
566579
}
567580

581+
void set_disc(){
582+
krs.setPos(DISC_SUPPLIER, DISC_SUPPLY_GET);
583+
delay(800);
584+
for (int i = 0; i < 5; ++i){
585+
krs.setPos(DISC_SUPPLIER, DISC_SUPPLY_GET + DISC_SUPPLY_SHAKE);
586+
delay(100);
587+
krs.setPos(DISC_SUPPLIER, DISC_SUPPLY_GET - DISC_SUPPLY_SHAKE);
588+
delay(100);
589+
}
590+
krs.setPos(DISC_SUPPLIER, DISC_SUPPLY_GET);
591+
delay(200);
592+
krs.setPos(DISC_SUPPLIER, DISC_SUPPLY_READY);
593+
delay(800);
594+
}
595+
568596
void loop() {
569597
/*
570598
if (received){
@@ -588,6 +616,8 @@ void loop() {
588616
flip_disc_white_to_black(&place, col, row);
589617
} else if (mode == 4) {
590618
avoid();
619+
} else if (mode == 5){
620+
set_disc();
591621
}
592622
received = false;
593623
}

main_root/main_root.ino

Lines changed: 24 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,9 @@
11
#include <Wire.h>
22

3-
#define PUL_PIN 11
4-
#define DIR_PIN 10
5-
#define ENA_PIN 9
6-
7-
#define DELAY_SLOW 12000
8-
#define DELAY_FAST 1200
9-
103
void setup() {
114
Wire.begin();
125
Wire.setClock(100000);
136
Serial.begin(115200);
14-
pinMode(PUL_PIN, OUTPUT);
15-
pinMode(DIR_PIN, OUTPUT);
16-
pinMode(ENA_PIN, OUTPUT);
17-
digitalWrite(ENA_PIN, HIGH);
18-
digitalWrite(DIR_PIN, HIGH);
197
}
208

219
#define DEMO_N_TASKS 28
@@ -51,51 +39,6 @@ int demo_tasks[DEMO_N_TASKS][3] = {
5139
{3, 4, 5}
5240
};
5341

54-
void demo() {
55-
if (Serial.available()) {
56-
for (int i = 0; i < DEMO_N_TASKS; ++i) {
57-
if (demo_tasks[i][0] == -1) {
58-
get_new_disc();
59-
} else {
60-
Wire.beginTransmission(8);
61-
for (int j = 0; j < 3; ++j)
62-
Wire.write((byte)demo_tasks[i][j]);
63-
Wire.endTransmission();
64-
while (true) {
65-
Wire.requestFrom(8, 1);
66-
if (Wire.read())
67-
delay(100);
68-
else
69-
break;
70-
}
71-
}
72-
}
73-
while (Serial.available())
74-
Serial.read();
75-
}
76-
}
77-
78-
void get_new_disc() {
79-
for (int i = 0; i < 160; ++i) {
80-
digitalWrite(PUL_PIN, HIGH);
81-
delayMicroseconds(DELAY_FAST);
82-
digitalWrite(PUL_PIN, LOW);
83-
delayMicroseconds(DELAY_FAST);
84-
}
85-
for (int i = 0; i < 80; ++i) {
86-
digitalWrite(PUL_PIN, HIGH);
87-
delayMicroseconds(DELAY_SLOW);
88-
digitalWrite(PUL_PIN, LOW);
89-
delayMicroseconds(DELAY_SLOW);
90-
}
91-
for (int i = 0; i < 160; ++i) {
92-
digitalWrite(PUL_PIN, HIGH);
93-
delayMicroseconds(DELAY_FAST);
94-
digitalWrite(PUL_PIN, LOW);
95-
delayMicroseconds(DELAY_FAST);
96-
}
97-
}
98-
9942
void loop() {
10043

10144
if (Serial.available() >= 3) {
@@ -112,37 +55,31 @@ void loop() {
11255
if (err) {
11356
Serial.print("19991");
11457
} else {
115-
if (nums[0] != 6) {
116-
int i2c_id = 0;
117-
if (nums[0] == 0 || nums[0] == 3 || nums[0] == 4) {
118-
i2c_id = 8;
119-
} else {
120-
i2c_id = 9;
121-
nums[2] = 7 - nums[2];
122-
}
123-
Wire.beginTransmission(i2c_id);
124-
if (nums[0] == 5)
125-
nums[0] = 4;
126-
Serial.print(i2c_id);
127-
for (int i = 0; i < 3; ++i)
128-
Serial.print(nums[i]);
129-
for (int i = 0; i < 3; ++i)
130-
Wire.write((byte)nums[i]);
131-
Wire.endTransmission();
132-
//Serial.println("sent");
133-
while (true) {
134-
Wire.requestFrom(i2c_id, 1);
135-
if (Wire.read())
136-
delay(100);
137-
else
138-
break;
139-
}
58+
int i2c_id = 0;
59+
if (nums[0] == 0 || nums[0] == 3 || nums[0] == 4 || nums[0] == 6) {
60+
i2c_id = 8;
14061
} else {
141-
Serial.print("0");
142-
for (int i = 0; i < 3; ++i)
143-
Serial.print(nums[i]);
144-
get_new_disc();
145-
//Serial.println("get new disc");
62+
i2c_id = 9;
63+
nums[2] = 7 - nums[2];
64+
}
65+
Wire.beginTransmission(i2c_id);
66+
if (nums[0] == 5)
67+
nums[0] = 4;
68+
if (nums[0] == 6)
69+
nums[0] = 5;
70+
Serial.print(i2c_id);
71+
for (int i = 0; i < 3; ++i)
72+
Serial.print(nums[i]);
73+
for (int i = 0; i < 3; ++i)
74+
Wire.write((byte)nums[i]);
75+
Wire.endTransmission();
76+
//Serial.println("sent");
77+
while (true) {
78+
Wire.requestFrom(i2c_id, 1);
79+
if (Wire.read())
80+
delay(100);
81+
else
82+
break;
14683
}
14784
char chr = ' ';
14885
while (chr != '\n')

0 commit comments

Comments
 (0)