1. ฝึกต่อวงจรและเขียนโปรแกรมสําหรับบอร์ด Arduino เพื่อวัดแรงดันอินพุต-แอนะล็อกและแสดงค่าที่ ได้ผ่านทาง 7-Segment Display
รายการอุปกรณ์
1. แผงต่อวงจร (เบรดบอร์ด) 1 อัน
2. บอร์ด Arduino (ใช้แรงดัน +5V) 1 บอร์ด
3. ตัวต้านทานปรับค่าได้แบบสามขา 10kΩ หรือ 20kΩ 1 ตัว
4. 7-Segment Display แบบ 2 ตัวเลข (Common-Cathode) 1 ตัว
5. ทรานซิสเตอร์ NPN (เช่น PN2222A) 2 ตัว
6. ตัวต้านทาน 1kΩ 2 ตัว
7. ตัวต้านทาน 330Ω หรือ 470Ω 8 ตัว
8. สายไฟสําหรับต่อวงจร 1 ชุด
9. มัลติมิเตอร์ 1 เครื่อง
ขั้นตอนการทดลอง
1. ออกแบบวงจร วาดผังวงจร และต่อวงจรบนเบรดบอร์ด ร่วมกับบอร์ด Arduino เพื่อวัดแรงดันที่ได้ จากวงจรแบ่งแรงดันที่ใช้ตัวต้านทานปรับค่าได้ (แรงดันอยู่ในช่วง 0V ถึง 5V) เช่น ป้อนเข้าที่ขา A0 ของบอร์ด Arduino แล้วนําคา่ไปแสดงผลโดยใช้ 7-Segment Display จํานวน 2 หลัก และ ให้มีทศนิยมเพยีงหนึ่งตําแหน่ง เช่น ถ้าวัดแรงดันได้ 2.365V จะแสดงผลเป็น “2.4” ถ้าวัดได้ 2.539V ให้แสดงผลเป็น “2.5” เป็นต้น และให้ใช้แรงดันไฟเลี้ยง VCC=+5V และ Gnd จากบอร์ด Arduino เท่านั้น [ทุกกลุ่มจะต้องวาดวงจรสําหรับการทดลองมาให้แลว้เสร็จ (ให้เตรียมตัวมาก่อนเข้าเรียน วิชาปฏิบัติ]
2. เขียนโค้ดสําหรับ Arduino เพื่ออ่านค่าจากแรงดันอินพุต-แอนะล็อก แลว้นําไปแสดงผลโดยใช้ 7-Segment Display ตามที่กล่าวไป (และให้แสดงค่าทอี่่านได้ออกทาง Serial Monitor ด้วย) และในการเขยีนโค้ด ห้ามใช้ตัวแปรหรือตัวเลขแบบ float
#define in A6
const byte seven_seg[7]={4,5,6,7,8,9,10};
const byte seven[2]={2,3};
byte digi[10]={B1111110,B0110000,B1101101,B1111001,B0110011,B1011011,B1011111,B1110000,B1111111,B1111011};
void setup() {
// put your setup code here, to run once:
for(int i=0;i<7;i++){
pinMode(seven_seg[i],OUTPUT);
}
for(int i=0;i<2;i++){
pinMode(seven[i],OUTPUT);
}
analogReference(DEFAULT);
Serial.begin(9600);
}
void loop() {
int tod;
// put your main code here, to run repeatedly:
int input=analogRead(in);
input=map(input,0,1023,0,5000);
Serial.print(input);
Serial.print(" ");
int num_seg1 = input/1000;
if((input%100>40)){
tod=1;
}else{
tod=0;
}
Serial.print(num_seg1);
Serial.print(" ");
int num_seg2 = ((input%1000)/100)+tod;
Serial.println(num_seg2);
delay(10);
digitalWrite(seven[0],1);
digitalWrite(seven[1],0);
display_seg(num_seg1);
delay(10);
digitalWrite(seven[0],0);
digitalWrite(seven[1],1);
display_seg(num_seg2);
}
void display_seg(int num_seg){
byte t=digi[num_seg];
for(int i=6;i>=0;i--){
digitalWrite(seven_seg[i],t&1);
t>>=1;
}













