Телефонуйте » (+38) 096 227 41 41

Повний варіант мови Wolfram доступний для Raspberry Pi і поставляється в комплекті з операційною системою Raspbian. Програми можна запустити з командного рядка RPi або у фоновому режимі, а також через інтерфейс блокнота на RPi. На RPi мова Wolfram підтримує прямий програмний доступ до стандартних портів RPi і пристроїв.

Mathematica є інструментом програмування для обчислень, які використовуються в науці, математиці, обчислювальній техніці та в інших  технічних галузях. Комерційний пакет обчислень вперше випущений в 1988 році, але його можете безкоштовно використовувати на RPi з ОС Raspbian.

Запуск Mathematica

Двічі клацніть значок Mathematica на робочому столі або відкрийте його з меню додатків, щоб запустити. Ви побачите заставку з червоним логотипом Mathematica під час завантаження програми:

Після завантаження побачите два вікна. Це інформаційне вікно Wolfram:

і блокнот Mathematica:

Програмування в Mathematica

Клацніть у вікні блокнота і введіть:

Print["Hello world"]

Натисніть Shift + Enter; буде запущена команда і виведено на екрані "Hello world", як:

Ви можете виконувати математичні обчислення, наприклад:

In[2]:= 2 + 2
Out[2]= 4

In[3]:= 16254 / 32
Out[3]= 8127 / 16

In[4]:= 1024 * 32
Out[4]= 32768

Редагування в блокноті

Ви можете повернутися раніше введений команду, натиснувши її або переміщуючи курсор редагування за допомогою клавіатури. Ви можете видалити, відредагувати або додати щось і натисніть Shift + Enter, щоб виконати нову команду на своєму місці.
Ви можете зберегти блокнот і повернутися до нього пізніше, відправити його другу, опублікувати в Інтернеті, або навіть передати його як домашнє завдання! Просто зайдіть в меню File > Save As у вікні блокнота.
Коли відкриваєте збережений блокнот, будуть показані всі попередні записи, зокрема всі входи і виходи. Ви можете виконати кожну клітину знову з Shift + Enter, або все відразу, вибравши з меню Evaluation > Evaluate Notebook.

Змінні

Ви можете зберегти результати обчислень в змінних:

radius = 5;
diameter = 2 * radius;
circumference = 2 * Pi * radius;
area = Pi * radius^2;

Зверніть увагу на крапку з комою в кінці кожного рядка, яка пригнічує вихідний друк.

Символічні значення

Зверніть увагу на використання вбудованого символу Pi, який містить символічне значення π. Це означає, що якщо ви передаєте його в рівняння, то зберігається посилання на істинне значення π, а не перетворюється на десяткове і не округляється:

In[19]:= Pi
Out[19]: π

In[20]:= tau = 2 * Pi
Out[20]: 2 π

Щоб отримати десяткове подання символічного значення, використайте функцію N:

In[5]:= N[Pi]
Out[5]: 3.14159

За замовчуванням кількість значущих цифр рівна 6, але можна задати більше, вказавши кількість через другий аргумент:

In[6]:= N[Pi, 10]
Out[6]: 3.141592654

Зверніть увагу, що це число цифр, а не знаків після коми; тому 3 входить в підрахунок, залишаючи 9 десяткових знаків після коми.

Списки

Можна зберігати колекції даних у списку:

nums = {1, 2, 3, 5, 8}
people = {"Alice", "Bob", "Charlotte", "David"}

Діапазон

Функція Range може бути використаний для отримання списку чисел:

Range[5] (*Числа від 1 до 5*)
Range[2, 5] (*Числа від 2 до 5*)
Range[2, 5, 2] (*Числа від 2 до 5 з кроком 2*)

Таблиці

Функція Table є способом отримання значення у списку з функцією:

Table[i ^ 2, {i, 10}] (*Квадрати чисел від 1 до 10*)
Table[i ^ 2, {i, 5, 10}] (*квадрати чисел від 5 до 10*)
Table[i ^ 2, {i, nums}] (*Квадрати чисел зі списку nums*)

Цикли

Ви можете запустити цикл кілька разів, або через більше пунктів у списку, з Do:

Do[Print["Hello"], {10}] (*Друк "Hello" 10 разів*)
Do[Print[i], {i, 5}] (*Друк чисел від 1 до 5*)
Do[Print[i], {i, 3, 5}] (*Друк чисел від 3 до 5*)
Do[Print[i], {i, 1, 5, 2}] (*Друк чисел від 1 до 5 з кроком 2*)
Do[Print[i ^ 2], {i, nums}] (*Друк квадратів чисел зі списку nums*)

Функція допомоги

Ви можете отримати допомогу по використанню функції, додавши знак питання (?) перед ім'ям функції і натиснувши Shift + Enter:

Функція пошуку

Ви можете також шукати для функцій, ввівши частину імені функції, яку шукаєте, і «зірочки». Просто почніть з (?) і додайте зірочку (*) наприкінці як шаблон:

In[15]:= ?Device*

Ви можете використовувати декілька символів підстановки:

In[16]:= ?*Close*

Коментарі

Як видно з попередніх прикладів, ви можете залишити в сценаріях коментарі (примітки, які ігноруються в програмі) за допомогою амперсантів ((&)) і зірочок (*):

Print["Hello"] (*Print "Hello" to the screen*)

Доступ до командного рядка Wolfram

Програми командного рядка

Ви також можете отримати доступ до мови Wolfram (/usr/bin/wolfram) з командного рядка, ввівши wolfram в терміналі, або двічі клацнувши значок Wolfram на робочому столі. Це дасть тільки текстове (без графіки) середовище програмування з інтерфейсом у стилі In[x] / Out[x], але без інтерактивної функціональності блокнота. Функції Mathematica будуть працювати очікувано як і раніше:

Ви знайдете інтерфейс командного рядка більш швидким при використанні через відсутність графічної обробки, необхідної для виконання блокноту, однак йому не вистачає інтерактивності графічного інтерфейсу і швидкого виводу.
Для виходу натисніть Ctrl + D.
Аналогічно, mathematica - інтерфейс блокнота для Mathematica (/usr/bin/mathematica)

Запуск скриптів з Wolfram

Ви можете написати програму, зберегти її як звичайний файл (зазвичай файл з розширенням .m або .wl) і виконати сценарій з командного рядка, додавши прапор -script.
Для запуску test.m:

wolfram -script test.m

Для виконання сценарію при запуску відредагуйте файл /etc/rc.local, в якому вкажіть команди.

Графіки

Ви можете побудувати цікаві речі, використовуючи Mathematica, наприклад, намалювати Бетмена:

Або побудувати echidnahedron за допомогою наступної команди:

Graphics3D[{Opacity[.5], Glow[Red], EdgeForm[White], PolyhedronData["Echidnahedron", "Faces", "Polygon"]}, Lighting -> None]

Підключення пристроїв та зовнішніх сервісів

Команди для підключених пристроїв:

DeviceRead  ▪ DeviceReadList  ▪ DeviceReadTimeSeries  ▪ DeviceReadBuffer  ▪ ...

DeviceWrite  ▪ DeviceExecute  ▪ BinaryRead

Стандартні пристрої:

"GPIO" - доступ на читання/запис для всіх виводів GPIO
"Serial" - читання/запис для вбудованих і зовнішніх послідовних з'єднань
"RaspiCam" ▪ "AudioOut"

Додаткові пристрої:

"UltimateGPS"  ▪ "PiWeather"  ▪ ...

Зовнішні сервіси:

SendMail - відправити електронний лист з RPi
SendMessage - відправити твіт або інше повідомлення

GPIO

Ви можете отримати доступ до виводів GPIO з Mathematica, використовуючи функції DeviceWrite і DeviceRead.
Щоб отримати доступ до виводу GPIO вам потрібно запуститися від root. Щоб зробити це, виконайте sudo wolfram з терміналу (це буде працювати з командного рядка середовища wolfram), або команду sudo mathematica &, щоб запустити блокнот Mathematica від root.
Наступна команда включає контакт 14 GPIO (з використанням нумерації BCM для контактів):

DeviceWrite["GPIO", 14 -> 1]

Наступна команда вимикає вивід 14:

DeviceWrite["GPIO", 14 -> 0]

Ви також можете прочитати статус вхідного пристрою GPIO (для перевірки, чи натиснута, наприклад,  кнопка) з DeviceRead, аналогічним чином:

button = DeviceRead["GPIO", 14]

Тепер змінна button повинна містити 0 для виключеного виводу або 1 для включеного.

Приклад використання мови Wolfram для керування світлодіодами наведений в статті.

Камера

Ви можете робити знімки з камери, використовуючи функцію DeviceRead. По-перше, підключити камеру, як це робили на попередні заняттях.
Для того, щоб отримати нерухоме зображення з камери, введіть наступну команду:

img = DeviceRead["RaspiCam"]

Потім, щоб зберегти зображення у вигляді файлу, використайте Export і вкажіть шлях та змінну, що містить збережене зображення:

Export["/home/pi/img.jpg", img]

(За матеріалами raspberrypi.org)

Попереднє заняття - Наступне заняття

Новини

  • SDR в IoT

    iotSDR пропонує платформу розробок для IoT-радіо та мережевих доменів. На платі два передавачі Microchip AT86RF215, для вводу-виводу модему на Xilinx ZYNQ SoC, приймач GNSS MAX2769 для GPS, Galileo, BieDou та Glonass. Плата сумісна з ПЗ GNURadio SDR. Дозволяє розробити протоколи фізичного рівня LoRa, SigFox, WightLess, Bluetooth, BLE, 802.15.4, ZigBee тощо для IoT, або шлюз IoT через TheThingsNetwork, LPWAN або Google Thread. Пам'ять EEPROM: 1x AT24MAC602 , flash-пам'ять: 1x QSPI 128 Мб, RAM: 256 MБ DDR3,слот для Micro SD карти, входи/виходи: 2x 8-бітних інтерфейси PL, інтерфейс 8-бітного PS, Gigabit Ethernet, USB 2.0 (USB3310), USB 2.0 (CP2104), 2x SMA RF-роз'єми для приймача діапазонів IoT, 2x SMA RF-роз'єми для приймача 2,4 ГГц , RF-роз'єм приймач GNSS, FPGA-роз'єм JTAG для програмування. Розміри плати: 76,2 мм x 101,6 мм.

     

    in Новини

Записатися на курс