기본 라이브러리
AIM 기본 라이브러리는 아두이노 프로그램의 기본 구조를 이루는 라이브러리입니다. 여기서는 함수 프로토타입 위주로 안내합니다. 상세한 사용법은 따라하면서 배우는 사물인터넷의 제9장 기본 라이브러리 사용법에 나와 있습니다.
AimAlarm
디지털핀이나 아나로그핀에 경보가 발생할 때 처리합니다.
함수 프로토타입
// 디지털핀용 생성자 ( 예: PIR 센서) AimAlarm(uint8_t pinNo, int activeVal, int inputMode, float alarmDurationSec); // 아나로그핀용 생성자 ( 예: MQ-9 가스 센서) AimAlarm(uint8_t pinNo, int trigger, float alarmDurationSec); bool toOn(); bool toOff(); bool isOn(); bool isOff(); void on(); void off(); int status(); String status(const String& onStr,const String& offStr); void reset(); void start(); void stop(); bool toStart(); bool toStop(); bool isStart(); bool isStop(); void toggleStartStop(); int read(); void setTrigger(int trigger); int getTrigger(); void setDuration(float alarmDurationSec); float getDuration(); float getRemain(); void run(); void setSyncLight(int tORf); bool isSyncLight(); bool wasSyncLight(); void setReportAlarm(int tORf); bool isReportAlarm(); bool wasReportAlarm();
AimConfig ESP8266 ESP32
SPIFFS에 JSON형식으로 데이터를 보관하고 활용합니다.
함수 프로토타입
AimConfig(const String& fileName); // set : save to Json SPIFFS void setString(const String& key,const String& val); void setInt(const String& key,int val); void setFloat(const String& key,float val); // get : read from Json SPIFFS String getString(const String& key); int getInt(const String& key); float getFloat(const String& key); // sync : read from Json SPIFFS, if not found save to Json SPIFFS void syncString(const String& key,String& initVal); void syncString(const char* key,char* initVal,int initValLen); void syncInt(const String& key,int& initVal); void syncFloat(const String& key,float& initVal); void json(); // print JSON as pretty format void remove(const String& key); // remove JSON item void remove(const char* key); void erase(); // reset to empty JSON file // if key is exists or not bool containsKey(const String& key); // ifEmptySet : if empty save to Json SPIFFS void ifEmptySetString(const String& key,const String& val); void ifEmptySetInt(const String& key,int val); void ifEmptySetFloat(const String& key,float val); void begin(); int format(); int formatForce(); void jsonPretty(Stream* myStream); void jsonPretty(); void log(int level,const String& msg); void setLog(int logLevel);
AimInput
버튼과 같은 디지털 입력 핀을 테스트합니다.
함수 프로토타입
// constructor에는 void나 돌려 받을 변수형이 없다. // closeVal : 접점이 연결될 때의 핀 값 (LOW 또는 HIGH) // pinMode:INPUT_PULLUP 또는 INPUT AimInput(int pinNo, int closeVal, int pinMode); AimInput(int pinNo); AimInput(); void setPin(int pinNo, int closeVal, int pinMode); void setPin(int pinNo); // loop()의 첫 머리에 둔다. // ISR에 두면 안된다. int run(); // 접점이 연결될 때 참을 돌려준다. bool pressed(); // 접점이 떨어질 때 참을 돌려준다 // 두 함수가 같다 bool released(); bool shortPressed(); // 접점이 계속 떨어져 있을 때 참을 돌려준다. // 접점이 계속 떨어져 있으면 반복적으로 참을 돌려준다 bool onReleased(); // 접점이 계속 연결되어 있을 때 참을 돌려준다. // 접점이 계속 연결되어 있으면 반복적으로 참을 돌려준다 bool onPressed(); // 접점이 계속 떨어져 있을 때 한 번만 참을 돌려준다. bool onReleasedFirst(); // 접점이 계속 연결되어 있을 때 한 번만 참을 돌려준다. bool onPressedFirst(); // onLongPressed() 앞에는 반드시 onPressed() 참이 먼저 온다. // onLongPressed()는 반복적으로 참이 온다. // 일정 시간(LONG_DELAY_MIL) 이상 누르고 있을 때 // 참을 돌려준다. bool onLongPressed(); // onLongPressed() 앞에는 반드시 onPressed() 참이 먼저 온다. // 일정 시간(LONG_DELAY_MIL) 이상 누르고 있을 때 // 한번만 참을 돌려준다. // 두 함수가 같다. bool onLongPressedFirst(); bool longPressed(); // 일정 시간(LONG_DELAY_MIL) 이상 누르고 있다가 // 뗄 때 참을 돌려준다. bool longReleased(); // 클릭 수를 세다가 일정 시간(CNT_DELAY_MIL) 이후 // 새로운 클릭이 없으면 그 수를 알려준다. int count(); // 아래는 click()은 pressed(),released(), // longReleased()와 함께 쓰면 안된다. // click()은 그 메쏘드를 수반하기 때문이다. // 지정한 수만큼 클릭했을 때 참을 돌려준다. boolean click(int clickCnt); // 한 번 클릭했을 때 참을 돌려준다. boolean click(); //다음에 오는 released()를 무력화한다 void avoidReleased(); //클릭수,길게 누름 등의 기준 시간 설정 //기본값은 1500 void setLongDelayMil(unsigned long longDelayMil); int status(); //핀을 읽은 값 int read();
AimOutput
LED나 릴레이 등과 같은 디지털 출력 핀을 제어합니다.
함수 프로토타입
AimOutput(int pinNo,int onVal); AimOutput(int pinNo); // onVal = HIGH AimOutput(); void setPin(int pinNo,int onVal); void setPin(int pinNo); // onVal = HIGH // put in outputISR rather than loop() void run(); void on(); void off(); void toggle(); void on(unsigned long onMil); void off(unsigned long offMil); void set(unsigned long onMil,unsigned long offMil, int onOffCnt,int onOffcycle, unsigned long onOffCycleDelayMil); void set(unsigned long onMil,unsigned long offMil, int onOffCnt,int onOffcycle); void set(unsigned long onMil,unsigned long offMil, int onOffCnt); void set(unsigned long onMil,unsigned long offMil); void set(int onOffSatus); void set(const String& onOffSatus); void set(const char* onOffSatus); bool isOn(); // pinStatus: 1||-1 bool isOff(); // pinStatus: 0 bool isBlink(); // pinStatus: -1 int status(); // 1 (pinStatus: 1 || -1), 0 (pinStatus: 0) int toBool(const String& payload); // 1,0 int status3(); // pinStatus (0,1,-1) int val(); // actual pin value(0,1) String status(const String& onStr, const String& offStr); String status3(const String& onStr, const String& offStr,const String& blinkStr); void setEndOn(); // on after blink void setEndOff(); // off after blink
AimPass ESP8266 ESP32
눈에 보이는 ASCII 문자열을 암호화하거나 복호화합니다. 따라서 한글을 암호화하거나 복호화 할 수 없습니다. 최대 255 문자를 처리할 수 있습니다.
함수 프로토타입
AimPass(); void begin(); String encHW(const String& msg); String decHW(const String& msg);
AimSandglass
모래시계 처럼 지속시간을 관리합니다.
함수 프로토타입
AimSandglass(float durationSec); AimSandglass(); void on(); void on(float durationSec); void off(); void toggle(); void setDuration(float durationSec); void setDuration(); bool toOn(); bool toOff(); int status(); String status(const String& onStr,const String& offStr); bool isOn(); bool isOff(); float getDuration(); float getRemain();
AimSerial
시리얼을 통하여 key/value 쌍으로 정보를 전달하게 합니다.
함수 프로토타입
// &Serial can be omitted. // First argument can be &Serial1,&SoftSerial etc. AimSerial (); AimSerial (void(*callback)(const String& key,const String& val)); AimSerial (Stream* myStream,void(*callback)(const String& key,const String& val)); AimSerial (void(*callback)(String key,String val)); AimSerial (Stream* myStream,void(*callback)(String key,String val)); void begin(); void begin(void(*callback)(const String& key,const String& val)); void begin(Stream* myStream,void(*callback)(const String& key,const String& val)); void begin(void(*callback)(String key,String val)); void begin(Stream* myStream,void(*callback)(String key,String val)); // This must be in loop() void run(); void echoOn(); void echoOff(); int verifyBool(const String& payload); bool toBool(const String& payload);
AimTimer
주기적으로 실행할 루틴을 만듭니다.
함수 프로토타입
AimTimer(double intervalSec); AimTimer(); void set(double intervalSec); void reset(); void nowOn(); bool isOn(double intervalSec); bool isOn();