uploaded week 7

This commit is contained in:
Tomoya Matsuura(MacBookPro) 2023-05-26 18:46:25 +09:00
parent eebeea8f12
commit 260dd3372a
45 changed files with 646 additions and 2 deletions

View File

@ -0,0 +1,152 @@
---
title: Week 7
date: 2023-05-26
weight: 7
---
# 2023 Tokyo University of the Arts Art media Center「Code and Design」
## Slides (in Japanese)
{{< button href="2023-code-and-design-7.pdf">}}SlidesPDF{{< /button >}}
{{< button href="./slides">}}SlidesHTML{{< /button >}}
## Python Scripts for Mouse Automation
https://github.com/tomoyanonymous/py-serial-automouse
{{< button href="https://github.com/tomoyanonymous/py-serial-automouse/archive/refs/heads/main.zip">}} DL Zip {{< /button >}}
## Arduino Example Codes
### ADCTouch_monitor.ino
{{< button href="./ADCTouch_monitor/ADCTouch_monitor.ino">}}DL{{< /button >}}
```cpp
#include <ADCTouch.h>
void setup() {
pinMode(A0, INPUT);
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
int val = ADCTouch.read(A0, 100);
Serial.println(val);
delay(40);
}
```
### ADCTouch_minimal.ino
{{< button href="./ADCTouch_minimal/ADCTouch_minimal.ino">}}DL{{< /button >}}
```cpp
#include <ADCTouch.h>
//setup()とloop()で共通して使う値はグローバル変数(関数の外側)で定義しておく
int ref = 0;
void setup() {
pinMode(A0, INPUT);
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
//繋げた導体の状態で初期値が変わるので、それを保存しておく必要がある
ref = ADCTouch.read(A0, 100); //(使用するピン番号,平均を取るサンプル数)
}
void loop() {
int val = ADCTouch.read(A0, 100) - ref;
if (val > 40) {
digitalWrite(LED_BUILTIN, HIGH);
} else {
digitalWrite(LED_BUILTIN, LOW);
}
Serial.println(val);
delay(40);
}
```
### ADCTouch_Mouse
{{< button href="./ADCTouch_Mouse/ADCTouch_Mouse.ino">}}DL{{< /button >}}
```cpp
#include <ADCTouch.h>
const int upButton = A0;
const int downButton = A1;
const int leftButton = A2;
const int rightButton = A3;
const int mouseButton = A4;
int ref_up = 0;
int ref_down = 0;
int ref_left = 0;
int ref_right = 0;
int ref_mouse = 0;
int range = 10; // マウスカーソルの移動幅
void setup() {
pinMode(upButton, INPUT);
pinMode(downButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
pinMode(mouseButton, INPUT);
ref_up = ADCTouch.read(upButton, 100);
ref_down = ADCTouch.read(downButton, 100);
ref_left = ADCTouch.read(leftButton, 100);
ref_right = ADCTouch.read(rightButton, 100);
ref_mouse = ADCTouch.read(mouseButton, 100);
Serial.begin(9600);
}
//マウス移動に関する処理をひとまとめに
void moveMouse(int x, int y, int mouse_state) {
Serial.print(x);
Serial.print(" ");
Serial.print(y);
Serial.print(" ");
Serial.println(mouse_state);
}
void loop() {
// ボタンの検出
int v1 = ADCTouch.read(upButton, 100) - ref_up;
int v2 = ADCTouch.read(downButton, 100) - ref_down;
int v3 = ADCTouch.read(leftButton, 100) - ref_left;
int v4 = ADCTouch.read(rightButton, 100) - ref_right;
int v5 = ADCTouch.read(mouseButton, 100) - ref_mouse;
//40以上ならクリックしたとみなし、1を、40以下なら0を
// A ? B : C;はif (A) { return B;} else {return C;} の略記(三項演算子)
int upState = v1 > 40 ? 1 : 0;
int downState = v2 > 40 ? 1 : 0;
int rightState = v3 > 40 ? 1 : 0;
int leftState = v4 > 40 ? 1 : 0;
int clickState = v5 > 40 ? 1 : 0;
// 移動距離を算出(左右同時押しも考慮)
int xDistance = (leftState - rightState) * range;
int yDistance = (upState - downState) * range;
//移動もクリックもしてないならシリアル送信は冗長なので、しない
// &&  AND、!はNOT
if (!(xDistance == 0 && yDistance == 0 && clickState == 0)) {
moveMouse(xDistance, yDistance, clickState);
}
delay(5);
}
```
### DrunkMouse(Add Randomness)
{{< button href="./DrunkMouse/DrunkMouse.ino">}}DL{{< /button >}}
### ADCTouch_Mouse_HID.ino (Only works for Leonardo and Pro Micro)
{{< button href="./ADCTouch_Mouse_HID/ADCTouch_Mouse_HID.ino">}}DL{{< /button >}}
### ADCTouch_Mouse_scroll.ino(works only with `move_relative_scroll.command`)
{{< button href="./ADCTouch_Mouse_scroll/ADCTouch_Mouse_scroll.ino">}}DL{{< /button >}}

View File

@ -0,0 +1,151 @@
---
title: 第7週
date: 2023-05-26
weight: 7
---
# 2023年 東京藝術大学 芸術情報センター開設科目 「コードとデザイン」 第7回
## スライド
{{< button href="2023-code-and-design-7.pdf">}}スライドPDF{{< /button >}}
{{< button href="slides">}}スライドHTML{{< /button >}}
## マウスを動かすためのPythonスクリプト
https://github.com/tomoyanonymous/py-serial-automouse
{{< button href="https://github.com/tomoyanonymous/py-serial-automouse/archive/refs/heads/main.zip">}} DL Zip {{< /button >}}
## Arduinoサンプルコード
### ADCTouch_monitor.ino
{{< button href="examples/ADCTouch_monitor/ADCTouch_monitor.ino">}}DL{{< /button >}}
```cpp
#include <ADCTouch.h>
void setup() {
pinMode(A0, INPUT);
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
int val = ADCTouch.read(A0, 100);
Serial.println(val);
delay(40);
}
```
### ADCTouch_minimal.ino
{{< button href="examples/ADCTouch_minimal/ADCTouch_minimal.ino">}}DL{{< /button >}}
```cpp
#include <ADCTouch.h>
//setup()とloop()で共通して使う値はグローバル変数(関数の外側)で定義しておく
int ref = 0;
void setup() {
pinMode(A0, INPUT);
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
//繋げた導体の状態で初期値が変わるので、それを保存しておく必要がある
ref = ADCTouch.read(A0, 100); //(使用するピン番号,平均を取るサンプル数)
}
void loop() {
int val = ADCTouch.read(A0, 100) - ref;
if (val > 40) {
digitalWrite(LED_BUILTIN, HIGH);
} else {
digitalWrite(LED_BUILTIN, LOW);
}
Serial.println(val);
delay(40);
}
```
### ADCTouch_Mouse
{{< button href="examples/ADCTouch_Mouse/ADCTouch_Mouse.ino">}}DL{{< /button >}}
```cpp
#include <ADCTouch.h>
const int upButton = A0;
const int downButton = A1;
const int leftButton = A2;
const int rightButton = A3;
const int mouseButton = A4;
int ref_up = 0;
int ref_down = 0;
int ref_left = 0;
int ref_right = 0;
int ref_mouse = 0;
int range = 10; // マウスカーソルの移動幅
void setup() {
pinMode(upButton, INPUT);
pinMode(downButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
pinMode(mouseButton, INPUT);
ref_up = ADCTouch.read(upButton, 100);
ref_down = ADCTouch.read(downButton, 100);
ref_left = ADCTouch.read(leftButton, 100);
ref_right = ADCTouch.read(rightButton, 100);
ref_mouse = ADCTouch.read(mouseButton, 100);
Serial.begin(9600);
}
//マウス移動に関する処理をひとまとめに
void moveMouse(int x, int y, int mouse_state) {
Serial.print(x);
Serial.print(" ");
Serial.print(y);
Serial.print(" ");
Serial.println(mouse_state);
}
void loop() {
// ボタンの検出
int v1 = ADCTouch.read(upButton, 100) - ref_up;
int v2 = ADCTouch.read(downButton, 100) - ref_down;
int v3 = ADCTouch.read(leftButton, 100) - ref_left;
int v4 = ADCTouch.read(rightButton, 100) - ref_right;
int v5 = ADCTouch.read(mouseButton, 100) - ref_mouse;
//40以上ならクリックしたとみなし、1を、40以下なら0を
// A ? B : C;はif (A) { return B;} else {return C;} の略記(三項演算子)
int upState = v1 > 40 ? 1 : 0;
int downState = v2 > 40 ? 1 : 0;
int rightState = v3 > 40 ? 1 : 0;
int leftState = v4 > 40 ? 1 : 0;
int clickState = v5 > 40 ? 1 : 0;
// 移動距離を算出(左右同時押しも考慮)
int xDistance = (leftState - rightState) * range;
int yDistance = (upState - downState) * range;
//移動もクリックもしてないならシリアル送信は冗長なので、しない
// &&  AND、!はNOT
if (!(xDistance == 0 && yDistance == 0 && clickState == 0)) {
moveMouse(xDistance, yDistance, clickState);
}
delay(5);
}
```
### DrunkMouse(ランダム性の追加)
{{< button href="examples/DrunkMouse/DrunkMouse.ino">}}DL{{< /button >}}
### ADCTouch_Mouse_HID.ino (Leonardo、Pro Microのみ)
{{< button href="examples/ADCTouch_Mouse_HID/ADCTouch_Mouse_HID.ino">}}DL{{< /button >}}
### ADCTouch_Mouse_scroll.ino(move_relative_scroll.commandと合わせて使う事)
{{< button href="examples/ADCTouch_Mouse_scroll/ADCTouch_Mouse_scroll.ino">}}DL{{< /button >}}

View File

@ -0,0 +1,66 @@
#include <ADCTouch.h>
const int upButton = A0;
const int downButton = A1;
const int leftButton = A2;
const int rightButton = A3;
const int mouseButton = A4;
int ref_up = 0;
int ref_down = 0;
int ref_left = 0;
int ref_right = 0;
int ref_mouse = 0;
int range = 10; // マウスカーソルの移動幅
void setup() {
pinMode(upButton, INPUT);
pinMode(downButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
pinMode(mouseButton, INPUT);
ref_up = ADCTouch.read(upButton, 100);
ref_down = ADCTouch.read(downButton, 100);
ref_left = ADCTouch.read(leftButton, 100);
ref_right = ADCTouch.read(rightButton, 100);
ref_mouse = ADCTouch.read(mouseButton, 100);
Serial.begin(9600);
}
//マウス移動に関する処理をひとまとめに
void moveMouse(int x, int y, int mouse_state) {
Serial.print(x);
Serial.print(" ");
Serial.print(y);
Serial.print(" ");
Serial.println(mouse_state);
}
void loop() {
// ボタンの検出
int v1 = ADCTouch.read(upButton, 100) - ref_up;
int v2 = ADCTouch.read(downButton, 100) - ref_down;
int v3 = ADCTouch.read(leftButton, 100) - ref_left;
int v4 = ADCTouch.read(rightButton, 100) - ref_right;
int v5 = ADCTouch.read(mouseButton, 100) - ref_mouse;
//40以上ならクリックしたとみなし、1を、40以下なら0を
// A ? B : C;はif (A) { return B;} else {return C;} の略記(三項演算子)
int upState = v1 > 40 ? 1 : 0;
int downState = v2 > 40 ? 1 : 0;
int rightState = v3 > 40 ? 1 : 0;
int leftState = v4 > 40 ? 1 : 0;
int clickState = v5 > 40 ? 1 : 0;
// 移動距離を算出(左右同時押しも考慮)
int xDistance = (leftState - rightState) * range;
int yDistance = (upState - downState) * range;
//移動もクリックもしてないならシリアル送信は冗長なので、しない
// &&  AND、!はNOT
if (!(xDistance == 0 && yDistance == 0 && clickState == 0)) {
moveMouse(xDistance, yDistance, clickState);
}
delay(5);
}

View File

@ -0,0 +1,70 @@
// Arduino Leonardo,Arduino Micro,Sparkfun Pro Microなど、ATMega32u4チップのものを使うこと
#include <Mouse.h>
#include <ADCTouch.h>
const int upButton = A0;
const int downButton = A1;
const int leftButton = A2;
const int rightButton = A3;
const int mouseButton = A4;
int ref_up = 0;
int ref_down = 0;
int ref_left = 0;
int ref_right = 0;
int ref_mouse = 0;
int range = 10;
void setup() {
pinMode(upButton, INPUT);
pinMode(downButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
pinMode(mouseButton, INPUT);
ref_up = ADCTouch.read(upButton, 100);
ref_down = ADCTouch.read(downButton, 100);
ref_left = ADCTouch.read(leftButton, 100);
ref_right = ADCTouch.read(rightButton, 100);
ref_mouse = ADCTouch.read(mouseButton, 100);
Serial.begin(9600);
}
void moveMouse(int x, int y, int mouse_state) {
Mouse.move(x, y, 0);
if (mouse_state == 1) {
if (!Mouse.isPressed(MOUSE_LEFT)) {
Mouse.press(MOUSE_LEFT);
}
}
else {
if (Mouse.isPressed(MOUSE_LEFT)) {
Mouse.release(MOUSE_LEFT);
}
}
}
void loop() {
int v1 = ADCTouch.read(upButton, 100) - ref_up;
int v2 = ADCTouch.read(downButton, 100) - ref_down;
int v3 = ADCTouch.read(leftButton, 100) - ref_left;
int v4 = ADCTouch.read(rightButton, 100) - ref_right;
int v5 = ADCTouch.read(mouseButton, 100) - ref_mouse;
int upState = v1 > 40 ? 1 : 0;
int downState = v2 > 40 ? 1 : 0;
int rightState = v3 > 40 ? 1 : 0;
int leftState = v4 > 40 ? 1 : 0;
int clickState = v5 > 40 ? 1 : 0;
int xDistance = (leftState - rightState) * range;
int yDistance = (upState - downState) * range;
if (!(xDistance == 0 && yDistance == 0 && clickState == 0)) {
moveMouse(xDistance, yDistance, clickState);
}
delay(5);
}

View File

@ -0,0 +1,78 @@
#include <ADCTouch.h>
const int upButton = A0;
const int downButton = A1;
const int leftButton = A2;
const int rightButton = A3;
const int mouseButton = A4;
const int scrollButton = A5;
int ref_up = 0;
int ref_down = 0;
int ref_left = 0;
int ref_right = 0;
int ref_mouse = 0;
int ref_scroll = 0;
int range = 10; // マウスカーソルの移動幅
void setup() {
pinMode(upButton, INPUT);
pinMode(downButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
pinMode(mouseButton, INPUT);
pinMode(scrollButton, INPUT);
ref_up = ADCTouch.read(upButton, 100);
ref_down = ADCTouch.read(downButton, 100);
ref_left = ADCTouch.read(leftButton, 100);
ref_right = ADCTouch.read(rightButton, 100);
ref_mouse = ADCTouch.read(mouseButton, 100);
ref_scroll = ADCTouch.read(scrollButton, 100);
Serial.begin(9600);
}
//マウス移動に関する処理をひとまとめに
void moveMouse(int x, int y, int mouse_state, int scroll=0) {
Serial.print(x);
Serial.print(" ");
Serial.print(y);
Serial.print(" ");
Serial.print(mouse_state);
Serial.print(" ");
Serial.println(scroll);
}
void loop() {
// ボタンの検出
int v1 = ADCTouch.read(upButton, 100) - ref_up;
int v2 = ADCTouch.read(downButton, 100) - ref_down;
int v3 = ADCTouch.read(leftButton, 100) - ref_left;
int v4 = ADCTouch.read(rightButton, 100) - ref_right;
int v5 = ADCTouch.read(mouseButton, 100) - ref_mouse;
int v6 = ADCTouch.read(scrollButton, 100) - ref_scroll;
//40以上ならクリックしたとみなし、1を、40以下なら0を
// A ? B : C;はif (A) { return B;} else {return C;} の略記(三項演算子)
int upState = v1 > 40 ? 1 : 0;
int downState = v2 > 40 ? 1 : 0;
int rightState = v3 > 40 ? 1 : 0;
int leftState = v4 > 40 ? 1 : 0;
int clickState = v5 > 40 ? 1 : 0;
int scrollState = v6 > 20 ? (v6 > 200 ? 1 : -1) : 0;
// 移動距離を算出(左右同時押しも考慮)
int xDistance = (leftState - rightState) * range;
int yDistance = (upState - downState) * range;
//移動もクリックもしてないならシリアル送信は冗長なので、しない
// &&  AND、!はNOT
if (!(xDistance == 0 && yDistance == 0 && clickState == 0 && scrollState == 0)) {
moveMouse(xDistance, yDistance, clickState,scrollState);
}
delay(5);
}

View File

@ -0,0 +1,26 @@
#include <ADCTouch.h>
//setup()とloop()で共通して使う値はグローバル変数(関数の外側)で定義しておく
int ref = 0;
void setup() {
pinMode(A0, INPUT);
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
//繋げた導体の状態で初期値が変わるので、それを保存しておく必要がある
ref = ADCTouch.read(A0, 100); //(使用するピン番号,平均を取るサンプル数)
}
void loop() {
int val = ADCTouch.read(A0, 100) - ref;
if (val > 40) {
digitalWrite(LED_BUILTIN, HIGH);
} else {
digitalWrite(LED_BUILTIN, LOW);
}
Serial.println(val);
delay(40);
}

View File

@ -0,0 +1,13 @@
#include <ADCTouch.h>
void setup() {
pinMode(A0, INPUT);
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
int val = ADCTouch.read(A0, 100);
Serial.println(val);
delay(40);
}

View File

@ -0,0 +1,68 @@
#include <ADCTouch.h>
const int upButton = A0;
const int downButton = A1;
const int leftButton = A2;
const int rightButton = A3;
const int mouseButton = A4;
int ref_up = 0;
int ref_down = 0;
int ref_left = 0;
int ref_right = 0;
int ref_mouse = 0;
int range = 10; // マウスカーソルの移動幅
void setup() {
randomSeed(analogRead(A5));
pinMode(upButton, INPUT);
pinMode(downButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
pinMode(mouseButton, INPUT);
ref_up = ADCTouch.read(upButton, 100);
ref_down = ADCTouch.read(downButton, 100);
ref_left = ADCTouch.read(leftButton, 100);
ref_right = ADCTouch.read(rightButton, 100);
ref_mouse = ADCTouch.read(mouseButton, 100);
Serial.begin(9600);
}
//マウス移動に関する処理をひとまとめに
void moveMouse(int x, int y, int mouse_state) {
Serial.print(x);
Serial.print(" ");
Serial.print(y);
Serial.print(" ");
Serial.println(mouse_state);
}
void loop() {
// ボタンの検出
int v1 = ADCTouch.read(upButton, 100) - ref_up;
int v2 = ADCTouch.read(downButton, 100) - ref_down;
int v3 = ADCTouch.read(leftButton, 100) - ref_left;
int v4 = ADCTouch.read(rightButton, 100) - ref_right;
int v5 = ADCTouch.read(mouseButton, 100) - ref_mouse;
//40以上ならクリックしたとみなし、1を、40以下なら0を
// A ? B : C;はif (A) { return B;} else {return C;} の略記(三項演算子)
int upState = v1 > 40 ? 1 : 0;
int downState = v2 > 40 ? 1 : 0;
int rightState = v3 > 40 ? 1 : 0;
int leftState = v4 > 40 ? 1 : 0;
int clickState = v5 > 40 ? 1 : 0;
// 移動距離を算出(左右同時押しも考慮)
int xDistance = (leftState - rightState) * range + random(-10,10);
int yDistance = (upState - downState) * range + random(-10,10);
//移動もクリックもしてないならシリアル送信は冗長なので、しない
// &&  AND、!はNOT
if (!(xDistance == 0 && yDistance == 0 && clickState == 0)) {
moveMouse(xDistance, yDistance, clickState);
}
delay(5);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 617 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 659 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 619 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 928 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1010 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 979 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 955 KiB

View File

@ -0,0 +1,10 @@
---
title: "Code and Design 2023 class 7 Slides"
date: 2023-05-19
bookHidden: true
---
# Slides
{{< slides_jpg >}}

View File

@ -0,0 +1,10 @@
---
title: "コードとデザイン 2023年 第7回 スライド"
date: 2023-05-19
bookHidden: true
---
# スライド
{{< slides_jpg >}}

View File

@ -39,7 +39,7 @@ In addition, by learning how to convert data and materials into each other throu
4. [(4/28) Binary Numbers WS ](./4) 4. [(4/28) Binary Numbers WS ](./4)
5. [(5/12) Handmade Computer(DIWO Full Adder)](./5) 5. [(5/12) Handmade Computer(DIWO Full Adder)](./5)
6. [(5/19) Software and Algorithm - Let's try using Arduino](./6) 6. [(5/19) Software and Algorithm - Let's try using Arduino](./6)
7. (5/26) Considering Inputs (Switches, Handmade Resistors) 7. [(5/26) Considering Inputs (Make Unreasonable Mouse)](./7)
8. (6/2) Considering Output (motor, solenoid, relay) 8. (6/2) Considering Output (motor, solenoid, relay)
9. (6/9) Cartesian Robot and Digital Fabrication (Plotter, Laser Cutter) 9. (6/9) Cartesian Robot and Digital Fabrication (Plotter, Laser Cutter)
10. (6/16) Cartesian Robot and Digital Fabrication (3D Printer and G-code Hack) 10. (6/16) Cartesian Robot and Digital Fabrication (3D Printer and G-code Hack)

View File

@ -40,7 +40,7 @@ bookCollapseSection: true
4. [(4/28) 二進数WS](./4) 4. [(4/28) 二進数WS](./4)
5. [(5/12) Handmade Computerみんなでつくる全加算器](./5) 5. [(5/12) Handmade Computerみんなでつくる全加算器](./5)
6. [(5/19) ソフトウェアとアルゴリズムーArduinoを使ってみよう](./6) 6. [(5/19) ソフトウェアとアルゴリズムーArduinoを使ってみよう](./6)
7. (5/26) 入力を考える(スイッチ、自作抵抗) 7. [(5/26) 入力を考える(不条理なマウスを作る)](./7)
8. (6/2) 出力を考える(モーター、ソレノイド、リレー) 8. (6/2) 出力を考える(モーター、ソレノイド、リレー)
9. (6/9) Cartesian Robotとデジタルファブリケーションプロッター、レーザーカッター 9. (6/9) Cartesian Robotとデジタルファブリケーションプロッター、レーザーカッター
10. (6/16) Cartesian Robotとデジタルファブリケーション (3DプリンターとGコードハック) 10. (6/16) Cartesian Robotとデジタルファブリケーション (3DプリンターとGコードハック)