Как объединить время в переменную
У меня есть проект Arduino Uno, который записывает посещаемость учащихся с помощью датчика отпечатков пальцев. Поэтому, когда датчик найдет совпадение, последовательный монитор будет распечатывать идентификатор студента и текущее время следующим образом:
DateTime now;
void setup()
{
...
}
void loop()
{
.....
//найдено совпадение
Serial.print("Found ID #");
Serial.println(finger.fingerID);
Serial.print("Time->");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
}
Пример результата:
Found ID#1
Time-> 18:11:54
Я хотел бы сохранить время в переменной и распечатать его вместо того, чтобы печатать часы, минуты и секунды отдельно. Как мне это сделать???
Я пытался сделать так, как показано ниже, но получаю сообщение об ошибке, я хотел бы сохранить его в виде строки. Как мне это сделать?
string time = now.hour() + ':' + now.minute() + ':' + now.second();
@Michael, 👍3
Обсуждение1 ответ
Лучший ответ:
Для этого вы хотите использовать snprintf
:
char timeString[9];
snprintf(timeString, 9, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
Serial.println(timeString);
Используя такую строку формата, вы принимаете во внимание временные интервалы < 10 (например, 7 минут и 23 секунды 03:00, что в противном случае было бы 3:7:23), дополнив время ведущими нулями там, где это необходимо.
Черт, ты был на три минуты быстрее с тем же раствором. Замена «9» на «sizeof timeString» может быть полезна, если он когда-нибудь захочет включить больше данных в свою отметку времени., @towe
Может быть - пока timeString находится в той же (или большей) области, а не указатель, переданный функции :), @Majenko
@Majenko Вы знакомы с python или firebase? Потому что я хотел бы отправить вывод в код Python, потому что сам код Python поймает вывод и отправит его в базу данных Firebase в реальном времени. Я ссылаюсь на этот [веб-сайт](https://muhd-lokman.weebly.com/projects), я сделал вывод следующим образом: Serial.println("{'SID':"+ String(finger.fingerID) +" ,'time':"+ String(timeString) +"}");
но я не знаю, как это поймать в моем питоне, @Michael
Я страстно ненавижу python и никогда не слышал о firebase., @Majenko
@ Маженко Все в порядке. Я делаю то же самое на сегодняшний день. Но я могу отображать дату так: «2018/11/». День не отображается, что случилось?, @Michael
Вы дали достаточно места в своей строке?, @Majenko
- Как использовать SPI на Arduino?
- Библиотека DHT.h не импортируется
- Светодиоды: разница между общим анодом и общим катодом
- Как повторить кусок кода
- Почему эта программа на C++ не может прочитать Serial.write() моего arduino?
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Отображение двоичных данных на светодиодах
- Корпус кнопки и переключателя
Будет эффективнее печатать по частям. Потому что он создает текст прямо в буфере вывода, вместо того, чтобы копировать его., @ratchet freak
Подсказка: если вы хотите выполнить некоторые вычисления или сохранить отметку времени, лучше выбрать тип данных
time_t
. Он определяется как секунды с полуночи 1 января 1970 года (время Unix). Подробнее см. https://github.com/PaulStoffregen/Time/blob/master/TimeLib.h#L21., @Mikael Patel