---
# System prepended metadata

title: 卒研経過報告(Eチーム)#11

---

# 卒研経過報告(Eチーム)#11
タンジブルなプログラミングデバイスCU-Brick(キューブリック)に関する研究
team member : 子安，鈴木，堀
GitHub : https://github.com/KoyasuJunya/cu-brick-tangible-master
先週のメモ：https://hackmd.io/@Eteam/SyxGKEh3O

# 実験日:7月9日(金)
7月13日(火)発表分

## 前回まで
前回は1マス分の回路を作成し、計測を行ったところ、出力された値は予想通りだったが0が出力されることが多かった。

## 今回の目標
今回はプログラムをもっと単純なものにして計測を行い、結果を確認する。

## 実験
### 1. 計算式
$$
V_1=1023\frac{R_1}{R_1+R_{11}}\tag{1}
$$$$
V_2=1023\frac{R_{11}}{R_1+R_{11}}\tag{2}
$$

### 2. 回路図
今回は1x1ブロックの測定に必要のない、トランジスタ、ダイオードを回路から除いて回路作成を行った。以下が今回使用した回路図である。これを使用して今回の計測を行う。

![](https://i.imgur.com/OGoNVj2.png =300x)

### 3. プログラム
```c=
//実サイズ
#include "MicroBit.h"

#define ID_READ_BUTTON  10 //読み取りボタンインスタンスのID

uint16_t board;
MicroBit uBit;
MicroBitButton readButton(MICROBIT_PIN_P19, ID_READ_BUTTON, MICROBIT_BUTTON_ALL_EVENTS, PullUp);

//読み取りルーチン
void read(){
    static MicroBitPin digitalOut = {uBit.io.P5};//P6でも試す
    static MicroBitPin analogRead = {uBit.io.P3};//P4でも試す

    
    //ここから読み取り
    digitalOut.setDigitalValue(0);//
    //直接読取る部分
    digitalOut.setDigitalValue(1);デジタル入力
    board = analogRead.getAnalogValue(); アナログ変換
    digitalOut.setDigitalValue(0);デジタル入力ストップ
}

//読み取りボタン押されたら実行
void OnButton(MicroBitEvent){
    uBit.display.disable();
    read();
    uBit.display.enable();
    //値を表示(デバッグ用)
            if(board < 10){
                uBit.serial.send("     ");
            }else if(board < 100){
                uBit.serial.send("    ");
            }else if(board < 1000){
                uBit.serial.send("   ");
            }else{
                uBit.serial.send("  ");
            }
            uBit.serial.send(board);
        
    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);
    }
}

```
上のプログラムは電圧を計測するプログラムである。このプログラムを今回は使って計測を行う。

## 実験



### 計測で使用するものと計測方法
R1の正しい電圧が読み取れるか計測を行う。またプログラムを単純にしたことによって前回の問題であった、0が出て読み取れないことがある問題が解決しているのかどうか確認する。

計測方法としては、簡単にしたプログラムと前回同様teratermを使用して行う。

また、R1は510Ωの抵抗で固定し、R11の抵抗を変更して計測を行う。

正しく数値が返せているのかの確認のために抵抗は、
6800Ω, 2200Ω, 510Ω, 220Ω
以上の4つの抵抗を使用して行う。
上にあるV1を求める計算式に数値を代入して計算した予想される電圧値は、
6800Ω:71.4, 2200Ω:237.2, 510Ω:511, 220Ω:714.7
となる。
#### 1. pinが3, 5の場合
・220Ω
![](https://i.imgur.com/kRpsnzA.png =400x)
・510Ω
![](https://i.imgur.com/y4w2c41.png =400x)
・2200Ω
![](https://i.imgur.com/S95SDLr.png =400x)
・6800Ω
![](https://i.imgur.com/uTABXVq.png =400x)

| 抵抗値(Ω) | 理論値(0~1023) | アナログ値(0~1023) | 誤差 | 
| ---- | ----- | ----- | ------- | 
| 220  | 715   | 425    | 290     | 
| 510  | 511   | 372    | 139     | 
| 2200 | 237   | 400    | 163    | 
| 6800 | 71    | 426    | 355    | 

上の画像がteratermの画像、表がその値をまとめたものである。
表を見るとアナログの値がすべて400周辺という明らかにおかしい結果になっている。
ここで電圧に原因があると考え取り合えずpinの電圧から確かめたところ
![](https://i.imgur.com/8HQbFl8.jpg =300x)
上の写真がpin3の場合の電圧の数値で
![](https://i.imgur.com/vmaBQaE.jpg =300x)

次の写真がpinを4にしたときの電圧の数値である。
この写真を見ればわかるようにpin3とpin4で電圧の値が違ってしまっていることが分かる。
この結果を受けて次はpin4に変更して行う。

#### 2.pinが4, 6の場合
・220Ω
![](https://i.imgur.com/bIwnmPe.png =400x)
・510Ω
![](https://i.imgur.com/bxkxv3K.png =400x)
・2200Ω
![](https://i.imgur.com/kSFuNlQ.png =400x)
・6800Ω
![](https://i.imgur.com/iApdEdx.png =400x)

| 抵抗値(Ω) | 理論値(0~1023) | アナログ値(0~1023) | 誤差 | 
| ---- | ----- | ----- | ------- | 
| 220  | 715   | 720   | 5       | 
| 510  | 511   | 518   | 7       | 
| 2200 | 237   | 204   | 33      | 
| 6800 | 71    | 114   | 43      |

上の表は計測の結果をまとめたものである。
この表を見ればわかるようにpin4,6の場合は理想値にかなり近い値で安定していることが分かる。

### まとめ
今回の計測ではpinの場所によって電圧に違いが現れることがあるということが分かった。また、プログラムを簡略化した今回は前回のように0が表示されることはなかった。

## 次回の目標
回路とプログラムを改良し、2*2の直列回路とそれを読み取るプログラムを作成する。加えてその状態で値を計測し、適切な値が計測できるかどうかを実験する。

[](参考文献)
[](
メモ\
基準となる抵抗：510Ω\
開始ブロック：6.8kΩ\
https://i.imgur.com/Il0x5U8.png
)
[](https://i.imgur.com/FhZsEPl.jpg)