Симулятор Arduino, Raspberry Pi Pico, ESP32, FastLED, MicroPython.
У меня на сайте и на канале есть блок уроков по программированию Arduino с использованием симулятора, который входит в состав TinkerCad: Circuits Arduino. В данном симуляторе небольшая элементная база, а из микроконтроллеров доступны Arduino UNO, Attiny85 и ещё несколько малоизвестных. А хочется создавать проекты на ESP32, без ожидания долгой компиляции. Также последнее время становится популярным программирование на MicroPython Raspberry Pi Pico и ESP32. Всё это и многое другое есть в онлайн симуляторе wokwi. Создавать и проверять проекты можно без регистрации и в последствии поделиться ссылкой на свой проект. Невероятно полезно, не правда ли!?
Как начать работать с онлайн симулятором Arduino, Raspberry Pi Pico, ESP32, FastLED, MicroPython?
Для того чтобы начать создавать свои проекты с использованием различных плат Arduino, Raspberry Pi Pico, ESP32, Attiny85 достаточно прейти на сайт wokwi.com и выбрать нужную плату для разработки.
Также можно производить разработку проектов на MicroPython с использованием следующих отладочных плат: Raspberry Pi Pico и ESP32.
Создаём первый проект в симуляторе wokwi.
Для того чтобы создать свой проект, необходимо выбрать отладочную плату. Для примера сделаю небольшой проект по управлению сервоприводом с помощью Arduino MEGA и потенциометра. Для этого нажимаем на отладочную плату на главной странице симулятора.
Откроется рабочая область. С левой стороны поля для написания кода и вкладка для редактирования внешнего вида проекта в формате json.
С левой стороны находится поле сборки электрической схемы, на которое размещена Arduino MEGA. Для того чтобы добавить нужные элементы, нажимаем на кнопку со знаком «Плюс». Откроется список с доступными элементами. Добавим на рабочее поле потенциометр и servo.
Теперь нужно соединить все элементы проводниками. Для этого нажимаем на пин отладочной платы и двигаем мышкой, после чего появится проводник.
Ведём его до места, где нужно будет повернуть проводник на 90 градусов и кликаем левой клавишей мыши. Проводник изогнётся, перемещаем мышь далее, при необходимости делаем нужное количество изгибов проводника и подсоединяем его к контакту servo. Для этого нужно довести проводник до нужного контакта и нажать левой клавишей мыши. По аналогии делаем подключение других контактов.
Как видим, проводники 5В автоматически создаются красного цвета, а проводники GND -чёрного. Все остальные зелёного.
Для того чтобы изменить цвет проводника или свойства элементов электрической схемы нужно перейти на вкладку «diagram.json». Для изменения цвета проводника меняем значение «green» на «blue».
Чтобы узнать дополнительные параметры элементов схемы, которые можно изменять, нажимаем на элемент. Над ним появится знак вопроса. Если нажать на него, откроется страница справки, где описаны свойства элемента и что можно изменить.
Для сервопривода можно изменить тип качалки и первоначальное положение.
У потенциометра в виде слайдера можно изменить его длину и начальное значение.
Затем пишем код для управления сервоприводом. Пример можно взять из моего урока, указав нужные pins подключения servo и потенциометра.
#include <Servo.h>
Servo myservo;
int potpin = 0;
int val;
void setup() {
myservo.attach(9);
}
void loop() {
val = analogRead(potpin);
val = map(val, 0, 1023, 0, 180);
myservo.write(val);
delay(15);
}
Для проверки проекта нажимаем на зелёную кнопку «Пуск».
После чего можно подвигать бегунок потенциометра. При изменении
положения потенциометра
изменяется положение качалки сервопривода.
Проект собран и проверен, сейчас им можно поделиться, нажав на кнопку «Share». Также можно сохранить проект на компьютер, нажав на кнопку «Download project ZIP».
Проект скачается на ваш ПК в архиве, который содержит скетч и файл настроек для симулятора «diagram.json».
В симуляторе wokwi много готовых примеров, которые рассмотрим далее.
Создание светодиодных эффектов с использованием библиотеки FastLED в симуляторе.
Нашел я симулятор wokwi при разработке проекта светодиодной гирлянды на ESP32. При создании проекта с большим количеством световых эффектов достаточно сложно проверить каждый. В первую очередь это связано с тем, что компиляция и загрузка кода в плату ESP32 может занимать 5-7 мин.
Поэтому симулятор просто незаменим для написания световых эффектов с использованием библиотеки FastLED.
Пример работы со светодиодными лентами.
В симуляторе есть несколько примеров использования библиотеки FastLED для создания световых эффектов с использованием светодиодных лент. Вот один из примеров.
В данном примере поочерёдно выводятся несколько световых режимов:
Радуга в движении;
Движущиеся цвета: синий, красный, черный;
Цветные сегменты;
Белые сегменты и пр.
В данном примере много разнообразных эффектов. Возможно, я добавлю некоторые в проект новогодней гирлянды.
Пример работы со светодиодной матрицей.
Кроме программирования адресных светодиодных лент, можно запрограммировать светодиодные матрицы, создавая различные красивые эффекты, например, эффект матрицы.
#include "FastLED.h"
// Matrix size
#define NUM_ROWS 16
#define NUM_COLS 16
// LEDs pin
#define DATA_PIN 3
// LED brightness
#define BRIGHTNESS 255
#define NUM_LEDS NUM_ROWS * NUM_COLS
// Define the array of leds
CRGB leds[NUM_LEDS];
byte rain[NUM_LEDS];
byte counter = 1;
int speed = 1;
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
raininit();
}
void loop() {
EVERY_N_MILLISECONDS(100) {
updaterain();
FastLED.show();
}
EVERY_N_MILLISECONDS(30) {
changepattern();
}
} //loop
void changepattern () {
int rand1 = random16 (NUM_LEDS);
int rand2 = random16 (NUM_LEDS);
if ((rain[rand1] == 1) && (rain[rand2] == 0) ) //simple get two random dot 1 and 0 and swap it,
{
rain[rand1] = 0; //this will not change total number of dots
rain[rand2] = 1;
}
} //changepattern
void raininit() { //init array of dots. run once
for (int i = 0; i < NUM_LEDS; i++) {
if (random8(20) == 0) {
rain[i] = 1; //random8(20) number of dots. decrease for more dots
}
else {
rain[i] = 0;
}
}
} //raininit
void updaterain() {
for (byte i = 0; i < NUM_COLS; i++) {
for (byte j = 0; j < NUM_ROWS; j++) {
byte layer = rain[XY(i, ((j + speed + random8(2) + NUM_ROWS) % NUM_ROWS))]; //fake scroll based on shift coordinate
// random8(2) add glitchy look
if (layer) {
leds[XY((NUM_COLS - 1) - i, (NUM_ROWS - 1) - j)] = CHSV(110, 255, BRIGHTNESS);
}
}
}
speed ++;
fadeToBlackBy(leds, NUM_LEDS, 40);
blurRows(leds, NUM_COLS, NUM_ROWS, 16); //if you want
} //updaterain
uint16_t XY (uint8_t x, uint8_t y) {
return (y * NUM_COLS + x);
}
Данный пример в симуляторе выглядит вот так.
Но делать эффекты не очень интересно. Куда интереснее сделать анимацию на светодиодной матрице. Давайте рассмотрим готовые примеры анимации:
Анимация персонажей из игр;
Шагающий рыцарь;
Вывод текста;
Движение разнообразных геометрических фигур и другие примеры, которые можно использовать в своих проектах.
Кроме этого, можно собрать матрицу из отдельных адресных светодиодов или купить светодиодную гирлянду и сделать анимацию на окне. Предварительно проверив в симуляторе, как это будет выглядеть.
По работе с адресными светодиодами есть много примеров. Возможно, в дальнейшем сделаю подборку эффектов.
Программирование Arduino в симуляторе wokwi.
Симулятором Arduino UNO, Attiny85 никого не удивить. В симуляторе wokwi можно запрограммировать проект с использованием отладочной платы Arduino MEGA, NANO, Raspberry Pi Pico. А также приятная новость: можно сделать проект в среде Arduino IDE с использованием отладочной платы ESP32, которая последнее время набирает популярность благодаря высокой производительности и относительно небольшой стоимости.
Данный симулятор позволяет собрать и протестировать достаточно интересные проекты в среде Arduino IDE без использования железа.
Симулятор проектов на MicroPython.
Симулятор MicroPython по умолчанию рассчитан на работу с Raspberry Pi Pico. Об этом говорит следующий факт: при нажатии на кнопку создания проекта на MicroPython открывается поле разработки с платой Raspberry Pi Pico.
Для создания проектов MicroPython с использованием ESP32 предусмотрена отдельная кнопка.
Как вы уже поняли, в симуляторе предустановлена библиотека для работы с адресными светодиодами FastLED. Кроме неё предустановлены следующие библиотеки: Adafruit_NeoPixel, Adafruit_SSD1306, DHT-sensor-library, LiquidCrystal_I2C, MD_Parola, RTClib, Servo, SevSeg, ssd1306, SSD1306Ascii и другие.
Полный список библиотек с примерами кода вы можете посмотреть вот на этой странице.
Подведём итоги.
Симулятор wokwi имеет большой набор отладочных плат и электроники, которые можно использовать при создании проектов. Но есть и минусы:
отсутствие русского языка интерфейса;
для изменения параметров элементов необходимо редактирование файла «diagram.json». Это не очень удобно.
Понравилась статья Симулятор Arduino, Raspberry Pi Pico, ESP32, FastLED, MicroPython? Не забудь поделиться с друзьями в соц. сетях.
Комментарии