Psst.. new poll here.
you@paste.org web/email now available. Want one? Go here.
Cannot use outlook/hotmail/live here to register as they blocking our mail servers. #microsoftdeez
Obey the Epel!
Paste
Pasted as ARM assembler by registered user vhson ( 5 years ago )
// COVID-19: AUTOMATIC ALCOHOL DISPENSER // MÁY RỬA TAY TỰ ĐỘNG - CHUNG TAY ĐẨY LÙI COVID // Code by: Chợ Sáng Tạo Team // Chức năng: Đóng trễ, ngắt trễ relay khi nhận tín hiệu điều khiển. // Đặc điểm: // - Cài đặt trước thờ gian đóng/ngắt trễ relay // - Cho phép sử dụng biến trở để điều chỉnh thời gian đóng trễ và/hoặc ngắt trễ // - Có tùy chọn để sử dụng được cho cả cảm biến trả về mức cao và mức thấp // - Có tùy chọn để sử dụng cho cả relay kích mức HIGH hoặc mức LOW //#define USE_POT_DELAY_ON //Bỏ dấu // nếu dùng biến trở để chỉnh thời gian đóng trễ //#define USE_POT_DELAY_OFF //Bỏ dấu // nếu dùng biến trở để chỉnh thời gian ngắt trễ #define DELAY_ON 800 // Thời gian đóng relay trễ #define DELAY_OFF 1000 // Thời gian ngắt relay trễ - 1000 = 1 giây #define DELAY_ON_RANGE 10000 //Dải thời gian chậm đóng relay (từ 0 đến 10 giây) #define DELAY_OFF_RANGE 60000 //Dải thời gian chậm ngắt relay (từ 0 đến 60 giây) #define SENSOR_PIN 2 //chân cảm biến #define RELAY_PIN 13 //Chân điều khiển relay #ifdef USE_POT_DELAY_ON #define DELAY_ON_POT_PIN A0 //Chân cho biến trở điều chỉnh thời gian đóng trễ #endif #ifdef USE_POT_DELAY_OFF #define DELAY_OFF_POT_PIN A1 //Chân cho biến trở điều chỉnh thời gian ngắt trễ #endif #define SENSOR_LOW_SIGNAL //Dùng cảm biến xuất tín hiệu mức thấp //#define SENSOR_HIGH_SIGNAL //Dùng cho cảm biến xuất tín hiệu mức cao //#define RELAY_LOW_TRIGGER //Dùng cho relay kích mức thấp (LOW) #define RELAY_HIGH_TRIGGER //Dùng cho relay kích mức cao (HIGH) uint32_t pre_millis, pre_millis_2; uint32_t delay_on = DELAY_ON; uint32_t delay_off = DELAY_OFF; bool relay_on; void setup() { // put your setup code here, to run once: pinMode(SENSOR_PIN, INPUT_PULLUP); pinMode(RELAY_PIN, OUTPUT); Serial.begin(9600); //init relay status #ifdef RELAY_LOW_TRIGGER digitalWrite(RELAY_PIN, HIGH); #elif defined(RELAY_HIGH_TRIGGER) digitalWrite(RELAY_PIN, LOW); #endif } void loop() { //read sensor value int sensor_value; #ifdef SENSOR_LOW_SIGNAL sensor_value = !digitalRead(SENSOR_PIN); #elif defined(SENSOR_HIGH_SIGNAL) sensor_value = digitalRead(SENSOR_PIN); #endif #ifdef USE_POT_DELAY_ON //read potentialmeter to define delay on time delay_on = map(analogRead(DELAY_ON_POT_PIN),0,1023,0,DELAY_ON_RANGE); #endif #ifdef USE_POT_DELAY_OFF //read potentialmeter to define delay on time delay_off = map(analogRead(DELAY_OFF_POT_PIN),0,1023,0,DELAY_OFF_RANGE); #endif // received sensor signal if (relay_on){ if (millis()-pre_millis_2 >= delay_off) { #ifdef RELAY_LOW_TRIGGER relay_on = false; digitalWrite(RELAY_PIN,HIGH); pre_millis = millis(); #elif defined(RELAY_HIGH_TRIGGER) relay_on = false; digitalWrite(RELAY_PIN,LOW); pre_millis = millis(); #endif } } else { if (sensor_value) { if (millis() - pre_millis >= delay_on) { #ifdef RELAY_LOW_TRIGGER digitalWrite(RELAY_PIN, LOW); relay_on = true; pre_millis_2 = millis(); #elif defined(RELAY_HIGH_TRIGGER) digitalWrite(RELAY_PIN, HIGH); relay_on = true; pre_millis_2 = millis(); #endif } } else { pre_millis = millis(); } } }
Revise this Paste
Parent: 104151
Children: 104153