move dirs

This commit is contained in:
2023-09-26 22:05:13 +03:00
parent 5414fa8538
commit 55d774e7d5
190 changed files with 0 additions and 0 deletions

27
code/Arduino/README.md Normal file
View 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 Б`

View File

@ -0,0 +1,11 @@
/**
* Пример, который возвращает дату и время компиляции скетча
*/
void loop() {
Serial.println("Built: " __DATE__ " | " __TIME__);
/**
* Output:
* Built: Aug 16 2023 | 21:42:32
*/
}

View 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
View 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
View 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
View 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() {
//
}

View 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
*/