ผู้เขียน หัวข้อ: งานครั้งที่ 22 เขียนโปรแกรมแสดงอุณหภูมิแสดงผลตัวเลขบน 7 segment MAX7219  (อ่าน 9044 ครั้ง)

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 706
    • ดูรายละเอียด
    • อีเมล์
เขียนโปรแกรมแสดงอุณหภูมิแสดงผลตัวเลขบน 7 segment MAX7219
ฟังก์ชั่นที่ใช้งาน
-delay() http://arduino.cc/en/Reference/Delay
-millis()http://arduino.cc/en/Reference/Millis
-analogRead() http://arduino.cc/en/Reference/AnalogRead
-map() http://arduino.cc/en/reference/map

ไลบารี่เพิ่มเติม
-LedControl.h (ไลบรารี่ตัวเดียวกันกับงานครั้งที่ 20 หากติดตั้งแล้วไม่ต้องทำซ้ำ)*ดูวิธีติดตั้งในงานครั้งที่ 20

ฟังก์ชั่นในไลบารี่ LedControl.h
-LedControl lc=LedControl(dataPin,clkPin,csPin,numDevices);
-lc.shutdown(addr,false);         // Enable display
-lc.setIntensity(addr,value);     // Set brightness level (0 is min, 15 is max)
-lc.clearDisplay(addr);             // Clear display register
-lc.setDigit(addr, digit, value, point_decimal)  //display number 0-9
-lc.setChar(addr, digit, character, false)          //display character etc. A,b,c,d,E,F,H,L,P,-,_
-lc.setRow(addr, digit,value)                          //display part of segment

รายละเอียดเพิ่มเติมของไลบารี่ http://playground.arduino.cc/Main/LedControl

โจทย์โปรแกรม
-แสดงค่าอุณภูมิ (องศาเซลเซียส) จากเซนเซอร์ NTC Thermistor โดยแสดงผลที่ 7 segment MAX7219 และ UART
-โปรแกรมรายละเอียดพิเศษรายกลุ่ม (แจ้งให้ทราบเมื่อถึงชั่วโมงเรียน)


วงจรที่ใช้ในการทดลองสำหรับผู้ที่ใช้บอร์ด Arduino


วงจรที่ใช้ในการทดลองสำหรับผู้ที่ใช้ไอซี ATmega328 (ที่มี Boot Loader Arduino)


บริเวณใช้งานบอร์ดทดลอง


โมดูลสำเร็จรูปเพิ่มเติม
 MAX7219 7 Segment

http://www.arduinoall.com (คลิก)

ตัวอย่างโปรแกรมแสดงอุณภูมิเบื้องต้น
โค๊ด: [Select]
#include <math.h>
double Thermistor(int RawADC)
{
  double Cal;
  Cal = log(10000.0/((1024.0/RawADC-1)));
  Cal = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Cal * Cal ))* Cal );
  Cal = Cal - 273.15;            // Convert Kelvin to Celcius
  return Cal;
}

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int Temp=Thermistor(analogRead(A3));
  Serial.println(Temp);
  delay(1000);
}
« แก้ไขครั้งสุดท้าย: มิถุนายน 27, 2017, 08:04:43 PM โดย admin »