1.
ติดตั้ง Arduino
IDE ที่รองรับ ESP8266
· ดาว์โหลด และ ติดตั้ง Arduino IDE v1.6.9+
· ทำให้
Arduino IDE ของเรารู้จักกับบอร์ด ESP8266 เข้าเมนู File > Preferences จากนั้นใส่ข้อความว่า
http://arduino.esp8266.com/stable/package_esp8266com_index.json
ลงไปในช่อง Additional Board Manager URLs แล้วกดตกลง
· Install
lib โดยเข้าเมนู Tools > Boards Manager พิมพ์ในช่องค้นหาว่า esp8266
· จากนั้นกดเลือก
Install รอการติดตั้งสักครู่
2.
ติดตั้ง Lib
Anto และ สมัครสมาชิก Anto
· ดาวน์โหลด Lib Anto (Ver. 0.5.2) แล้วแตกไฟล์ที่ดาวน์โหลด เปลี่ยนชื่อโฟลเดอร์เป็น AntoIO
· วางโฟลเดอร์
AntoIO ไปไว้ที่ Documents > Arduino
> Libraries
· สมัครสมาชิกเป็นครอบครัว Anto กรอกข้อมูลให้ครบถ้วนแล้วกดยืนยันการสมัคร
· Login เข้าสู่ระบบ
อ่านค่าอุณภูมิและความชื้นให้ไปผลแสดงที่ MAX7129
โดนเราจะอ่านค่าอุณภูมิด้วย HDC1080 และให้แสดงค่าอุณหภูมิและความชื้นให้แสดงขึ้นไปที่ MAX7129 โดยสามารถทำได้ตามโค้ดนี้
#include <SPI.h>
#include "LedMatrix.h"
#include <Wire.h>
#include "ClosedCube_HDC1080.h"
#define NUMBER_OF_DEVICES 1
#define CS_PIN D8
LedMatrix ledMatrix = LedMatrix(NUMBER_OF_DEVICES, CS_PIN);
ClosedCube_HDC1080 hdc1080;
void setup() {
pinMode(D3, INPUT_PULLUP);
Serial.begin(115200); // For debugging output
ledMatrix.init();
ledMatrix.setIntensity(15); // range is 0-15
ledMatrix.clear();
ledMatrix.commit(); // commit send buffer to the displays
Serial.begin(9600);
Serial.println("ClosedCube HDC1080 Arduino Test");
hdc1080.begin(0x40);
Serial.print("Manufacturer ID=0x");
Serial.println(hdc1080.readManufacturerId(), HEX); // 0x5449 ID of Texas Instruments
Serial.print("Device ID=0x");
Serial.println(hdc1080.readDeviceId(), HEX); // 0x1050 ID of the device
}
void loop() {
Serial.print("T=");
Serial.print(hdc1080.readTemperature());
Serial.print("C, RH=");
Serial.print(hdc1080.readHumidity());
Serial.println("%");
float temp = hdc1080.readTemperature();
float hmnt = hdc1080.readHumidity();
int itemp = (int)(temp * 100) / 10;
int ihmnt = (int)(hmnt * 100) / 10;
ledMatrix.clear();
ledMatrix.commit(); // commit send buffer to the displays
Send2MAX7129(5, 12, 0);
Send2MAX7129(6, itemp % 10, 0); itemp = itemp / 10;
Send2MAX7129(7, itemp % 10, 1); itemp = itemp / 10;
Send2MAX7129(8, itemp % 10, 0); itemp = itemp / 10;
Send2MAX7129(1, 16, 0);
Send2MAX7129(2, ihmnt % 10, 0); ihmnt = ihmnt / 10;
Send2MAX7129(3, ihmnt % 10, 1); ihmnt = ihmnt / 10;
Send2MAX7129(4, ihmnt % 10, 0); ihmnt = ihmnt / 10;
delay(100);
}
//===================================================
// ##SegPosition >> 87654321 ##SegData >> tabcdefg
//===================================================
void Send2MAX7129(byte SegPosition, byte Value, bool dotDigit) {
const static byte charTable [] = {
B01111110, B00110000, B01101101, B01111001, //
B00110011, B01011011, B01011111, B01110000,
B01111111, B01111011, B01110111, B00011111,
B00001101, B00111101, B01001111, B01000111,
B00010111
};
Value = charTable[Value];
if (dotDigit == 1) Value |= 0x80;
digitalWrite(CS_PIN, LOW);
SPI.transfer (SegPosition);
SPI.transfer (Value);
digitalWrite (CS_PIN, HIGH);
}
//===================================================
// ##SegPosition >> 87654321 ##SegData >> tabcdefg
//===================================================
void SendData2MAX7129(byte SegPosition, byte SegData) {
digitalWrite(CS_PIN, LOW);
SPI.transfer (SegPosition);
SPI.transfer (SegData);
digitalWrite (CS_PIN, HIGH);
}
#include "LedMatrix.h"
#include <Wire.h>
#include "ClosedCube_HDC1080.h"
#define NUMBER_OF_DEVICES 1
#define CS_PIN D8
LedMatrix ledMatrix = LedMatrix(NUMBER_OF_DEVICES, CS_PIN);
ClosedCube_HDC1080 hdc1080;
void setup() {
pinMode(D3, INPUT_PULLUP);
Serial.begin(115200); // For debugging output
ledMatrix.init();
ledMatrix.setIntensity(15); // range is 0-15
ledMatrix.clear();
ledMatrix.commit(); // commit send buffer to the displays
Serial.begin(9600);
Serial.println("ClosedCube HDC1080 Arduino Test");
hdc1080.begin(0x40);
Serial.print("Manufacturer ID=0x");
Serial.println(hdc1080.readManufacturerId(), HEX); // 0x5449 ID of Texas Instruments
Serial.print("Device ID=0x");
Serial.println(hdc1080.readDeviceId(), HEX); // 0x1050 ID of the device
}
void loop() {
Serial.print("T=");
Serial.print(hdc1080.readTemperature());
Serial.print("C, RH=");
Serial.print(hdc1080.readHumidity());
Serial.println("%");
float temp = hdc1080.readTemperature();
float hmnt = hdc1080.readHumidity();
int itemp = (int)(temp * 100) / 10;
int ihmnt = (int)(hmnt * 100) / 10;
ledMatrix.clear();
ledMatrix.commit(); // commit send buffer to the displays
Send2MAX7129(5, 12, 0);
Send2MAX7129(6, itemp % 10, 0); itemp = itemp / 10;
Send2MAX7129(7, itemp % 10, 1); itemp = itemp / 10;
Send2MAX7129(8, itemp % 10, 0); itemp = itemp / 10;
Send2MAX7129(1, 16, 0);
Send2MAX7129(2, ihmnt % 10, 0); ihmnt = ihmnt / 10;
Send2MAX7129(3, ihmnt % 10, 1); ihmnt = ihmnt / 10;
Send2MAX7129(4, ihmnt % 10, 0); ihmnt = ihmnt / 10;
delay(100);
}
//===================================================
// ##SegPosition >> 87654321 ##SegData >> tabcdefg
//===================================================
void Send2MAX7129(byte SegPosition, byte Value, bool dotDigit) {
const static byte charTable [] = {
B01111110, B00110000, B01101101, B01111001, //
B00110011, B01011011, B01011111, B01110000,
B01111111, B01111011, B01110111, B00011111,
B00001101, B00111101, B01001111, B01000111,
B00010111
};
Value = charTable[Value];
if (dotDigit == 1) Value |= 0x80;
digitalWrite(CS_PIN, LOW);
SPI.transfer (SegPosition);
SPI.transfer (Value);
digitalWrite (CS_PIN, HIGH);
}
//===================================================
// ##SegPosition >> 87654321 ##SegData >> tabcdefg
//===================================================
void SendData2MAX7129(byte SegPosition, byte SegData) {
digitalWrite(CS_PIN, LOW);
SPI.transfer (SegPosition);
SPI.transfer (SegData);
digitalWrite (CS_PIN, HIGH);
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น