Статьи » Разработки
Добавить статью

Бейсик на Arduino

2020-01-06 в 22:29 (последнее изменение 2021-04-19 в 22:34)

Вы первый раз в жизни видите Arduino IDE, но изучали в школе язык Бейсик? Значит, вы уже можете программировать Arduino. Как? Читайте далее.

Для проекта нам понадобится следующие компоненты:
1. OLED дисплей
2. Arduino UNO

На самом деле, Arduino IDE вам понадобится всё равно - чтобы заливать скетч с интерпретатором (разработчик - robinhedwards) в каждую приобретаемую вами плату. После этого вы сможете программировать её на Бейсике, пользуясь клавиатурой и дисплеем, подключёнными прямо к ней. Конечно, за такое удобство вам придётся заплатить производительностью и объёмом доступной памяти. Но это - пустяки по сравнению со светлыми воспоминаниями о первых уроках информатики. И, в отличие от школьного компьютера, здесь можно управлять "ногами" Arduino и подключённой к ним периферией. То есть, пользоваться микроконтроллером по прямому назначению.

Все необходимые для повторения конструкции файлы можно скачать по адресу https://github.com/robinhedwards/ArduinoBASIC

Arduino-совместимая плата подойдёт не любая, а только такая, у которой не менее 2 килобайт ОЗУ. Около половины этого объёма предоставляется программе пользователя, оставшаяся - интерпретатору для собственных нужд. Примерно столько же ОЗУ доступно пользователю в МК-85 (без буквы М), а также ZX81 - первом компьютере разработчика этой конструкции. Минимальный набор периферии состоит из клавиатуры и PMOLED-дисплея.

basic arduino

Клавиатура должна быть с интерфейсом PS/2, в продаже их немного. Но вы с лёгкостью найдёте такую клавиатуру в магазине радиодеталей или на "Авито", "Юле", и т.п. Кроме того, некоторые USB-клавиатуры поддерживают интерфейс PS/2 электрически, автоматически переключаясь при необходимости в соответствующий режим, тогда можно воспользоваться переходником. Схема подключения клавиатуры к Arduino - стандартная, взятая с https://playground.arduino.cc/Main/PS2Keyboard/

usb-ps2

Внимание, для подключения линии передачи данных автор выбрал не четвёртую, а восьмую "ногу" Arduino.

Дисплей нужен на микросхеме SSD1306. Способ его подключения описан прямо в комментарии в тексте скетча, продублирую его здесь:

OLED_DATA 9
OLED_CLK 10
OLED_DC 11
OLED_CS 12
OLED_RST 13

Во избежание взаимных помех общие провода клавиатуры и дисплея необходимо подключать разными проводниками.

Следующие периферийные устройства - необязательные. Пьезоизлучатель понадобится, если пользователю нужен вывод звука, в т.ч. при нажатии клавиш. Подключается он к выводу 5. А микросхема ПЗУ с последовательным интерфейсом типа 24LC256 или аналогичная позволит сохранять более одного файла. Подключается она так: SDA - аналоговый вывод 4, SCL - аналоговый вывод 5. В файле host.h следует указать наличие, адрес и объём внешнего ПЗУ:

Код
#define EXTERNAL_EEPROM 1
#define EXTERNAL_EEPROM_ADDR 0x50 // I2C address (7 bits)
#define EXTERNAL_EEPROM_SIZE 32768 // only <=32k tested (64k might work?)

Также необходимо однократно прогнать скетч с раскомментированной строкой // writeExtEEPROM(0,0); writeExtEEPROM(1,0); для инициализации микросхемы. Затем снова закомментировать эту строку и перезалить скетч. При смене ПЗУ операцию повторить.

О библиотеках. Та из них, которая отвечает за работу с клавиатурой - стандартная. Ту её версию, которой воспользовался автор, он выложил в архиве PS2Keyboard.zip. А вот библиотека для работы с дисплеем - нестандартная. Автор взял библиотеку фирмы Adafruit и сильно её упростил. Теперь она и ОЗУ требует меньше, и работает быстрее. Свою версию библиотеки автор выложил в архиве под названием SSD1306ASCII.zip.

Библиотека SSD1306ASCII - скачать
Библиотека PS2Keyboard - скачать

Реализованный в интерпретаторе диалект языка Бейсик в основном повторяет по синтаксису тот, что применён в компьютере ZX81. Поэтому поговорим о вновь добавленных операторах, позволяющих работать с периферийными устройствами.

Оператор PINMODE позволяет назначить выводу Arduino функцию выводного или вводного. После оператора идут два числа через запятую. Первое - номер вывода, второе - 0 для назначения функции входа или 1 для назначения функции выхода.

Оператор PIN позволяет вывести на вывод, которому назначена функция выхода, нуль или единицу. После оператора идут два числа через запятую: первый - номер вывода, второй - нуль или единица.

Операторы SAVE и LOAD без параметров позволяют сохранить программу во встроенное ПЗУ микроконтроллера или прочитать его оттуда. Знак + после оператора SAVE включает автозапуск программы после сброса.

С внешним ПЗУ работают те же операторы, но с указанием в кавычках имени файла, как в обычном Бейсике. Также доступен оператор DELETE, удаляющий файл, имя которого указано после него в кавычках. А оператор DIR без параметров выводит список файлов во внешнем ПЗУ. Как в DOS, только без поддержки папок.

Считывание состояний входов производится при помощи функций PINREAD и ANALOGRD. После названия функции необходимо в скобках указать номер "ноги". Следует иметь в виду, что это именно функции, и пользоваться ими следует соответствующим способом - например, так: PRINT PINREAD (номер) или LET переменная = ANALOGRD (номер).

Конечно, когда-нибудь придётся переучиваться на программирование Arduino обычным способом. Но на первых порах, если начинающий ардуинщик уже хорошо владеет Бейсиком, данный интерпретатор поможет ему хотя бы не бояться новой, неизвестной платформы, и понять, что он сможет с ней справиться. И потренироваться в управлении периферией, чего он раньше не делал.


Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте.
Так же у нас есть Telegram канал.
Вам понравился наш материал? Поделитесь с коллегами!

Просмотров: 5285. Оценка статьи: 5.0 из 5. Уже оценило 2 читателя

Об авторе - tormozedison

More by tormozedison

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]