---
# System prepended metadata

title: Eチーム夏休み中間発表

---

# Eチーム夏休み中間発表
メンバー：鈴木,堀
[前回のメモ](https://hackmd.io/NAhf1-9jT8-q7X664eJFAg)

## メンバー変更
子安君が別のテーマをやることになったため今後は2人で研究を進めていく。

## 方針
今後は大まかに作業を分担して取り組んでいく。ソフトを堀、ハードを鈴木が担当し、連携を取りながら見つけた課題を解決する。

## 夏季休暇中の目標
1. マス目が増えた場合の回路図の作成（直列回路の場合のおそらく限界である6マス分まで、段階的にマス目を増やす）
2. マス目に伴ったプログラムの作成
3. 実際に回路を作成して実験する
4. 実験結果から得た考察を参考に、今度の課題を見つける。

## 実験
縦2マス、横3マスの回路図を作成し、この回路用のプログラムを作成する。また、この回路とプログラムを使用し、正しい数値が計測できているか実験する。
### 回路
![](https://i.imgur.com/QS4tlr7.jpg =280x)![](https://i.imgur.com/le6Tg5M.jpg =280x)
上の2つの画像は今回の実験をするにあたって使用する回路を簡単に描いたものである。また、左側に書いてあるピンはすべてanalog出力のピンである。
画像の内容としては1枚目の写真が抵抗に1つずつ基準抵抗を使用した回路で、2枚目の写真は基準抵抗を1つにし、ダイオードを使用した場合の回路である。
### コード
今回使用したコードは以下である。
```c+=
#include"MicroBit.h"
#define TATE    2
#define YOKO    3
#define MASU  6
#define ID_READ_BUTTON  10
int n = 0;
//読み取りボタンインスタンスのID7
#define MUX_READ    4
//マルチプレクサで拡張するピンの数
uint16_t board[1][MASU]={9999, 9999, 9999, 9999, 9999, 9999};
MicroBit uBit;
MicroBitButton readButton(MICROBIT_PIN_P19, ID_READ_BUTTON, MICROBIT_BUTTON_ALL_EVENTS, PullUp);

//読み取りルーチン
void read(){
    static MicroBitPin analogRead[MASU]={uBit.io.P3, uBit.io.P0, uBit.io.P4, uBit.io.P1, uBit.io.P10, uBit.io.P2};
//ここから読み取り
    for(int j = 0; j < MASU; j++){
        board[0][j] = analogRead[j].getAnalogValue();
    }
}

//読み取りボタン押されたら実行
void OnButton(MicroBitEvent){
    n = 0;
    uBit.display.disable();
    read();
    uBit.display.enable();
    //値を表示(デバッグ用)
    for(int i=0; i < TATE; i++){
        for(int j=0; j <YOKO; j++){
            if(board[0][n]<10){
                uBit.serial.send("     ");
            }else if(board[0][n] < 100){
                uBit.serial.send("    ");
            }else if(board[0][n] < 1000){
                uBit.serial.send("   ");
            }else{
                uBit.serial.send("  ");
            }
            uBit.serial.send(board[0][n]);
            n++;
        }
        uBit.serial.send("\r\n\r\n");
    }
    uBit.serial.send("------------------------------------------------------");
    uBit.serial.send("\r\n\r\n");
}

int main(){
    uBit.init();
    uBit.messageBus.listen(ID_READ_BUTTON, MICROBIT_BUTTON_EVT_CLICK,OnButton, MESSAGE_BUS_LISTENER_DROP_IF_BUSY);

    while(true){
        uBit.sleep(1000);
    }
}
```
今回のプログラムはアナログpinのみを用いて最大限の回路を組む事を前提として、読み取り部分、通信部分を中心として拡張性のあるプログラムになるようにした。

## 結果
・1枚目の回路の場合

![](https://i.imgur.com/wMDWlJw.png =350x)
| 抵抗値(Ω) | 理論値(0~1023) | 出力値(0~1023) | 誤差 | 
| ---- | ----- | ----- | ------- | 
| 220  | 715   | 715   | 0     | 
| 2200 | 237   | 193    | 44    | 
| 6800 | 71    | 71    |  0   | 

・2枚目の回路の場合

![](https://i.imgur.com/BR66NSn.png =350x)

## 考察
結果として、1枚目の基準抵抗を抵抗の数使用したものは正しく読み取ることができた。
2枚目の1つの基準抵抗を使用した場合は正しい値が読み取れなかった。
考察としてはダイオードの配置位置や使い方が間違っていたのではないかと考えられる。


## 今後の課題
* この研究を進めてく上でダイオードについての知識は必須になってくるため、ダイオードについて理解を深める。

* 今回までの実験で直列回路でマス目を１つずつ増やすことには成功したので、次は列で読み取れる回路を作成する。その後、先輩たちが列（行）を並列で読み取っていたところを直列で読み取れるように変更できるように回路、プログラムの作成を行っていく、それに伴い、マルチプレクサや、トランジスタなどの必要になってくるパーツについての理解を深める。