ํ์ฌ๋ Next Technologies์์ ๊ตญ๋ด ์์ฐํ๋ NEKST-M ๋ชจ๋ํฐ๋ง ํฌ์คํธ๋ฅผ ๊ตฌ์
ํ์ต๋๋ค. ํํ ์ฅ์น์ ์๋์ ์๊ฐํํ๊ธฐ ์ํด,
ํ์ฌ ๋ฐ ๋ณด์ ๊ฒฝ๋ณด, ์๋๊ธฐ์ ์ ์ ์กด์ฌ, ์ค๋ด ์จ๋, ๋น์ ์์. NEKST-M์ ํต์ฌ์ ATMEGA 1280์ด๋ฉฐ ์ด ์ฌ์ค์ ํน์ ์๊ตฌ์ ๋ง๋ ํคํธ๋ฅผ ์ง์ ๋ง๋ค ์ ์๋ค๋ ์ ์์ ๊ณ ๋ฌด์ ์
๋๋ค.
๊ฐ๋ฅํ ๊ฐ์ฅ ์งง์ ์๊ฐ๊ณผ ์ต์ํ์ ๋น์ฉ์ผ๋ก ํน์ ์๊ตฌ์ ๋ง๋ ์์ ์์จํ ์ง์ญ ํ๊ฒฌ ์์คํ
์ ๋ง๋๋ ๊ฒ์ด ์๋ฌด๋ก ์ค์ ๋์์ต๋๋ค. ๊ธฐ๋ณธ์ ๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ์
๋๋ค. ๊ฐ๋ฐ, ์ ์กฐ, ์ง์์ด ์ง์ ๋ง๋ญ๋๋ค.
์์คํ ์ ๋ฌด์ ์ฃผํ์ ์์ ์ฌ์ฉ์ ์ํ ์ ๋ฃฐ๋ฌ ๋คํธ์ํฌ, ์๋ฒ, ์ธํฐ๋ท ๋ฐ ๋ผ์ด์ผ์ค ์์คํ ์ ์์กดํ์ง ์๊ณ ์๋ํด์ผ ํ๋ฉฐ, ๋ชจ๋ํฐ๋ง ๋ฐ ์ ์ด ์์คํ ์๋์ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํด์๋ ์ ๋๋ฉฐ, ์ต๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฉํ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ค๋ซ๋์(6~9๊ฐ์) ๋ฐ๋ํฉ๋๋ค. ๋คํธ์ํฌ ๊ตฌ์ฑ์ ๋ฐฉ์ฌํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ ํ ์ง์ ์์ ์์ง๋ ํ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ผ๋ฐ ํต์ ์ฑ๋์ ํตํด ๋๋ ํ๋ ์นดํผ๋ก ์ ์ก๋ฉ๋๋ค.
์์คํ ์ ๋ค์์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
- ํํ ์ฅ์น์ ์๋ ๋ชจ๋ํฐ๋ง
- ๊ธฐ์ ์๋ํ
- ๋น์ ์ํฉ์ ๊ฒฐ๊ณผ๋ก๋ถํฐ ๋ณดํธ
- ๋น์ ์ ํธ
- ์๋ ์๊ฐ ๊ณ์ฐ
- ์๋น๋๋ ์ ๊ธฐ๋ ๊ณ์ฐ
- ์ฅ๋น ์จ๋ ์ ์ด
- ๋ณด์ ๋ฐ ํ์ฌ ๊ฒฝ๋ณด๊ธฐ
- ์ ๋ณด์ ์ฃผ๊ธฐ์ ์๊ฒฉ ๊ธฐ๋ก
- ์ ์ ์๋ ๋ฏธ๋ ์๊ตฌ ์ฌํญ
๊ทผ๋ฌด ์กฐ๊ฑด :
- ์ ์ฉ ๋ฒ์ 1 ํ๋ฐฉ ํฌ๋ก๋ฏธํฐ.
- ๊ฐ์ฒด ๊ฐ ์ง์ ์ ์ธ ๊ฐ์์ฑ
- +50 ~ -50C์ ์จ๋
- ์ต๋ ์ต๋ 100%
- ์๋ฌผํ์ ํ์ฑ ์นจ์ ๋ฌผ(๊ณฐํก์ด, ํฉ์ฐ์ผ ๊ฐ์ ๋ฐํ ๋ฆฌ์)
- GOST ISO 1-2-10816์ ๋ฐ๋ฅธ ํด๋์ค 1-97 ๊ธฐ๊ณ์ ์ง๋์ด ๋ ์ด์ ๋ฐ์ํ์ง ์์ต๋๋ค.
- ์ ์๊ธฐ ํ๊ฒฝ - KT 6053 ์ ์ด๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ๊ธฐ ๋ชจํฐ ์ ํ, RVS-DN ์ํํธ ์คํํธ ์ฅ๋น, SIEMENS MICROMASTER PID ์ ์ด ์ฅ๋น, ์ด๋ฌํ ์ฅ์น์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ฅธ ISM ๋ฐ GSM ๋ฒ์์ ๋ฐฉ์ฌ์ , ํ์ฅ ์๋ ์ํฌ ์ฉ์
- ๊ณผ๋ํ ๋คํธ์ํฌ ์ ์, ์ ์ ๊ณต๊ธ ์ฅ์น์ ๋จ๊ธฐ ์ค๋จ, ๋๋ขฐ ๊ณผ์ ์, 6-10kV ๋ฐฐ์ ๋คํธ์ํฌ์์ ๊ฐ๊ณต์ ์ด ๋์ด์ง ๋ ์์ ๋ถ๊ท ํ.
์ด๋ฌํ ์๊ฒฉํ ์๊ตฌ ์ฌํญ์๋ ๋ถ๊ตฌํ๊ณ ๋ฌธ์ ๋ฅผ ๋จ๊ณ๋ณ๋ก ํด๊ฒฐํ๋ฉด ๊ตฌํ์ด ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
๋ชจ๋ ๊ฒ์ ๊ณ ๋ คํ์ฌ "Arduino Nano 3.0" ๋ณด๋๊ฐ ๊ณํ์ "๋๋"๊ฐ ๋์์ต๋๋ค. Robotdyn ๋ณด๋์๋ ๋ค์ ์์
์ ํ์ํ 328V ์ ์ ์์ ๊ธฐ์ธ ATMEGA 3,3 ์ปจํธ๋กค๋ฌ๊ฐ ์์ต๋๋ค.
์ ๋ฅ 800mA ๋ฐ CH340G UART-USB๋ก ๋ณํ๊ธฐ.
์ฐ์ , ์์
์๊ฐ ์นด์ดํฐ๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ๋ง๋ค์์ต๋๋ค. ๋ฌด๋ณ์๊ธฐ ์ ์ ๊ณต๊ธ ํ๋ก๊ฐ ์๋ PIC์ ์กฐ๋ฆฝ๋ ์ด์ ์ ์ฌ์ฉ๋ ์ฐ์
์ฉ ๊ณ๋๊ธฐ๋ ์๋ ํ 5๋
์ด๋ด์ ์ ์ ์์ง๋ก ์ธํด ๊ณ ์ฅ๋ฌ์ต๋๋ค. ์ง์์ ๋ง๋ 1V ์ ์ ๊ณต๊ธ ์ฅ์น๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ๋ ๊ฒ๋ง ๊ทธ๋๋ก ์ ์ง๋์์ต๋๋ค. ์ค์น ์๋์ ์ฐ๊ฒฐ ๋ค์์ฑ์ ๋์ด๊ธฐ ์ํด ์ค์์นญ ์ฅ์น์ ๋จ์์์ ์ฅ์น ์ํ์ ๋ํ ์ ํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. 380V์ 220์ ์ ์ ๊ณต๊ธ ์ฅ์น๋ก 5516๋จ๊ณ ์ ์์ ์กด์ฌ๋ฅผ ๋ฑ๋กํฉ๋๋ค. ์ปจํธ๋กค๋ฌ์ ์กฐ์ ํ๊ธฐ ์ํด 817V ๊ถ์ ์ด ์๋ ์ค๊ฐ ๋ฆด๋ ์ด ๋๋ LED์ GL22 ํฌํ ๋ ์ง์คํฐ ๋๋ PC630 ์ตํ ์ปคํ๋ฌ๋ก ๊ตฌ์ฑ๋ ์ตํ ์ปคํ๋ฌ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ชจ๋ ์ต์
์ด ํ
์คํธ๋์์ต๋๋ค. LED๋ ์ ์ฐ ์ ํญ๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๋ฅผ ์ค์๋ก ํ
์คํธํ๋ ๋์ ์์ ์ ์ํด ์ง๋ ฌ๋ก ์ฐ๊ฒฐ๋ XNUMXV ์ ์์ฉ์ผ๋ก ์ค๊ณ๋ XNUMX๊ฐ์ SVVXNUMX ์ปคํจ์ํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฅ ์ ํ์ด ์๋ ์ ๋ฅ๋ ์ ์์ผ๋ก ์ ์์ด ๊ณต๊ธ๋ฉ๋๋ค.
ST7735S LCD ํ๋ฉด์ ์ฌ์ฉํ์ฌ ์๋ ์๊ฐ ํ๋
๊ฐ์ ์ฝ๊ณ , 01MHz ์ฃผํ์์์ E01-ML05DP2,4 ๋ชจ๋์ ์ฌ์ฉํ์ฌ ๋ผ๋์ค๋ฅผ ํตํด ์ค์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค. ์ด ์ฅ์น์๋ nRF24L01+ ์นฉ๊ณผ RFX2401C ์ก์ /์์ ์ฆํญ๊ธฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์ต๋ 100mW์ ์ถ๋ ฅ ์ ๋ ฅ. ์จ๋ผ์ธ ๊ณ์ฐ๊ธฐ์์ ์ํ๋ ๋ฒ์์ ๋ง๊ฒ ์ค๊ณ๋ ํฌ๋ฆฌ์ปฌ ์ํ
๋
๋นตํ
4์ฑ๋ ์นด์ดํฐ. ์ฐ์ ํต์ ํ์ ์ ํตํ ๊ฐ์ญ์ผ๋ก๋ถํฐ ๋ณดํธํ๊ธฐ ์ํด ์
๋ ฅ์ LC ํํฐ๊ฐ ์์ต๋๋ค. ์ ์ด ๊ฐ์ฒด์ ์ํ์ ๋ํ ๋ฐ์ดํฐ๋ ์ด๋น ํ ๋ฒ์ฉ ์ง์์ ์ผ๋ก ํ๋
๋์ด LCD์ ์ปฌ๋ฌ๋ก ํ์๋ฉ๋๋ค. ํ๋
๊ฐ์ 1์ด๋ง๋ค ์
๋ฐ์ดํธ๋์ด ๋นํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ์ ๊ธฐ๋ก๋ฉ๋๋ค. 36์ด๋ 36์๊ฐ์ 1/100์ด๋ฉฐ, ์ด๊ฒ์ด ๋ฐ์ดํฐ๊ฐ ํ์ํ ํ์์
๋๋ค. 12์ด๋ง๋ค ๊ฐ ์ ์ด ์ฅ์น์ ์๋ ์๊ฐ(์ด)์ ๋ํ ์ ๋ณด๊ฐ ์ ์ก๋ฉ๋๋ค. ์ ์กฐ์
์ฒด์ ๋ฐ๋ฅด๋ฉด EEPROM ๋ฉ๋ชจ๋ฆฌ์ ์ฐ๊ธฐ-์ญ์ ์ฃผ๊ธฐ ํ์๋ 100000ํ๋ก ์ ํ๋์ด ์์ต๋๋ค. ์ต์
์ ์ต์
์ ํ๋ ์ด์์ ์
์ด ์ง์์ ์ผ๋ก ์
๋ฐ์ดํธ๋๋ ๊ฒฝ์ฐ์
๋๋ค. ์ฒซ ๋ฒ์งธ ์นด์ดํฐ์ ๋ณผ๋ฅจ์ 1๋ฐ์ดํธ์ด๋ฉฐ ์ด๋ ๊ธด ํ์์ ์ซ์์ด๋ฉฐ 4๊ฐ์ ์นด์ดํฐ๋ก ์ด 4๋ฐ์ดํธ๊ฐ ํ๋์ ๋ ์ฝ๋๋ฅผ ์ฐจ์งํฉ๋๋ค. ์นฉ์ ๋ฉ๋ชจ๋ฆฌ ๊ธธ์ด๋ 16๋ฐ์ดํธ์ด๋ฉฐ, 1024๊ฐ ์นด์ดํฐ์ 64๊ฐ ํญ๋ชฉ ์ดํ ๊ธฐ๋ก์ด ๋ค์ ์์๋ฉ๋๋ค. EEPROM ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ EEPROM.put ๋ฉ์๋๋ ์ฐ์ง ์์ผ๋ฉฐ, ์
์ ๊ฐ๊ณผ ์ฐ์ฌ์ง๋ ์ ๋ณด๊ฐ ์ผ์นํ๋ฉด ์
์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ณด์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์๋ ์๊ฐ์ 4๋
์ด์์ด ๋ฉ๋๋ค. ๊ฐ๋ฅํ์ง๋ง ๋ณด์ฅ๋์ง ์๋ ์์
์๊ฐ์ ํจ์ฌ ๊ธธ์ด์ง ์ ์์ต๋๋ค.
ํ๋ก๋
Arduino IDE์ ํ๋ก๊ทธ๋จ//12๋ฐ์ดํธ(328%)
#ํฌํจํ๋ค // ํต์ฌ ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
#ํฌํจํ๋ค // ํ๋์จ์ด ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
#ํฌํจ
#ํฌํจํ๋ค
#ํฌํจ
#ํฌํจํ๋ค
#ํฌํจํ๋ค
RF24 ๋ฌด์ (9, 10); // RF24 ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์
์ ์ํ ๋ผ๋์ค ๊ฐ์ฒด,
// ๋ฐ ํ ๋ฒํธ nRF24L01+(CE, CSN)
#ํฌํจํ๋ค
DS3231 rtc(SDA, SCL);
์๊ฐ t;
//#TF_CS 10 ์ ์
#TF_CS 8 ์ ์
#define TFT_RST -1 // ์ด๋ฅผ Arduino ์ฌ์ค์ ์ ์ฐ๊ฒฐํ ์๋ ์์ต๋๋ค.
// ์ด ๊ฒฝ์ฐ #define ํ์ -1๋ก ์ค์ ํ์ธ์!
//#define TFT_DC 9 // DC=RS=A0 - ๋ช
๋ น ๋๋ ๋ฐ์ดํฐ ๋ ์ง์คํฐ ์ ํ์ ์ํ ์ง์ ์ต์
์
๋๋ค.
#TF_DC 3 ์ ์
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
// ์ต์
2: ์๋ฌด ํ์ด๋ ์ฌ์ฉํ๋ ์กฐ๊ธ ๋ ๋๋ฆฝ๋๋ค!
#define TFT_SCLK 13 // ์ํ๋ ํ์ผ๋ก ์ค์ ํ์ธ์!
#define TFT_MOSI 11 // ์ํ๋ ํ์ผ๋ก ์ค์ ํ์ธ์!
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#ํฌํจํ๋ค
๋ฐ์ดํธ ์ด๋ = 52;
๋ฐ์ดํธ ํ์ํ;
๋ถํธ ์๋ ๊ธด ํํ[4];// 4์ด ์นด์ดํฐ ๊ฐ์ด ์๋ ๋ฐฐ์ด
ํ๋กํธ m = 3600.0;
๋ถํธ ์๋ int ์ฃผ์ = 0;
int rc;// ์นด์ดํฐ์ฉ ๋ณ์
๋ถํธ ์๋ ๊ธด ์์ฝ = 0;
๋ถํธ ์๋ ๊ธด sumsec = 0;
๋ฐ์ดํธ i = 0;
๋ฐ์ดํธ k = 34;
๋ถํธ ์๋ int z = 0;
๋ฐ์ดํธ b = B00000001;
๋ฐ์ดํธ pumrcounter[4]; // ๊ฐ์ฒด ์ํ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฐฐ์ด(1 - ๊บผ์ง, 0 - ์ผ์ง).
int ์์ = 0; //
void setup () {
rtc.begin();
๋ผ๋์ค.์์(); // ์์
์์ nRF24L01+
radio.setChannel(120); // ๋ฐ์ดํฐ ์ฑ๋(0~127).
radio.setDataRate(RF24_250KBPS); // ๋ฐ์ดํฐ ์ ์ก ์๋(RF24_250KBPS, RF24_1MBPS, RF24_2MBPS).
radio.setPALevel(RF24_PA_MAX); // ์ก์ ๊ธฐ ์ ๋ ฅ(RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm,
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe(0xAABBCCDD11LL); // ๋ฐ์ดํฐ ์ ์ก์ ์ํ ์๋ณ์๋ก ํ์ดํ๋ฅผ ์ฝ๋๋ค.
// ์๊ฐ์ ์ค์ ํ๋ ค๋ฉด ํ์ํ ์ค์ ์ฃผ์์ ํด์ ํ์ธ์.
//rtc.setDOW(1); // ์์ผ
//rtc.setTime(21, 20, 0); // 24์๊ฐ ํ์์ ์๊ฐ์
๋๋ค.
//rtc.setDate(29, 10, 2018); // ๋ ์ง, 29๋
2018์ XNUMX์ผ
tft.initR(INITR_BLACKTAB); // ST7735S ์นฉ ์ด๊ธฐํ, ๋ธ๋ ํญ
// 1.44" TFT๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด ์ด๊ธฐํ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ญ์์ค(์ฃผ์ ํด์ ).
//tft.initR(INITR_144GREENTAB); // ST7735S ์นฉ, RED rcB ํญ ์ด๊ธฐํ
tft.setTextWrap(false); // ํ
์คํธ๊ฐ ์ค๋ฅธ์ชฝ ๊ฐ์ฅ์๋ฆฌ๋ฅผ ๋ฒ์ด๋๋๋ก ํ์ฉ
tft.setRotation( 2 ); // BLACK PCB ๋ฐ RED tft.setRotation(0)์ ๊ฒฝ์ฐ์ธ์ง ์ฌ๋ถ.
tft.fillScreen(ST7735_BLACK); // ํ๋ฉด ์ง์ฐ๊ธฐ
DDRD = DDRD | B00000000;
ํฌํธD = ํฌํธD | B11110000; // ์ํํธ์จ์ด ๊ฐํ๊ฐ ์๋ ์ค์
๋๋ค. ๋์ ์์ค -
// ์ ์ด๋ ๊ฐ์ฒด๊ฐ "์๋ํ์ง ์์", "4"์ด 1๊ฐ์ ๋ชจ๋ ์์ ํฌํธ D์ ๊ธฐ๋ก๋๊ณ ๊ณ์ฐ์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
for(rc = 0; rc < 4; rc++)
{
tft.setCursor ( 3, rc * 10 + Shift ); // ์ ์ด ๊ฐ์ฒด์ ์์น ๋ฒํธ ํ์
tft.print(rc + 1);
}
tft.setCursor(12, 0); // 3์ค์ ํ
์คํธ ์ถ๋ ฅ
tft.println("๊ฐ๋ฐ์ ๋ฐ ๋น๋"); // ์ฌ๋ํ๋ ์ฌ๋์๊ฒ ์์ ์ ์นญ์ฐฌํ๊ธฐ ์ํด
tft.setCursor(24, 10); // ์๋๋ฉด ์ฌ์
ํ ์ ์๊ถ
tft.print("๊ฐ๋ฐ์ MM");
tft.setCursor(28, 20);
tft.print("๋น๋-์ด DD");
//๋ฐ์ดํฐ ๋ณต๊ตฌ////////////////////////////////////////////// ///////////
for ( z = 0; z < 1023; z += 16 ) { // ์
๊ณ์ ๋ชจ๋ ์
์ ๋ฐ๋ณตํฉ๋๋ค.
//4๊ฐ์ ํํ ๋ณ์ ๋ฐฐ์ด(๊ฐ ์นด์ดํฐ๋น 4๋ฐ์ดํธ)์ ์๋๋ค.
// ๋ถํธ ์๋ ๊ธด ๋ณ์. 4๊ฐ์ ์นด์ดํฐ๊ฐ ์์ผ๋ฉฐ, 4๊ฐ ๋ชจ๋์ ํ๋์ ๋ ์ฝ๋๋ 16๋ฐ์ดํธ๋ฅผ ์ฐจ์งํฉ๋๋ค.
EEPROM.get(z, ํํ[0]); // ๋ฐ๋ผ์ for ๋ฃจํ๊ฐ ์์ผ๋ฉด ๋ณผ๋ฅจ์ด ์ค์ด๋ญ๋๋ค.
EEPROM.get(z+4, ํํ[1]);
EEPROM.get(z+8, ํํ[2]);
EEPROM.get(z+12, ํํ[3]);
// 4๊ฐ ์นด์ดํฐ์ ํฉ๊ณ์ ๋ํด ์๋ก์ด ๋ค์ ๊ฐ ํ ๋น
sumprim = (ํํ [0] + ํํ [1] + ํํ [2] + ํํ [3]);
// sumprim ๋ณ์์ ์๋ 4๊ฐ์ ์นด์ดํฐ ํฉ๊ณ์ ์ ๊ฐ์ ๋ณ์์ ์ด์ ๊ฐ๊ณผ ๋น๊ตํฉ๋๋ค.
// sumsec ๋ฐ ์ด์ ํฉ๊ณ๊ฐ ์ ํฉ๊ณ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด ์ ํฉ๊ณ๊ฐ ํ ๋น๋ฉ๋๋ค.
// ํฉ๊ณ์ด ๊ฐ.
if ( sumsec <= sumprim ) {
sumsec = ์์ฝ; //
//ํ์ฌ ๊ฐ z๋ ์ฃผ์ ๋ณ์์ ํ ๋น๋ฉ๋๋ค. z๋ 16๊ฐ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ 4๋ฐ์ดํธ ๋ธ๋ก์ ์์ ์ฃผ์์
๋๋ค.
// ๋์์ ๊ธฐ๋ก๋ ์นด์ดํฐ(ํฌํธ๋ฅผ ํด๋งํ ๋ ํฌํธ์ 8๋นํธ๊ฐ ๋ชจ๋ ๋์์ ๊ธฐ๋ก๋๋ฏ๋ก,
// ํฌํธ D์ ํ์ํ ์์ 4๋นํธ ํฌํจ).
์ฃผ์ = z;
}
}
// ๊ธฐ๋ก๋ 16๊ฐ์ ์นด์ดํฐ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ 4๋ฐ์ดํธ ๋ธ๋ก์ ์์ ์ฃผ์์ ์๋ eeprom ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ ํ ๋ฒ ์ก์ธ์คํฉ๋๋ค.
// ๋ง์ง๋ง, ์ฆ ์ ์ง๋ก ์ธํด ์ข
๋ฃํ๊ฑฐ๋ ์ฌ๋ถํ
ํ๊ธฐ ์ ์ ๊ฐ์
๋๋ค. ์ต์ ๋
น์
// ์นด์ดํฐ ๊ฐ์ 4๊ฐ ๋ณ์์ ๋ฐฐ์ด๋ก ๋ณํํฉ๋๋ค.
EEPROM.get(์ฃผ์, ํํ[0]);
EEPROM.get(์ฃผ์ + 4, ํํ[1]);
EEPROM.get(์ฃผ์ + 8, ํํ[2]);
EEPROM.get(์ฃผ์ + 12, ํํ[3]);
์ฃผ์ += 16; //๋ง์ง๋ง ๋ ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ฐ์ง ์๊ณ ๋ค์ ๋ธ๋ก์ ์ฐ๊ธฐ ์ํด ์ฃผ์๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
//๋ฐ์ดํฐ ๋ณต๊ตฌ ์ข ๋ฃ//////////////////////////////////////////////////////////////////////// //////////////////
attachmentInterrupt(0, ๊ฐ์, RISING); // D2 ํ, ์ธํฐ๋ฝํธ ํ์ฑํ, ๋งค์ด๋ง๋ค ๋ฐ์
// SQW ์ถ๋ ฅ์ RTC DS3231 ํ์ค
wdt_enable(WDTO_8S); // ์์น๋
ํ์ด๋จธ๋ฅผ ์์ํ๊ณ ์ ์ง ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ๋ถํ
ํฉ๋๋ค.
// ํ์ด๋จธ ์ฌ์ค์ ๋ช
๋ น wdt_reset(์ ์คํํ๊ณ ์ ์ ์๋ ์ค์ ์ฌ๋ถํ
์ ๋ฐฉ์งํด์ผ ํฉ๋๋ค. - 8์ด.
// ํ
์คํธ๋ฅผ ์ํด ๊ฐ์ 8์ด ๋ฏธ๋ง์ผ๋ก ์ค์ ํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด ๊ฒฝ์ฐ ํ์ด๋จธ๋ฅผ ์ฌ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
// ์ ํฌ, ๋งค์ด๋ง๋ค ๋ฐ์ํฉ๋๋ค.
}
๋ฌดํจ ๋ฃจํ () {
// ๋น ์ฌ์ดํด, ์ฌ๊ธฐ์๋ ์ ๊ธฐ ๋ชจํฐ์ ๊ฐ๋ฐฉ ์์ ์๋์ ์ ์ดํฉ๋๋ค.
}
๋ฌดํจ ๊ฐ์() {
tft.setTextColor(ST7735_WHITE); //๊ธ๊ผด ์์ ์ค์
t = rtc.getTime(); // ์ฝ๋ ์๊ฐ
tft.setCursor(5, 120); // ์ปค์ ์์น ์ค์
tft.fillRect(5, 120, 50, 7, ST7735_BLACK); // ์๊ฐ ์ถ๋ ฅ ์์ญ ํด๋ฆฌ์ด
tft.print(rtc.getTimeStr()); // ํด๋ญ ํ๋
๊ฐ ์ถ๋ ฅ
wdt_reset(); // ๋งค ์ฌ์ดํด, ์ฆ ๋ ๋ฒ์งธ ์์น๋ ์ ์ฌ์ค์ ํฉ๋๋ค.
for (rc = 0; rc < 4; rc ++) // ์
๋ ฅ ์ํ์ ์ ํฉ์ฑ์ ํ์ธํ๊ธฐ ์ํ ์ฌ์ดํด์ ์์
// ํฌํธ D ๋นํธ์ ์ด์ ์ฝ๊ธฐ ์ํ๋ก ๋นํธ๋ฅผ ํฌํธํฉ๋๋ค.
{
pinState = (PIND >> 4) & ( b << rc );
if (pumrcounter [rc] != pinState) { // ์ผ์นํ์ง ์์ผ๋ฉด
pumrcounter[rc] = pinState; // ํฌํธ ๋นํธ ์ํ ๋ณ์์ ์ ๊ฐ 1/0 ํ ๋น
}
// ์์ ์ ์ด ๊ฐ์ฒด์ ์ํ ํ์
// BLUE๋ ๊ธฐ์กด ํ๋ฉด(๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ?)์ ์์ ๊ฒฐํจ์ผ๋ก RGB์ BGR์ด ์์ฌ ์์ต๋๋ค.
if (pinState == ( b << rc )) {
tft.fillRect(15, ((rc * 10 + Shift)), 7, 7, ST7735_BLUE); // ๋ฎ์ ๋ ๋ฒจ ๊ณ์ฐ์ ๊ฒฝ์ฐ GREEN์ BLUE๋ก ๋ณ๊ฒฝํฉ๋๋ค.
} ๋ค๋ฅธ {
tft.fillRect(15, ((rc * 10 + Shift)), 7, 7, ST7735_GREEN); // ๋ฎ์ ๋ ๋ฒจ ๊ณ์ฐ์ ๊ฒฝ์ฐ BLUE๋ฅผ GREEN์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
ํํ [rc] += 1; // ์๋ ์๊ฐ ์นด์ดํฐ์ 1์ด๋ฅผ ์ถ๊ฐํฉ๋๋ค.
}
}
k++;
if (k == 36) {
k = 0;
tft.fillRect(30, Shift, 97, 40, ST7735_BLACK); // ์๋ ์๊ฐ ํ์ ์์ญ ์ง์ฐ๊ธฐ
tft.fillRect(60, 120, 73, 7, ST7735_BLACK); // ๋ฐ ๋ ์ง
tft.setCursor(60, 120); // ์ปค์ ์์น ์ค์
tft.print(rtc.getDateStr()); // LCD ํ๋ฉด์ ๋ ์ง๋ฅผ ํ์ํฉ๋๋ค.
for (rc = 0; rc < 4; rc ++) //์์
์๊ฐ์ ์ ์ฒด, XNUMX๋ถ์ XNUMX, XNUMX๋ถ์ XNUMX๋ก ์ถ๋ ฅํฉ๋๋ค.
{
tft.setCursor ( 30, rc * 10 + Shift ); // ํ๋ฉด์ด 10ํฝ์
์๋๋ก ์ด๋ํ๋ XNUMX๋ถ์ XNUMX์๊ฐ
tft.println(ํํ [rc] / m);
}
// EEPROM์ "์์" ์๋ ์๊ฐ ๊ฐ(์ด ๋จ์) ์ฐ๊ธฐ //////////////////////////////
for (rc = 0; rc < 4; rc++)
{
EEPROM.put(์ฃผ์, ํํ [rc]);
์ฃผ์ += sizeof(float); // ์ฐ๊ธฐ ์ฃผ์ ๋ณ์๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
}
}
// ์ ์กํด์ผ ํ๋ ๋ฐ์ดํธ ์๋ฅผ ๋ํ๋ด๋ ๋ฐ์ดํฐ์์ ๋ฌด์ ์ฑ๋์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ณด๋
๋๋ค.
if ((k == 6 ) || (k == 18 ) || (k == 30 )) {
๋ถํธ ์๋ ๊ธด ๋ฐ์ดํฐ;
radio.write(&start, sizeof(start));
for (i = 0; i < 4; i++) {
๋ฐ์ดํฐ = ํํ [i ];
radio.write( &data, sizeof( ๋ฐ์ดํฐ));
}
}
}
๋์ ๋ช ๊ฐ์ง ๋ฉ๋ชจ๊ฐ ์์ต๋๋ค. ์นด์ดํ ์ ์ ๋ ฅ์ ๋ฎ์ ๋ ผ๋ฆฌ์ ์์ค์์ ๋ฐ์ํฉ๋๋ค.
ํ์ ์ ํญ R2-R5๋ ํฌํ ๋ ์ง์คํฐ GL36 ์ต์ ์ ๊ฒฝ์ฐ 5516kOhm์ ๋๋ค. ํฌํ ํธ๋์ง์คํฐ ์ตํ ์ปคํ๋ฌ ๋ฐ ๋ฆด๋ ์ด์ ๊ฒฝ์ฐ 4,7-5,1kOhm์ผ๋ก ์ค์ ํฉ๋๋ค. Arduino Nano v3.0 ๋ถํธ๋ก๋๋ ๊ฐ์ ํ์ด๋จธ์ ์ฌ๋ฐ๋ฅธ ์๋์ ์ํด TL866A ํ๋ก๊ทธ๋๋จธ๋ฅผ ์ฌ์ฉํ๋ Arduino Uno๋ก ๋์ฒด๋์์ต๋๋ค. ํจ์ฆ๋ 4,3V ์ด์์ ์ ์์์ ์๋ํ๋๋ก ์์ ๋์์ต๋๋ค. ์ธ๋ถ ๋ฆฌ์ ํ๋ก R6 C3์ ์ฌ์ฉ๋์ง ์์์ต๋๋ค. ์ํ ํ๋ก๊ทธ๋จ์์ ์ก์ ๊ธฐ ์ฃผํ์๋ ๋น๋ฉดํ ๋ฒ์์ ํด๋นํ์ง ์์ผ๋ฉฐ 2,4MHz ๋ฒ์๋ ์ฃผํ์ 2400.0-2483.5MHz๋ก ์ ํ๋ฉ๋๋ค.
E01-ML01DP05 ์ก์ ๊ธฐ์ ๋ฒ์๋ 2400-2525MHz์
๋๋ค. ํ ์ฑ๋์ ๋์ญํญ์ 1MHz์
๋๋ค. ์๋๋ฅผ "RF24_2MBPS"๋ก ์ค์ ํ๋ฉด ์ง์ ๋ radio.setChannel(120) ์ฑ๋์ด ์ฌ์ฉ๋๊ณ ๋ค์ ์ฑ๋์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋์ญ์ 2MHz๊ฐ ๋ฉ๋๋ค.
์ถ์ฒ : habr.com