# 介面 實驗八
## 工作日誌
機械3A
孫颯馬
### 遭遇問題
### 流程
1. 微動開關感測實驗(開關)
2. 電位計感測實驗(電阻)
3. 光敏電阻感測實驗(電阻)
4. 薄膜壓力感測實驗(電阻)
5. 電容麥克風感測實驗(電容)
6. 轉速發電機感測實驗(電壓源)
7. 光電晶體感測實驗(電流源)
8. 霍爾磁場感測(電流激發-電壓值量測)
### 實驗數據
## 1. 微動開關感測實驗(開關)
:::info

:::
:::spoiler Click Me
the left side

the right side

:::
## 2. 電位計感測實驗(電阻)
:::info

:::
:::spoiler Click

最小角度

最大角度

右1K

:::
## 3. 光敏電阻感測實驗(電阻)
:::spoiler Click
沒照光(5.12V)

照光(1.76V)

:::
## 4. 薄膜壓力感測實驗(電阻)
:::spoiler Click
沒壓(4.68V)

壓1kg(3.68V)

壓2kg(1.39V)

:::
## 5. 電容麥克風感測實驗(電容)
:::info

:::
:::spoiler Click
833Hz

3KHz

:::
## 6. 轉速發電機感測實驗(電壓源)
:::info

:::
:::spoiler Click
沒轉(4.95V)

0.75A(2.78V)

0.92A(0V)

:::
## 7. 光電晶體感測實驗(電流源)
:::info

:::
:::spoiler Click
0.2mA

0.6mA

1.2mA

遮住

:::
## 8. 霍爾磁場感測(電流激發-電壓值量測)
:::info

:::
:::spoiler Click




:::
## 驗收
### 驗收題目

實驗數據
:::spoiler 接線

:::
:::spoiler 程式
#include "c4mlib.h"
#define F_CPU 11059200UL
uint16_t temp = 0;
float volt = 0;
int resistance = 0;
int current = 1;
int main(void)
{
C4M_DEVICE_set();
/*ADC設定旗標群*/
REGFPT(&ADMUX,0x1F,0,0x1F);//設定輸入通道Calibrate
REGFPT(&ADMUX,0xC0,6,0);//設定參考電壓外部參考
REGFPT(&ADMUX,0x20,5,0);//設定10位元轉換
REGFPT(&ADCSRA,0x07,0,2);//設定工作時脈除頻4
REGFPT(&ADCSRA,0x20,5,0);//禁能觸發轉換
REGFPT(&ADCSRA,0x08,3,1);//禁能ADC中斷
REGFPT(&DDRF,0x0F,0,0);//設定ADC接腳為輸入
REGFPT(&ADCSRA,0x80,7,1);//致能ADC
REGFPT(&ADCSRA,0x40,6,1);//觸發 ADC 轉換
REGFPT(&DDRD,0xC0,0,0xC0);
REGFPT(&PORTD,0xC0,0,0x80);//1mA
while(1){
meansure();
record();
_delay_ms(2000);
}
}
void meansure(void)
{
REGFPT(&ADMUX,0x1F,0,0x00);//設定輸入通道ADC1
REGFPT(&ADCSRA,0x40,6,1);//觸發 ADC 轉換
REGGET(&ADCL, 2, &temp);//讀取 10 位元 uint16_t型態轉換結果
}
void record(void)
{
volt = temp*5.12/1024;
resistance = (5.12-volt)*1000/current;
if (volt!=0)
{
printf("V= %.2f V\n",volt);
printf("current= %d mA\n",current);
printf("resistance = %4d ohm\n", resistance);
printf("\n");
}
if (resistance>500)
{
current = 1;
REGFPT(&PORTD,0xC0,0,0x80);//1mA
}
if (resistance<400)
{
current = 10;
REGFPT(&PORTD,0xC0,0,0x40);//10mA
}
}
:::
:::spoiler 驗收影片
https://youtu.be/CawufRR7sKA
:::