Перейти к основному содержимому

Arduino и micro:bit — примеры с разбором


Для кого эта статья

Готовые скетчи Arduino Uno (язык C++) и программы BBC micro:bit (MakeCode / JavaScript) с построчным разбором — в том же формате, что и популярная галерея Turtle на Python: скопировал код → прочитал, зачем каждая строка → запустил в Tinkercad или на плате.

Подойдёт, если вы:

  • школьник или студент на кружке робототехники, информатике, STEM;
  • самоучка, который гуглит «arduino светодиод код», «microbit сердце», «digitalRead кнопка»;
  • преподаватель — нужны разобранные эталоны для лабораторной;
  • уже смотрели теорию и хотите каталог рабочих примеров, а не обрывки из форумов.
Частый запрос в поискеРаздел ниже
arduino мигающий светодиод / blinkМигающий LED
arduino подключение кнопки digitalReadКнопка и LED
arduino плавная яркость pwm analogWriteШИМ
arduino потенциометр analogReadПотенциометр
arduino светофор кодСветофор
microbit сердце / смайлик кодСердце на micro:bit
microbit кнопка A BКнопки A и B
tinkercad arduino симуляторСимулятор

Где запускать:

ПлатформаСимуляция в браузереПрошивка на железо
Arduino UnoTinkercad Circuits → Текст (C++) → ▶ StartArduino IDE 2, кнопка Upload
micro:bitTinkercad (плата micro:bit) или makecode.microbit.orgUSB → Download → перетащить файл на диск MICROBIT
Сначала теория

Интерфейс Tinkercad, breadboard, Blockly и ограничения симулятора — Tinkercad Circuits и Arduino. Что такое микроконтроллер и прошивка — Встраиваемые системы. Визуальный код без проводов — Scratch, рисование на ПК — Turtle.


Оглавление

Arduino

  1. Что такое скетч и зачем setup / loop
  2. Обязательный шаблон
  3. Мигающий светодиод (Blink)
  4. Кнопка включает LED
  5. Плавная яркость (ШИМ)
  6. Потенциометр и Serial Monitor
  7. Светофор на трёх LED
  8. Бегущий огонь
  9. Звук tone и buzzer
  10. Переключение LED по нажатию

micro:bit

  1. Сердце на матрице
  2. Мигающий смайлик
  3. Кнопки A и B
  4. Наклон — стрелка
  5. Счётчик нажатий
  6. Температура и свет

Итог

  1. Arduino или micro:bit · Частые ошибки · Куда дальше

Интерактивный симулятор

Перед пайкой проводов можно нажать пины Arduino, открыть micro:bit, собрать схему на breadboard и запустить учебные проекты прямо на этой странице.

Загрузка Tinkercad Circuits…

Как пользоваться симулятором:

  1. Вкладка Arduino Uno — клик по пину 13 (там же встроенный LED «L» на реальной плате).
  2. Вкладка Проекты — выберите «Мигающий LED», нажмите , смотрите подсветку кода.
  3. В проекте «Кнопка → LED» зажмите кнопку мышью во время симуляции.

Что такое Arduino простыми словами

Arduino Uno — учебная плата с микроконтроллером. Вы пишете программу (скетч) на компьютере, загружаете по USB — и плата много раз подряд выполняет ваши команды: зажечь LED, прочитать кнопку, измерить напряжение с датчика.

Программа на Arduino всегда устроена так:

ФункцияСколько разСмысл
setup()1 раз при старте«Подготовка» — какие пины вход, какие выход, скорость Serial
loop()бесконечно«Рабочий день» — опрос кнопок, мигание, чтение датчиков

На micro:bit то же самое, только вместо setup/loop часто блоки «при старте» и «всегда» (basic.forever), а экран — матрица 5×5 LED на самой плате.

Словарь (если термины путаются)

ТерминПростыми словами
ПинМеталлический «ноготь» на краю платы; через него идёт сигнал 0 или 1 (цифра) или число 0…1023 (аналог)
GNDЗемля, минус, общий провод схемы
5VПлюс питания 5 вольт (для Uno)
HIGH / LOWЛогическая 1 (~5 В) и 0 (0 В)
СкетчФайл .ino с вашим кодом
ШИМ (PWM)Быстрое мигание; глаз видит яркость, а не мигание
Serial MonitorОкно в IDE/Tinkercad, куда программа печатает текст для отладки

Arduino — обязательный шаблон

Задача: понять каркас любого скетча. Без pinMode плата не знает, выводить сигнал на LED или читать кнопку.

void setup() {
// выполнится ОДИН раз после включения или Reset
}

void loop() {
// выполнится снова и снова — бесконечно
}

Разбор построчно

СтрокаСмысл
void setup()Объявление функции настройки. void = «ничего не возвращает наружу»
{ }Границы тела функции — всё между скобками выполняется при старте
void loop()Функция цикла. После последней строки loop управление снова прыгает на первую строку loop
Комментарии // …Для человека; компилятор их игнорирует

Arduino IDE сама подставляет служебный код (#include <Arduino.h>, main, который вызывает setup и loop). Вам писать main не нужно.

Минимальный рабочий скетч с отладкой

Задача: убедиться, что загрузка и Serial Monitor работают.

void setup() {
Serial.begin(9600); // скорость обмена с компьютером — 9600 бод
Serial.println("Плата включилась");
}

void loop() {
Serial.println("tick");
delay(1000); // раз в секунду новая строка
}

Разбор:

  • Serial.begin(9600)обязательно в setup перед любыми print, иначе монитор пустой или «кракозябры».
  • Serial.println("…") — отправить текст и перейти на новую строку.
  • delay(1000) — процессор 1000 мс ничего другого не делает (для учебных blink это нормально; в играх на кнопках позже учат обход без delay).

Попробуйте: в Tinkercad откройте Serial Monitor внизу — увидите tick каждую секунду.

Если не работает: в мониторе выберите скорость 9600, как в begin(9600).

Загрузка визуализатора Arduino…

Arduino — стартовые проекты

Ниже — проекты, с которых обычно начинают курс. Каждый можно собрать без паяльника в Tinkercad, потом повторить на реальной Arduino Uno и breadboard.


Задача: зажечь и погасить LED — «Hello, World» мира Arduino. Поймёте pinMode, digitalWrite, delay.

Схема (как подключать):

ЭлементКуда
Анод LED (длинная ножка, «+»)Через резистор 220 Ω → пин 13
Катод (короткая ножка)GND
На плате UnoЕсть встроенный LED на пине 13 (подпись L) — внешний диод можно не ставить для первого теста

Резистор ограничивает ток — без него LED может сгореть. Цвет полосок 220 Ω — красный-красный-коричневый (допуск ± золото).

void setup() {
pinMode(13, OUTPUT);
}

void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}

Разбор построчно

СтрокаЧто делаетЗачем так
void setup()Старт настройкиArduino вызывает один раз
pinMode(13, OUTPUT)Пин 13 — выходБез этой строки digitalWrite на 13 может не работать
void loop()Начало бесконечного цикла
digitalWrite(13, HIGH)На пине 13 ~5 ВТок идёт через LED → светится
delay(1000)Пауза 1 секунда (1000 мс)LED горит 1 с
digitalWrite(13, LOW)На пине 0 ВLED погас
delay(1000)Ещё 1 с паузаЦикл повторится — снова digitalWrite HIGH

Что вы видите

  • В симуляторе и на плате LED 1 с горит, 1 с нет.
  • Встроенный LED L на Uno мигает синхронно с кодом на пине 13.

Попробуйте:

  1. delay(1000)delay(200) — мигание в 5 раз быстрее.
  2. Поменяйте 13 на 9 (и в pinMode, и в digitalWrite) — подключите внешний LED к 9 через 220 Ω.

Если не мигает:

  • LED перевёрнут (катод и анод) — поменяйте ножки.
  • Нет pinMode(13, OUTPUT).
  • В Tinkercad не нажали ▶ Start Simulation.
Загрузка проекта "Мигающий LED"…

Кнопка включает светодиод

Задача: научиться читать цифровой вход (digitalRead) и ветвиться через if. Пока кнопку держат — LED горит.

Схема:

ЭлементСоединение
КнопкаОдин контакт → 5V, второй → пин 2
Резистор 10 кОмОт пина 2 к GND (подтяжка вниз — без нажатия на пине «0»)
LEDКак в Blink, пин 13

Пока кнопка не нажата, пин 2 через резистор на GND → LOW. Нажали — пин соединён с 5V → HIGH.

const int buttonPin = 2;
const int ledPin = 13;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}

void loop() {
if (digitalRead(buttonPin) == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}

Разбор построчно

СтрокаСмысл
const int buttonPin = 2;Имя для номера пина. Число 2 в коде больше не ищем — меняем в одном месте
const int ledPin = 13;То же для светодиода
constЗначение не меняется во время работы программы
pinMode(ledPin, OUTPUT)LED-пин — выход
pinMode(buttonPin, INPUT)Пин кнопки — вход (плата читает напряжение)
digitalRead(buttonPin)Возвращает HIGH или LOW прямо сейчас
if (… == HIGH)Если кнопка нажата — выполнить блок { … }
elseИначе — погасить LED

Как это работает по шагам (один проход loop)

  1. Arduino читает пин 2.
  2. Если там 5 В → зажигает 13.
  3. Если 0 В → гасит 13.
  4. Сразу снова с шага 1 — сотни раз в секунду, поэтому LED кажется «залипшим» в нужном состоянии.

Попробуйте: поменяйте HIGH и LOW в if, если кнопка подключена через INPUT_PULLUP (см. переключение по нажатию).

Если LED всегда горит или всегда погашен: перепутана подтяжка или контакты кнопки; проверьте провод на 5V и GND.

Загрузка проекта "Кнопка → LED"…

Плавная яркость (ШИМ, PWM)

Задача: не просто вкл/выкл, а плавное изменение яркости. Функция analogWrite и цикл for.

Схема: LED на пин 9 (на Uno у 9 есть ШИМ, на плате рядом с цифрой может быть знак ~). Через 220 Ω на GND.

const int ledPin = 9;

void setup() {
pinMode(ledPin, OUTPUT);
}

void loop() {
for (int brightness = 0; brightness <= 255; brightness += 5) {
analogWrite(ledPin, brightness);
delay(20);
}
for (int brightness = 255; brightness >= 0; brightness -= 5) {
analogWrite(ledPin, brightness);
delay(20);
}
}

Разбор построчно

СтрокаСмысл
const int ledPin = 9;Только пины 3, 5, 6, 9, 10, 11 поддерживают analogWrite на Uno
for (int brightness = 0; …)Цикл: переменная brightness от 0 до 255
brightness <= 255Условие продолжения цикла
brightness += 5Шаг 5 за итерацию (меньше шаг — плавнее, дольше цикл)
analogWrite(ledPin, brightness)«Яркость» 0…255. Внутри — очень быстрое мигание, глаз видит свет
delay(20)Задержка между шагами яркости — скорость «дыхания»
Второй forТо же вниз от 255 до 0

Зачем 0…255, а не 0…1023

analogWrite на Arduino Uno принимает 8 бит (256 уровней). analogRead с датчика даёт 0…1023 (10 бит) — это разные шкалы; в потенциометре их связывают через map.

Попробуйте: brightness += 1 вместо 5 — плавнее, но цикл дольше.

Если не плавно, а мигает: LED на пине без ШИМ (например 13) — перенесите на 9.

Загрузка проекта "Плавная яркость"…

Потенциометр управляет яркостью

Задача: аналоговый вход analogRead, пересчёт map, вывод в Serial Monitor — типичная лабораторная «ручка яркости».

Схема:

Вывод потенциометраКуда
Крайний5V
Средний (бегунок)A0
Другой крайнийGND
LEDПин 9 + 220 Ω на GND

Поворот ручки меняет напряжение на A0 от 0 до 5 В; АЦП превращает в число 0…1023.

const int sensorPin = A0;
const int ledPin = 9;

void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}

void loop() {
int sensorValue = analogRead(sensorPin);
int ledBrightness = map(sensorValue, 0, 1023, 0, 255);

analogWrite(ledPin, ledBrightness);

Serial.print("Датчик: ");
Serial.print(sensorValue);
Serial.print(" Яркость: ");
Serial.println(ledBrightness);

delay(100);
}

Разбор построчно

СтрокаСмысл
const int sensorPin = A0;Аналоговые пины A0–A5 — только чтение
Serial.begin(9600);Включить «разговор» с компьютером
analogRead(sensorPin)Число 0…1023 пропорционально напряжению на A0
map(sensorValue, 0, 1023, 0, 255)Линейно перевести диапазон датчика в диапазон для analogWrite
analogWrite(ledPin, ledBrightness)Яркость LED
Serial.print("Датчик: ")Текст без перевода строки
Serial.print(sensorValue)Число рядом с текстом
Serial.println(ledBrightness)Последнее число + новая строка
delay(100)Печать не чаще 10 раз в секунду — монитор читается глазами

Что видите в Serial Monitor

При вращении ручки в Tinkercad строки вроде:

Датчик: 512 Яркость: 128

Попробуйте: уберите delay(100) — строк станет очень много (для отладки иногда полезно, для отчёта — нет).

Если число не меняется: средний вывод потенциометра не на A0; нет общего GND с Arduino.

Загрузка проекта "Аналоговый датчик"…

Arduino — проекты посложнее

Когда базовые примеры работают, переходите к нескольким выходам, функциям и событиям по нажатию.


Светофор на трёх LED

Задача: три выхода, функция-помощник setLight, последовательность delay — модель «красный → жёлтый → зелёный».

Схема: три LED (или один RGB) на пины 8 (красный), 9 (жёлтый), 10 (зелёный), каждый через 220 Ω на GND.

const int redPin = 8;
const int yellowPin = 9;
const int greenPin = 10;

void setup() {
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
}

void setLight(int r, int y, int g) {
digitalWrite(redPin, r);
digitalWrite(yellowPin, y);
digitalWrite(greenPin, g);
}

void loop() {
setLight(HIGH, LOW, LOW);
delay(3000);
setLight(HIGH, HIGH, LOW);
delay(1000);
setLight(LOW, LOW, HIGH);
delay(3000);
setLight(HIGH, HIGH, LOW);
delay(1000);
}

Разбор построчно

СтрокаСмысл
Три const int …PinТри независимых выхода — удобно для отчёта и схемы
void setLight(int r, int y, int g)Своя функция: передаём HIGH/LOW для каждого цвета
digitalWrite(redPin, r)Параметр r подставляется вместо константы
setLight(HIGH, LOW, LOW)Только красный горит
delay(3000)Красный 3 секунды
setLight(HIGH, HIGH, LOW)Красный + жёлтый перед зелёным (упрощённая модель)
setLight(LOW, LOW, HIGH)Зелёный фаза

Попробуйте: сократите все 3000 до 500 — быстрый «мигающий светофор» для проверки проводки.


«Бегущий огонь» на пяти LED

Задача: массив пинов и вложенный for — типовой паттерн для гирлянд и индикаторов.

const int ledPins[] = {4, 5, 6, 7, 8};
const int ledCount = 5;

void setup() {
for (int i = 0; i < ledCount; i++) {
pinMode(ledPins[i], OUTPUT);
}
}

void loop() {
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], HIGH);
delay(150);
digitalWrite(ledPins[i], LOW);
}
}

Разбор построчно

СтрокаСмысл
int ledPins[] = {4, 5, 6, 7, 8};Массив — список пинов в одной переменной
ledCount = 5Длина массива (для цикла)
pinMode(ledPins[i], OUTPUT)i-й элемент массива — номер пина
digitalWrite(ledPins[i], HIGH)Зажечь только текущий LED
delay(150)Видимое «бегущее» пятно
digitalWrite(…, LOW)Погасить перед следующим i

Попробуйте: добавьте в конец loop второй цикл for с i от ledCount-1 до 0 — огонь побежит назад.


Звуковой сигнал (tone)

Задача: пьезо buzzer на пине 8, функции tone / noTone, константы частоты.

const int buzzerPin = 8;

#define NOTE_C4 262
#define NOTE_E4 330
#define NOTE_G4 392

void setup() {
pinMode(buzzerPin, OUTPUT);
}

void loop() {
tone(buzzerPin, NOTE_C4, 300);
delay(350);
tone(buzzerPin, NOTE_E4, 300);
delay(350);
tone(buzzerPin, NOTE_G4, 300);
delay(600);
noTone(buzzerPin);
delay(1000);
}

Разбор построчно

СтрокаСмысл
#define NOTE_C4 262Макрос: перед компиляцией NOTE_C4 заменится на 262 (частота в герцах)
tone(buzzerPin, NOTE_C4, 300)Звук на пине, 262 Гц, длительность 300 мс
delay(350)Чуть дольше ноты — пауза между нотами слышна
noTone(buzzerPin)Остановить генерацию — тишина до следующего loop

Важно: к пину не подключайте наушники — только buzzer или маленький динамик через транзистор.


Переключение LED по нажатию (один щелчок — одно переключение)

Задача: LED меняет состояние при каждом нажатии, а не горит, пока палец на кнопке. Используем INPUT_PULLUP и фронт сигнала.

Схема: кнопка между пином 2 и GND (без внешнего 10 кОм — подтяжка внутри платы).

const int buttonPin = 2;
const int ledPin = 13;

int ledState = LOW;

void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);
}

void loop() {
static int lastBtn = HIGH;
int btn = digitalRead(buttonPin);

if (lastBtn == HIGH && btn == LOW) {
ledState = !ledState;
digitalWrite(ledPin, ledState);
delay(50);
}

lastBtn = btn;
}

Разбор построчно

СтрокаСмысл
int ledState = LOW;Память «горит или нет» между нажатиями
INPUT_PULLUPВнутренний резистор тянет пин к HIGH; нажатие = LOW
digitalWrite(ledPin, ledState)Сразу выставить LED в начальное состояние
static int lastBtnЗначение сохраняется между вызовами loop
int btn = digitalRead(...)Текущее состояние кнопки
lastBtn == HIGH && btn == LOWФронт: было отпущено, стало нажато — один раз на щелчок
ledState = !ledStateИнверсия: 0→1, 1→0
delay(50)Гасит дребезг контактов (механическое дрожание при нажатии)
lastBtn = btnЗапомнить для следующего прохода

Попробуйте: уберите delay(50) — иногда LED переключается дважды на одно нажатие (дребезг).


micro:bit — стартовые программы

BBC micro:bit — плата с матрицей 5×5, кнопками A и B, акселерометром и Bluetooth. В школах часто программируют блоками в MakeCode; ниже — тот же смысл на JavaScript (вкладка «JavaScript» в редакторе).

Arduinomicro:bit
setup()Блоки «при запуске» / код вне forever
loop()basic.forever(function () { … })
digitalWrite на LEDbasic.showIcon, basic.showNumber
if (digitalRead)input.onButtonPressed(…)
Загрузка Tinkercad Circuits…

Сердце на матрице

Задача: один вызов — картинка на экране. Самый частый первый проект «microbit сердце».

basic.showIcon(IconNames.Heart)

Разбор построчно

ЧастьСмысл
basicБиблиотека «базовые действия» (экран, паузы)
showIconПоказать готовую иконку на матрице 5×5
IconNames.HeartИмя картинки из набора (сердце)

В MakeCode блоками: Основноепоказать иконкуHeart.

Программа выполняется один раз и останавливается (нет forever).

Попробуйте: IconNames.Happy, IconNames.Yes, IconNames.Asleep.


Мигание смайлика

Задача: бесконечный цикл с паузой — аналог loop + delay на Arduino.

basic.forever(function () {
basic.showIcon(IconNames.Happy)
basic.pause(500)
basic.clearScreen()
basic.pause(500)
})

Разбор построчно

СтрокаСмысл
basic.forever(function () {«Всегда» повторять функцию в фигурных скобках
showIcon(Happy)Смайлик на 5×5
basic.pause(500)Пауза 500 мс
clearScreen()Погасить все LED матрицы
Второй pause(500)Пауза с пустым экраном

В MakeCode: блок всегдапоказать иконкупаузаочистить экранпауза.

Попробуйте: pause(100) — быстрое мигание.


Кнопки A и B показывают букву

Задача: событийное программирование — код не крутит if в цикле, а реагирует на нажатие.

input.onButtonPressed(Button.A, function () {
basic.showString("A")
})

input.onButtonPressed(Button.B, function () {
basic.showString("B")
})

Разбор построчно

СтрокаСмысл
input.onButtonPressed«Когда нажали кнопку…»
Button.AВстроенная кнопка A слева на плате
function () { … }Что выполнить один раз при событии
showString("A")Прокрутить букву A по матрице (длинный текст идёт медленно)

В MakeCode: Вводпри нажатии кнопки Aпоказать строку.

Попробуйте: showNumber(1) вместо строки на кнопке A.


Наклон влево — стрелка

Задача: встроенный акселерометр — наклон платы как управление.

input.onGesture(Gesture.TiltLeft, function () {
basic.showArrow(ArrowDirections.West)
})

input.onGesture(Gesture.TiltRight, function () {
basic.showArrow(ArrowDirections.East)
})

Разбор построчно

СтрокаСмысл
onGestureРеакция на жест (наклон, встряхивание)
TiltLeftНаклон влево
showArrow(West)Стрелка влево на матрице
EastСтрелка вправо при наклоне вправо

В MakeCode: Вводпри жестенаклон влевопоказать стрелку.


Счётчик нажатий на кнопку A

Задача: переменная живёт между нажатиями — как ledState в Arduino.

let count = 0

input.onButtonPressed(Button.A, function () {
count += 1
basic.showNumber(count)
})

Разбор построчно

СтрокаСмысл
let count = 0Создать переменную, начальное значение 0
count += 1Увеличить на 1 (то же, что count = count + 1)
showNumber(count)Показать число на матрице

В MakeCode: переменная count, в обработчике A — изменить count на 1, показать число count.

Попробуйте: второй обработчик на B с count = 0 (сброс).


Температура и освещённость

Задача: встроенные датчики + вывод в Serial при подключении USB к ПК.

basic.forever(function () {
let t = input.temperature()
let light = input.lightLevel()
serial.writeLine("T=" + t + " L=" + light)
basic.pause(1000)
})

Разбор построчно

СтрокаСмысл
input.temperature()Температура платы в °C (грубо, не медицинский термометр)
input.lightLevel()Освещённость 0…255 (отверстие под LED на плате)
"T=" + tСклеить текст и число в одну строку
serial.writeLineОтправить строку на компьютер (как Serial.println)
pause(1000)Раз в секунду новая строка

Попробуйте: накройте плату ладонью — light уменьшится.

На компьютере: в MakeCode откройте View data / Serial при подключённом USB.


Arduino и micro:bit — что выбрать

Arduino UnoBBC micro:bit
ЯзыкC++ (setup / loop)Блоки MakeCode или JavaScript
ЭкранНужен внешний LED/LCDМатрица 5×5 на плате
ПроводаBreadboard, LED, резисторыЧасто хватает одной платы
КурсРобототехника, IoT, старшие классы5–8 класс, быстрый результат
Поиск в Google«arduino код светодиод»«microbit makecode сердце»

Обе платформы учат алгоритмам: условие, цикл, переменная, событие. Arduino ближе к реальной электронике; micro:bit — к наглядному экрану и кнопкам без пайки.


Частые ошибки (и что гуглить дальше)

СимптомПочему такЧто сделать
LED не горитАнод/катод перепутаны, нет резистора, не OUTPUTДлинная ножка → резистор → пин; pinMode(…, OUTPUT)
Мигает слишком быстро/медленноДругой delayЧисло в delay — это миллисекунды
Кнопка «дребезжит»Механика контактовdelay(50) после нажатия или фронт
analogWrite не плавноПин без ШИМПины ~ 3,5,6,9,10,11
Serial пустойНе открыт монитор / другой baudSerial.begin(9600) и 9600 в мониторе
micro:bit не копируетсяКабель только зарядкиUSB с данными; другой порт
Tinkercad «не стартует»Не нажали SimulateКнопка ; схема соединена с GND

Куда дальше

ТемаМатериал
Tinkercad, breadboard, BlocklyTinkercad Circuits и Arduino
MCU, прошивка, шиныВстраиваемые системы
Рисование на PythonTurtle — галерея
Блоки без железаScratch
HTTP и API (для старших)curl / fetch
Справочник ArduinoArduino Reference

См. также

Другие статьи этого же раздела в боковом меню (как на странице "О разделе").

Освоение главы0%