move dirs
This commit is contained in:
27
code/Arduino/README.md
Normal file
27
code/Arduino/README.md
Normal file
@ -0,0 +1,27 @@
|
||||
# Arduino
|
||||
|
||||
## std
|
||||
|
||||
* [Пример, который возвращает дату и время компиляции скетча](compile_date_time.c)
|
||||
* [Размер типов перенных в байтах](variables_sizes.ino)
|
||||
* Пример работы с [EEPROM](eeprom.ino)
|
||||
|
||||
## Функции
|
||||
|
||||
* Функция, которая моргает встроенным светодиодом [`void init_blink(int times, int delay)`](init_blink.h)
|
||||
|
||||
## Память
|
||||
|
||||
| Тип | Чтение из программы | Запись из программы | Очистка при перезагрузке |
|
||||
|--------|---------------------|---------------------|--------------------------|
|
||||
| Flash | Да, PROGMEM | Можно, но сложно | Нет |
|
||||
| SRAM | Да | Да | Да |
|
||||
| EEPROM | Да | Да | Нет |
|
||||
|
||||
EEPROM представляет собой область памяти, состоящую из элементарных ячеек
|
||||
с размером в один байт (как SRAM). Объём EEPROM разный у разных моделей МК:
|
||||
|
||||
* ATmega328 (Arduino UNO, Nano, Pro Mini): `1 кБ`
|
||||
* ATmega2560 (Arduino Mega): `4 кБ`
|
||||
* ATtiny85 (Digispark): `512 Б`
|
||||
* ESP8266 / ESP32: `4096 Б`
|
11
code/Arduino/compile_date_time.c
Normal file
11
code/Arduino/compile_date_time.c
Normal file
@ -0,0 +1,11 @@
|
||||
/**
|
||||
* Пример, который возвращает дату и время компиляции скетча
|
||||
*/
|
||||
|
||||
void loop() {
|
||||
Serial.println("Built: " __DATE__ " | " __TIME__);
|
||||
/**
|
||||
* Output:
|
||||
* Built: Aug 16 2023 | 21:42:32
|
||||
*/
|
||||
}
|
21
code/Arduino/convert_DATE_to_YYYY-MM-DD.c
Normal file
21
code/Arduino/convert_DATE_to_YYYY-MM-DD.c
Normal file
@ -0,0 +1,21 @@
|
||||
// TODO: Добавить описание
|
||||
// TODO: Добавить в README.md
|
||||
|
||||
// Adapted from http://stackoverflow.com/questions/1765014/convert-string-from-date-into-a-time-t
|
||||
// Formats __DATE__ to YYYY-MM-DD format
|
||||
String ArduinoDateToDisplayDate(char const *time) {
|
||||
char s_month[5];
|
||||
int month, day, year;
|
||||
static const char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
|
||||
|
||||
sscanf(time, "%s %d %d", s_month, &day, &year);
|
||||
|
||||
month = (strstr(month_names, s_month)-month_names)/3;
|
||||
|
||||
String monthText = month < 10 ? "0" + String(month) : String(month);
|
||||
String dayText = day < 10 ? "0" + String(day) : String(day);
|
||||
|
||||
return String(year) + "-" + monthText + "-" + dayText;
|
||||
}
|
||||
|
||||
// https://gist.github.com/djohnson001/6df673a8d7f8ac04246a
|
27
code/Arduino/eeprom.ino
Normal file
27
code/Arduino/eeprom.ino
Normal file
@ -0,0 +1,27 @@
|
||||
#include <EEPROM.h>
|
||||
|
||||
/**
|
||||
* EEPROM.write(адрес, данные) – пишет данные (только byte!) по адресу
|
||||
* EEPROM.update(адрес, данные) – обновляет (та же запись, но лучше) байт данных,
|
||||
* находящийся по адресу. Не реализована для esp8266/32!
|
||||
* EEPROM.read(адрес) – читает и возвращает байт данных, находящийся по адресу
|
||||
* EEPROM.put(адрес, данные) – записывает (по факту – обновляет, update) данные любого типа
|
||||
* (типа переданной переменной) по адресу
|
||||
* EEPROM.get(адрес, данные) – читает данные по адресу
|
||||
* и сам записывает их в данные – указанную переменную
|
||||
* EEPROM[] – библиотека позволяет работать с EEPROM памятью
|
||||
* как с обычным массивом типа byte (uint8_t)
|
||||
*/
|
||||
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
|
||||
Serial.println(EEPROM.read(10)); // выведет 255
|
||||
Serial.println(EEPROM.get(10)); // выведет 255
|
||||
Serial.println(EEPROM[10]); // выведет 255
|
||||
}
|
||||
|
||||
void loop() {
|
||||
//
|
||||
}
|
15
code/Arduino/init_blink.h
Normal file
15
code/Arduino/init_blink.h
Normal file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
Author: Alexander Popov
|
||||
License: Unlicense
|
||||
|
||||
Функция, которая моргает встроенным светодиодом
|
||||
*/
|
||||
|
||||
void init_blink(int times, int delay) {
|
||||
for (int count = 0; count < times; count++) {
|
||||
digitalWrite(LED_BUILTIN, HIGH);
|
||||
delay(delay);
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
delay(delay);
|
||||
}
|
||||
}
|
19
code/Arduino/serial.ino
Normal file
19
code/Arduino/serial.ino
Normal file
@ -0,0 +1,19 @@
|
||||
// TODO: Доработать пример
|
||||
// TODO: Добавить в README.md
|
||||
|
||||
// будем искать слово hello
|
||||
char target[] = "hello";
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
|
||||
if (Serial.available() > 0) {
|
||||
if (Serial.find(target))
|
||||
Serial.println("found");
|
||||
// вывести found, если было послано hello
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
//
|
||||
}
|
73
code/Arduino/variables_sizes.ino
Normal file
73
code/Arduino/variables_sizes.ino
Normal file
@ -0,0 +1,73 @@
|
||||
/**
|
||||
* Скетч, который выводит в Serial размер типов переменных в байтах
|
||||
*/
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
|
||||
size_t size_variable;
|
||||
|
||||
int example_int;
|
||||
unsigned int example_uint;
|
||||
signed int example_sint;
|
||||
unsigned long example_ulint;
|
||||
float example_float;
|
||||
double example_double;
|
||||
char example_char;
|
||||
char * example_string;
|
||||
bool example_bool;
|
||||
|
||||
size_variable = sizeof(example_int);
|
||||
Serial.print("int bytes size: " );
|
||||
Serial.println(size_variable);
|
||||
|
||||
size_variable = sizeof(example_uint);
|
||||
Serial.print("unsigned int bytes size: " );
|
||||
Serial.println(size_variable);
|
||||
|
||||
size_variable = sizeof(example_sint);
|
||||
Serial.print("signed int bytes size: " );
|
||||
Serial.println(size_variable);
|
||||
|
||||
size_variable = sizeof(example_ulint);
|
||||
Serial.print("unsigned long bytes size: " );
|
||||
Serial.println(size_variable);
|
||||
|
||||
size_variable = sizeof(example_float);
|
||||
Serial.print("float bytes size: " );
|
||||
Serial.println(size_variable);
|
||||
|
||||
size_variable = sizeof(example_double);
|
||||
Serial.print("double bytes size: " );
|
||||
Serial.println(size_variable);
|
||||
|
||||
size_variable = sizeof(example_char);
|
||||
Serial.print("char bytes size: " );
|
||||
Serial.println(size_variable);
|
||||
|
||||
size_variable = sizeof(example_string);
|
||||
Serial.print("char * bytes size: " );
|
||||
Serial.println(size_variable);
|
||||
|
||||
size_variable = sizeof(example_bool);
|
||||
Serial.print("bool bytes size: " );
|
||||
Serial.println(size_variable);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Arduino Nano
|
||||
*
|
||||
* int bytes size: 2
|
||||
* unsigned int bytes size: 2
|
||||
* signed int bytes size: 2
|
||||
* unsigned long bytes size: 4
|
||||
* float bytes size: 4
|
||||
* double bytes size: 4
|
||||
* char bytes size: 1
|
||||
* char * bytes size: 2
|
||||
* bool bytes size: 1
|
||||
*/
|
Reference in New Issue
Block a user