-เขียนโค้ดวัดอุณหภูมิใช้ LM35 สัญญาณที่ออกมาคือ แอนนาล๊อกแล้วนำมาหาร9.31
ปัญหาที่ติด คือ หาค่าจุดทศนิยมยังไม่ได้ แล้วต้องไปหาอ่านค่าตัวแปรอีกนิดเพื่อจะนำมาเขียนให้ได้ จุทศนิยม
ตัวอย่างโค้ด
int tempC;
int reading;
int tempPin = A4;
int A = 6;
int B = 7;
int C = 8;
int D = 9;
int E = 10;
int F = 11;
int G = 12; //pin6 to pin12 is A-G
int CO1 = 5;
int CO2 = 4;
int CO3 = A2; //pin4 5 และ A2 คือให้ตัวแปล CO1-CO3
const int segs[7] = { A, B, C, D, E, F, G };
const byte numbers[10] = { 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101,0b1111101, 0b0000111, 0b1111111, 0b1101111 };
int digit1 = 0;
int digit2 = 0;
int digit3 = 0;
void setup()
{
analogReference(INTERNAL);
Serial.begin(9600);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(CO1, OUTPUT);
pinMode(CO2, OUTPUT);
pinMode(CO3, OUTPUT); //สั่ง A-G และ CO1-CO3 เป็น OUTPUT
}
void loop()
{
reading = analogRead(tempPin);
tempC = reading / 9.31;
Serial.println(tempC); //แสดงmonitor ในโปรแกรม
delay(10);
lightDigit3(numbers[digit3]); //เรียกใช้ฟังก์ชัน lightDigit3 ที่อยู่ด้านล่าง
delay(5);
lightDigit2(numbers[digit2]); //เรียกใช้ฟังก์ชัน lightDigit2 ที่อยู่ด้านล่าง
delay(5);
lightDigit1(numbers[digit1]); //เรียกใช้ฟังก์ชัน lightDigit1 ที่อยู่ด้านล่าง
delay(5);
digit3 = tempC%10;
digit2 = (tempC%100)/10;
digit1 = (tempC%1000)/1000; //ได้ค่าLDRReading แล้วนำมาคำนวนเพื่อแสดงออก segment แต่ละตัว
}
void lightDigit1(byte number) { //แสดง segment ตัวที่3
digitalWrite(CO1, HIGH);
digitalWrite(CO2, HIGH);
digitalWrite(CO3,LOW);
Segments(number);
}
void lightDigit2(byte number) { //แสดง segment ตัวที่2
digitalWrite(CO1, HIGH);
digitalWrite(CO2, LOW);
digitalWrite(CO3, HIGH);
Segments(number);
}
void lightDigit3(byte number) { //แสดง segment ตัวที่1
digitalWrite(CO1, LOW);
digitalWrite(CO2, HIGH);
digitalWrite(CO3,HIGH);
Segments(number);
}
void Segments(byte number) {
for (int i = 0; i < 7; i++) {
int bit = bitRead(number, i);
digitalWrite(segs[i], bit);
}
}
-ได้เขียนโค้ดsensor LDR ออกsegment
ปัญหาที่เกิดขึ้น -คือค่าที่ได้ยังไม่ชัดเจนหรือแสดงออกได้ยังไม่คงที่เพราะแสงที่ออกจาก srgmentไปกระทบLDRด้วยทำให้ค่าไม่คงที่
โค้ดตัวอย่าง
int LDR_Pin = A4; //analog pin 0
int A = 6;
int B = 7;
int C = 8;
int D = 9;
int E = 10;
int F = 11;
int G = 12; //pin6 to pin12 is A-G
int CO1 = 5;
int CO2 = 4;
int CO3 = A2; //pin4 5 และ A2 คือให้ตัวแปล CO1-CO3
const int segs[7] = { A, B, C, D, E, F, G };
const byte numbers[10] = { 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101,0b1111101, 0b0000111, 0b1111111, 0b1101111 };
int digit1 = 0;
int digit2 = 0;
int digit3 = 0;
void setup() {
Serial.begin(9600); //อ่านค่า LDR
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(CO1, OUTPUT);
pinMode(CO2, OUTPUT);
pinMode(CO3, OUTPUT); //สั่ง A-G และ CO1-CO3 เป็น OUTPUT
}
void loop() {
int LDRReading = analogRead(LDR_Pin); //อ่านค่า LDR แล้วไปเก็บในLDRReading
lightDigit3(numbers[digit3]); //เรียกใช้ฟังก์ชัน lightDigit3 ที่อยู่ด้านล่าง
delay(5);
lightDigit2(numbers[digit2]); //เรียกใช้ฟังก์ชัน lightDigit2 ที่อยู่ด้านล่าง
delay(5);
lightDigit1(numbers[digit1]); //เรียกใช้ฟังก์ชัน lightDigit1 ที่อยู่ด้านล่าง
delay(5);
LDRReading=LDRReading/100;
digit3 = LDRReading%10;
digit2 = (LDRReading%100)/10;
digit1 = (LDRReading%1000)/100; //ได้ค่าLDRReading แล้วนำมาคำนวนเพื่อแสดงออก segment แต่ละตัว
}
void lightDigit1(byte number) { //แสดง segment ตัวที่3
digitalWrite(CO1, HIGH);
digitalWrite(CO2, HIGH);
digitalWrite(CO3,LOW);
Segments(number);
}
void lightDigit2(byte number) { //แสดง segment ตัวที่2
digitalWrite(CO1, HIGH);
digitalWrite(CO2, LOW);
digitalWrite(CO3, HIGH);
Segments(number);
}
void lightDigit3(byte number) { //แสดง segment ตัวที่1
digitalWrite(CO1, LOW);
digitalWrite(CO2, HIGH);
digitalWrite(CO3,HIGH);
Segments(number);
}
void Segments(byte number) {
for (int i = 0; i < 7; i++) {
int bit = bitRead(number, i);
digitalWrite(segs[i], bit);
}
}
http://www.eng.su.ac.th/ee/618240/variable.html
ชนิดของตัวแปรในภาษาซี พอดีผมไม่รู้ค่าตัวแปรเลยเปิดอ่าน
http://www.thaieasyelec.com/products/sensors/ph-d-o-orp/ph-sensor-kit-detail.html
pH Sensor ศึกษาและหาดูข้อมูล
รุ่น : pH Sensor Kit
pH Sensor Kit เป็นชุด Sensor ตรวจจับความเป็นกรดด่าง พร้อมโมดูล Controller ที่ทำหน้าที่ตรวจจับสัญญาณ Analog ที่วัดได้จาก Sensor แล้วประมวลผลส่งข้อมูลให้กับผู้ใช้งานทาง Serial Port (UART) ผู้ใช้เพียงส่งคำสั่งไปที่ โมดูล Controller เพื่อ Get Data ตามต้องการ
http://www.thaieasyelec.com/products/sensors/electrical-conductivity-kit-detail.html
Electrical Conductivity Kit Electrical Conductivity Kit คือ ชุด Sensor ในการตรวจวัดค่า Conductivity ในน้ำ ซึ่งจะทำให้เรารู้ส่วนประกอบของสสารที่วัดว่ามีปริมาณของแร่ธาตุต่าง ๆ จำนวนเท่าไหร่ โดย Sensor จะตรวจวัดค่าแล้วมีตัวประมวลผล ผู้ใช้งานสามารถเก็บค่าที่วัดได้ไปประมวลผล โดย Interface กับโมดูลผ่านทาง Serial Port (UART) เพียงส่งคำสั่งไปที่ โมดูล ก็จะได้ Data ตามต้องการ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น