static const char *weekday[] = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
uint8_t countNoInit __attribute__((section(".noinit")));
static void printTask(void *) {
System.ledToggle(0);
struct timeval t;
gettimeofday(&t, nullptr);
Serial.printf("[%lu.%06lu] Hi!\n", t.tv_sec, t.tv_usec);
Serial.printf("* Systick: 0x%08lx\n", System.getSystickCount());
Serial.printf("* Random number:%lu\n", random());
Serial.printf("* System voltage: %ld mV\n", System.getSupplyVoltage());
Serial.printf(
"* A0: %ld mV\n",
map(analogRead(3), 0, 0x0FFF, 0, 3600));
Serial.printf("* countNoInit:%lu\n", countNoInit++);
struct tm t2;
System.getDateTime(t2);
Serial.printf(
"* Now: %u-%u-%u %s %02u:%02u:%02u\n",
t2.tm_year + 1900,
t2.tm_mon + 1,
t2.tm_mday,
weekday[t2.tm_wday],
t2.tm_hour,
t2.tm_min,
t2.tm_sec
);
}
static void printTask2(void *) {
Serial.printf(
"[%lu usec] Hi! 5-seconds periodic task\n",
micros());
System.ledToggle(1);
}
System.ledToggle(0);
Serial.printf(
"[%lu usec] Keyboard input:",
micros());
Serial.print(c);
}
Serial.println();
}
static void eventButtonPressed(uint8_t n) {
System.ledToggle(n);
Serial.printf(
"[%lu usec] User button [%u] pressed\n",
micros(), n);
}
static void eventButton1Pressed() {
eventButtonPressed(0);
}
static void eventButton2Pressed() {
eventButtonPressed(1);
}
static void eventButton3Pressed() {
eventButtonPressed(2);
}
static void eventButton4Pressed() {
}
static void eventDateTimeAlarm() {
struct tm t;
System.getDateTime(t);
printf(
"* Alarm! Now: %u-%u-%u %s %02u:%02u:%02u\n",
t.tm_year + 1900,
t.tm_mon + 1,
t.tm_mday,
weekday[t.tm_wday],
t.tm_hour,
t.tm_min,
t.tm_sec
);
}
void setup() {
System.ledOn(0);
Serial.begin(115200);
Serial.printf("\n*** [nRF52-DK] Basic Functions ***\n");
Serial.onReceive(keyboard);
System.onButtonPressed(0, eventButton1Pressed);
System.onButtonPressed(1, eventButton2Pressed);
System.onButtonPressed(2, eventButton3Pressed);
System.onButtonPressed(3, eventButton4Pressed);
System.onDateTimeAlarm(eventDateTimeAlarm);
System.setTimeAlarm(0, 1);
}
시리얼 포트를 제어하기 위한 클래스
Definition SerialPort.hpp:76
virtual int read()
포트 내부 버퍼에 수신된 문자를 하다 꺼냅니다.
virtual int available()
포트 내부 수신버퍼에 수신된 문자의 갯수를 반환합니다.
Timer는 일정 시간 이후에 1회 실행될 작업, 매 일정 시간마다 실행될 작업 등을 위한 기능입니다.
Definition Timer.hpp:61
bool startPeriodic(uint32_t millis, bool interrupt=false)
작업함수를 매 millis 밀리초 주기로 반복하여 실행합니다.
void onFired(void(*func)(void *), void *args=nullptr)
타이머 만료시 실행시킬 작업함수를 지정합니다.
uint32_t micros()
보드 부팅 이후부터 현재까지의 경과 시간을 마이크로초 단위로 구합니다.
long map(long x, long in_min, long in_max, long out_min, long out_max)
수를 어떤 범위에서 다른 범위로 매핑시킵니다.
void reboot()
소프트웨어 리셋을 통하여 시스템을 재시작합니다.
bool pinMode(int8_t pin, enum ioDirection direction)
pin 을 direction 방향을 갖는 디지털 핀으로 동작하도록 설정합니다.
@ INPUT
Definition nola-common.h:382