รหัสสินค้า | M2959 |
หมวดหมู่ | Tools/เครื่องมือ |
ราคา | 25.00 บาท |
น้ำหนัก | 10 กรัม |
ลงสินค้า | 12 ต.ค. 2562 |
อัพเดทล่าสุด | 12 ต.ค. 2562 |
#include#include#include#includeLiquidCrystal_I2C lcd(0x27,20,4);#define TEST_PROG 0#define BUZZER 2//------------------------------------#if TEST_PROG == 0#define LED_GREEN A3#define LED_RED A2#define RELAY_1A 3#else#define LED_GREEN A0#define LED_RED A1#define RELAY_1A A2#endif//------------------------------------//----- Hardware ---------------------// MAX6675// SO = MISO = D12 = 12// SCK = SCK = D13 = 13//------------------------------------#define CS_1_PIN 10#define CS_2_PIN 9#define CS_3_PIN 8MAX6675 tcouple_01(CS_1_PIN);MAX6675 tcouple_02(CS_2_PIN);MAX6675 tcouple_03(CS_3_PIN);unsigned long buzzer_time = 0;unsigned long period_t_buzzer = 500; // <---- delay time buzzerunsigned long buzzer_time2 = 0;//unsigned long delay_buzzer_on = 180000; // <---- 3 mintues//unsigned long delay_buzzer_on = 600000; // <---- 10 mintuesunsigned long delay_buzzer_on = 1800000; // <---- 30 mintues#define ON_HIGH 1#define ON_LOW 0#define OFF_LOW 0#define OFF_HIGH 1#define SER_PRN 200#define READ_EEPROM 1#define WRITE_EEPROM 0#define FLAG_ON 1#define FLAG_OFF 0#define PIN_OUTPUT_OFFSET 3//---------------------------------------#define BUZZER_ON 1#define BUZZER_OFF BUZZER_ON+1#define LED_RED_ON BUZZER_OFF+1#define LED_RED_OFF LED_RED_ON+1#define LED_GREEN_ON LED_RED_OFF+1#define LED_GREEN_OFF LED_GREEN_ON+1#define RELAY_1A_ON LED_GREEN_OFF+1#define RELAY_1A_OFF RELAY_1A_ON+1//---------------------------------------uint8_t flag_buzzer_delay = FLAG_OFF;uint8_t flag_buzzer_onoff = FLAG_OFF;uint8_t flag_buzzer_state = FLAG_OFF;uint8_t flag_reset_key = FLAG_OFF;uint8_t counter_s_prnSprint = SER_PRN;String command;float in_float;//------------------------------------------float DATA_C_MAX[] = { 200.00, 200.00, 200.00 };float DATA_C[] = { 0.00, 0.00, 0.00};float DATA_offset[] = { 0.00, 0.00, 0.00};//----------------------------------------------void alarm_out(byte xi);void Buzzer_onOff();void test_EEPROM();void LCD_show(byte line);void print_out(byte ch_X);void read_MAX6675();char *myStrings[] = {"CH1", "CH2", "CH3", "SHOW" };//-------------------------------------#define DATA_MAX_VALUE 1000.00#define DATA_MIN_VALUE 0.00#define KEYMAX 4#define CHANNEL_MAX 3#define KEY_MENU 0#define KEY_UP 1#define KEY_DOWN 2#define KEY_RST 3uint8_t key_BUZZER_delay = 0;unsigned long keypad_time = 0;unsigned long keypad_period = 300; //uint8_t keypad_14[]= { 6,7,4,5 };// variables will change:uint8_t buttonState = 0; // variable for reading the pushbutton stauint8_t menu_key = 0;uint8_t ch_updown = 0;int key4 = 0;void clear_LCD_line_10(uint8_t line){lcd.setCursor(0,line);//("1234567890");lcd.print(" ");}//--end--//----------------------------------void clear_LCD_line_10P(uint8_t line){lcd.setCursor(10,line);//("1234567890");lcd.print(" ");}//--end--//----------------------------------void show_setting_LCD_R(uint8_t line){clear_LCD_line_10P(line+1);lcd.setCursor(10,line+1);lcd.print('[');lcd.print(line+1); lcd.print("] ");lcd.print(DATA_C[line]);}//--end--//----------------------------------void show_setting_LCD(uint8_t line){clear_LCD_line_10(line+1);lcd.setCursor(0,line+1);//lcd.print("CH");lcd.print(line+1); lcd.print(": ");lcd.print(DATA_C_MAX[line]);}//--end--//----------------------------------void output_onOff(uint8_t inputA){switch(inputA){case BUZZER_ON: digitalWrite(BUZZER, ON_LOW); break;case BUZZER_OFF: digitalWrite(BUZZER, OFF_HIGH); break;#if TEST_PROG == 0case LED_RED_ON: digitalWrite(LED_RED, ON_LOW); break;case LED_RED_OFF: digitalWrite(LED_RED, OFF_HIGH); break;case LED_GREEN_ON: digitalWrite(LED_GREEN, ON_LOW); break;case LED_GREEN_OFF: digitalWrite(LED_GREEN, OFF_HIGH); break;case RELAY_1A_ON: digitalWrite(RELAY_1A, ON_HIGH); break; //<-------- ON RELAYcase RELAY_1A_OFF: digitalWrite(RELAY_1A, OFF_LOW); break; //<-------- OFF RELAY#elsecase LED_RED_ON: digitalWrite(LED_RED, ON_HIGH); break;case LED_RED_OFF: digitalWrite(LED_RED, OFF_LOW); break;case LED_GREEN_ON: digitalWrite(LED_GREEN, ON_HIGH); break;case LED_GREEN_OFF: digitalWrite(LED_GREEN, OFF_LOW); break;case RELAY_1A_ON: digitalWrite(RELAY_1A, ON_HIGH); break; //<-------- ON RELAYcase RELAY_1A_OFF: digitalWrite(RELAY_1A, OFF_LOW); break; //<-------- OFF RELAY#endif}}//--end--//----------------------------------void setup(void) {pinMode(BUZZER, OUTPUT);pinMode(RELAY_1A, OUTPUT);pinMode(LED_GREEN,OUTPUT);pinMode(LED_RED, OUTPUT);output_onOff(LED_RED_OFF );output_onOff(LED_GREEN_OFF );output_onOff(BUZZER_OFF );output_onOff(RELAY_1A_OFF );Serial.begin(57600);Serial.println("****MAX6675 thermocouple ******");Serial.println(delay_buzzer_on);Serial.println();float valuetest = EEPROM.readFloat(0x00);Serial.println(valuetest);if( valuetest != 1234.56) {Serial.println("---- ERROR EEPROM ---- ");EEPROM.writeFloat(0x00, 1234.56);Save_READ_EEPROM(WRITE_EEPROM);}Save_READ_EEPROM(READ_EEPROM);show_setting_S(); // Serial printlcd.begin();lcd.backlight();lcd.home (); // ไปที่ตัวอักษรที่ 0 แถวที่ 1lcd.setCursor(0,0); // ไปทตัวอักษรที่ 1 แถวที่ 1//("12345678901234567890");lcd.print("CH SET / CH Real ");for(uint8_t i = 0 ;i pinMode(keypad_14[i],INPUT_PULLUP);}keypad_time = millis();for(uint8_t i=0 ; i < CHANNEL_MAX; i++) {show_setting_LCD(i); show_setting_LCD_R(i);}output_onOff(RELAY_1A_ON ); //<-------- ON RELAYoutput_onOff(LED_GREEN_ON ); //<-------- ON LED GREEN}//--end--//----------------------------------void Save_READ_EEPROM(byte R_W){int sizeF,eeAddress = 0;byte i;sizeF = sizeof(float);eeAddress = sizeF;for(i= 0;i< CHANNEL_MAX;i++) {if(R_W == 0) { // write EEPROMEEPROM.writeFloat(eeAddress,DATA_C_MAX[i]);} else {DATA_C_MAX[i] = EEPROM.readFloat(eeAddress);}eeAddress += sizeF;}} //--end--//-------------------------------void show_setting_S(){Serial.println("-- Display setting all channel ---- ");for(byte i= 0;i< CHANNEL_MAX ;i++) {Serial.print("Temp. setting CH");Serial.print(i+1);Serial.print(" = ");Serial.println(DATA_C_MAX[i]);}Serial.println("--- delay 3 sec.---- ");delay(2000);}//--end--//-----------------------------------void save_and_read_EEPROM(){Save_READ_EEPROM(WRITE_EEPROM);Save_READ_EEPROM(READ_EEPROM);}//--end--//----------------------------------void clear_LCD_line(uint8_t line){lcd.setCursor(0,line);//("12345678901234567890");lcd.print(" ");}//--end--//----------------------------------// flags for display on/off control// #define LCD_DISPLAYON 0x04// #define LCD_DISPLAYOFF 0x00// #define LCD_CURSORON 0x02// #define LCD_CURSOROFF 0x00// #define LCD_BLINKON 0x01// #define LCD_BLINKOFF 0x00void LCD_blink_onz(uint8_t line) {lcd.setCursor(1,line+1); lcd.blink_on();}//--end--//----------------------------------void key_memu14(){menu_key++;Serial.print("KEY MENU = ");Serial.println(menu_key);if(menu_key > 0) {switch(menu_key) {case 1: ch_updown = 0 ; LCD_blink_onz(ch_updown); break;case 2: ch_updown = 1 ; LCD_blink_onz(ch_updown); break;case 3: ch_updown = 2 ; LCD_blink_onz(ch_updown); break;case 4: lcd.blink_off();lcd.setCursor(0,0);//("12345678901234567890");lcd.print("SAVE SETTING MAX6675");digitalWrite(BUZZER,OFF_HIGH);delay(2500);lcd.setCursor(0,0);lcd.print("CH SET / CH Real ");save_and_read_EEPROM();menu_key = 0; ch_updown = 0;break;default: lcd.blink_off(); menu_key = 0; ch_updown = 0;break;}}}//--end--//----------------------------------void updown_DATA_setting(uint8_t ch, uint8_t updown){if(updown == 1) {DATA_C_MAX[ch] += 1.00;if( DATA_C_MAX[ch] > DATA_MAX_VALUE) DATA_C_MAX[ch] = DATA_MAX_VALUE;}else {DATA_C_MAX[ch] -= 1.00;if( DATA_C_MAX[ch] < DATA_MIN_VALUE) DATA_C_MAX[ch] = DATA_MIN_VALUE;}Serial.print("DATA CH"); Serial.print(ch_updown+1);Serial.print(" = "); Serial.println(DATA_C_MAX[ch_updown]);show_setting_LCD(ch_updown);LCD_blink_onz(ch_updown);}//--end--//----------------------------------void key_up(){if(menu_key > 0) {updown_DATA_setting(ch_updown,1);}}//--end--//----------------------------------void key_down(){if(menu_key > 0) {updown_DATA_setting(ch_updown,0);} else {key_BUZZER_delay = HIGH;}}//--end--//----------------------------------void key_reset(){Serial.println("RESET");digitalWrite(BUZZER,OFF_HIGH);flag_buzzer_onoff = FLAG_OFF;output_onOff(RELAY_1A_ON); //<-------- ON RELAYoutput_onOff(LED_RED_OFF); //<-------- OFF LED REDoutput_onOff(LED_GREEN_ON); //<-------- ON LED GREENdelay(200);}//--end--//----------------------------------void read_keypad_14(){// read the state of the keypad value:for(uint8_t x=0; x < KEYMAX; x++){buttonState = digitalRead(keypad_14[x]);if( buttonState == LOW ){if( (millis() - keypad_time) >= keypad_period) {switch(x) {case KEY_MENU: key_memu14(); break;case KEY_UP: key_up(); break;case KEY_DOWN: key_down(); break;case KEY_RST: key_reset(); break;} // switch(x)keypad_time = millis();} //---if( (millis()} //--- if( buttonState ==} //--- for(uint8_t x=0;}//--end--//----------------------------------//-------- input output ------------------void alarm_out(uint8_t xi){switch(xi) {case 0: flag_buzzer_onoff |= 0x01; break;case 1: flag_buzzer_onoff |= 0x02; break;case 2: flag_buzzer_onoff |= 0x04; break;}output_onOff(LED_GREEN_OFF); //<-------- OFF LED GREENoutput_onOff(LED_RED_ON); //<-------- ON LED REDoutput_onOff(RELAY_1A_OFF);}//--end--//----------------------------------void Buzzer_onOff(){byte i,j;if( (millis() - buzzer_time)>= period_t_buzzer) {if(flag_buzzer_state == FLAG_OFF) {if(flag_buzzer_delay == FLAG_ON) {output_onOff(BUZZER_OFF);if( (millis() - buzzer_time2) > delay_buzzer_on) {flag_buzzer_delay = FLAG_OFF;}}else {output_onOff(BUZZER_ON); //<-------- ON BUZZERoutput_onOff(LED_RED_ON); //<-------- ON LED RED}flag_buzzer_state = FLAG_ON;} else {output_onOff(BUZZER_OFF); //<-------- OFF BUZZERoutput_onOff(LED_RED_OFF); //<-------- OFF LED REDflag_buzzer_state = FLAG_OFF;}buzzer_time = millis();}}//--end--//----------------------------------void print_out(byte ch_X) {show_setting_LCD_R(ch_X);if(menu_key>0) {LCD_blink_onz(ch_updown);}Serial.print("Temp. in CH");Serial.print(ch_X+1);Serial.print(" = ");Serial.println(DATA_C[ch_X]);}//--end--//-----------------------------------void read_MAX6675() {//#if TEST_PROG == 1// DATA_C[0] = 500.00;//#elseDATA_C[0] = tcouple_01.readTempC() + DATA_offset[0];//#endifDATA_C[1] = tcouple_02.readTempC() + DATA_offset[1];DATA_C[2] = tcouple_03.readTempC() + DATA_offset[2];}//--end--//----------------------------------void parseCommand(String com){String part1;String part2;part1 = com.substring(0, com.indexOf("=") );part2 = com.substring(com.indexOf("=") + 1 );for(byte i=0; i<3 ; i++) {if( part1.equalsIgnoreCase(myStrings[i]) ){in_float = part2.toFloat();Serial.print("--->CH"); Serial.print(i+1); Serial.print(" = ");Serial.println(in_float);DATA_C_MAX[i] = in_float;save_and_read_EEPROM();break;}}if( part1.equalsIgnoreCase(myStrings[3]) ){show_setting_S();}else{Serial.println("COMMAND NOT RECONGNIZED");}}//--end--//-----------------------------------void loop(void) {byte xi ;//--------- TEST -------------read_MAX6675();//----------------------------counter_s_prnSprint--;//Serial.println(counter_s_prnSprint);if(counter_s_prnSprint == 0) {for( byte xi = 0; xi < CHANNEL_MAX ;xi++ ) {if( DATA_C[xi] > DATA_C_MAX[xi]) {alarm_out(xi);}print_out(xi);}counter_s_prnSprint = SER_PRN;Serial.println();}//----------------------------------------read_keypad_14();if (flag_buzzer_onoff > 0) {if( key_BUZZER_delay == HIGH) {flag_buzzer_delay = FLAG_ON;buzzer_time2 = millis();key_BUZZER_delay = LOW;}Buzzer_onOff();} else {flag_buzzer_delay = FLAG_OFF;}//----------------------------------------if (Serial.available()) {char c = Serial.read();if( c == '\n') {parseCommand(command);command = "";}else {command += c;}}//----------------------------------------delay(10);}//--end--//----------------------------------
หน้าที่เข้าชม | 5,167,780 ครั้ง |
ผู้ชมทั้งหมด | 1,567,120 ครั้ง |
ร้านค้าอัพเดท | 7 ก.ย. 2568 |