วันพุธที่ 27 พฤษภาคม พ.ศ. 2558

วันที่8 ที่fibo

วันนี้ได้ไปเปิดหูเปิดตาที่จูนทาวร์ หรือ IT Mall ไปวันนี้ได้เจอของที่ออกมาใหม่ก่อนจะไปถึงอุดรและมีของอีกหลายอย่าง ทั่งแล๊ปท๊อป หลายรุ่น และมีของที่อยากได้ตั้งหลายอย่าง เช่น แล๊ปท๊อป PCที่อยากแต่งเอง และได้ออกมาศึกษาเส้นทางและเป็นการเรียนรู้การใช้ชีวิตที่กรุงเทพไปด้วยและอาจารย์ก็ได้สอนหลายๆอย่างในการอยู่การใช้ชีวิตในกรุงเทพ และที่ชอบคืออาจารย์มีของที่เป็นแบบทุกอย่างเป็นเทคโนโลยี แม้แต่ในรถก็ต้องทันสมัย ซึ่งเป็นแนวคิดของผมอยู่แล้วที่ต้องการจะมีของทันสมัยติดตัวและตามโลกทันทุกเหตุการณ์
-เขียนโค้ดวัดอุณหภูมิใช้ 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 ตามต้องการ


ไม่มีความคิดเห็น:

แสดงความคิดเห็น