This repository was created in order to keep local data with code in the cloud.

Airplane Ino

Данный репозиторий был создан для совсместной комфортной работы над проектом. В данном файле(README.md) будет размещена основная полезная справочная информация по работе т.е. все информационные ресурсы будут размещены здесь. В остальных папках будет виден основной код, который разрабатывался для программирования платы.

Для начала поместим все основные ссылки:

Images

Раздел с основной иформацией о плате

Основные соответствия контактов на плате - Таблица. Соответствия контактов

Основная схема платы, расположение элементов платы - Схема. Схема платы

Контакты специального назначения на плате - Таблица. Контакты специально назначения

Расширители портов на плате - Схема. Расширители портов

Дополнительный раздел для удобства

Таблица истинности - Таблица. Таблица истинности

Strela

Отличия библиотеки <Strela.h> от стандартного Arduino

Самые главные отличия лежат в основе работы с портами, контактами и пинами соответственно. Платформа Strela имеет на борту контакты подключённые к Arduino-микроконтроллеру и контакты подключённые к I²C-расширителю портов ввода-вывода. На аппаратном уровне доступ к этим портам ввода-вывода очень сильно различается, но библиотека <Strela.h> позволяет облегчить данную задачу. Разница в управлении контактами Arduino и контактами I²C-расширителей портов отсутствует, если использовать функции uPinMode, uDigitalWrite и uDigitalRead. Конечно, можно использовать и привычные функции управления цифровыми контактами, но они будут работать только с Arduino-контактами. Также просмотрев репозиторих на GitHub и командные файлы увидел, что были добавлены новые функции, в работу с Arduino, такие как: drive, motorSpeed, motorConnection, stepperMotor. Подробнее о них напишу по ходу изучения и практики работы с ними.

  • drive -
  • motorSpeed -
  • motorConnection -
  • stepperMotor -

В остальном же все и так совместимо работает т.е. это основные и главный изменения, которые вносит разработанная библиотека, по крайней мере это все различия, которые я смог найти прочитав документацию к плате(см. в полезных ссылках) и просмотрев их репозиторий на GitHub.

<Wire.h> в жизни <Strela.h>

С пункта выше может созреть вопрос - "В чем же различия этих двух принципиальных библиотек?". Раставим все по полочкам.

  • <Wire.h>. Наиболее подходящая документация к использованию - ТЫК. Данная библиотека позволяет нам связывать микроконтроллеры с устройствами и модулями через интерфейс I2C т.е. ее задача находить эти самые расширители, а также находить устройства, подключенные через этот расширитель.
  • <Strela.h>. Данная же библиотека позволяет нам работать с устройствами, которые были найдены через данный интерфейс, задавать им различнные задания, программы и функции т.е. удобное функционнирование с устройствами.

Взаимодействие контактов и пинов

Взамодействие пинов, контактов между собой происходит при помощи основных команд, функций заложенных в Arduino и при помощи библиотеки <Strela.h>... PIP

Подключение библиотек

Подключение библиотек происходит следующим способом:

#include <Strela.h>
#include <Wire.h>

Arduino

Примеры программ

Здесь будут размещены интересные программы, которые помогут понять суть некоторых алгоритмов и их предназначения. Они как могут использоваться в исходном коде, так и не могут - зависит от сути команды. На первом этапе они помогут лучше познакомиться с Arduino и библиотеками. Некоторые программы я взял с репозитория на GitHub, некоторые же сделал сам. Примеры самих разработчиков с объяснениями - ТЫК

Алгорит №1. Считывает положение кнопки при нажатии и включает светодиод с тем же номером что и кнопка.

Разбор алгоритма. Мы входим в цикл for и в переменную i кладем значение кнопки S1, проходим через условие i <= S4. В buttonNumber кладем положение этой кнопки(их у нас всего 4), в переменную buttunState кладем состояние это кнопки т.е. нажата она или нет при помощи функции uDigitalRead(), а далее при помощи последеней функции(она довольна сложна в алгоритмическом понятии, разберем её в следующем блоке) первым аргументом проверяем положение этой кнопки, а вторым её аргументом - состояние - нажата или нет, если она нажата, то зажигаем светодиод с таким же положением.

#include <Wire.h>
#include <Strela.h>

void setup() {
}

void loop() {
  for (byte i = S1; i <= S4; ++i) { 
    byte buttonNumber = i - S1;
    bool buttonState = uDigitalRead(i);
    uDigitalWrite(L1 + buttonNumber, buttonState);
  }
}

Примечания. Под условными константами S1, S2, S3, S4, да и вообще под всеми условными константами скрываются какие-то целочисленные значения, которые заменили для удобного использования - подверждение моим словам - фрагмент кода с репозитория. Где это можно найти - ТЫК. Ещё раз посмотрим на код, сначала i = S1 т.е. 50; 50 <= 53; i = 50. Тогда byttenNumber = 50 - 50 = 0; buttonState проверят состояние этой кнопки при поиощи uDigitalRead(i) т.е. кнопку S1 = 50. И последнее, самое сложное uDigitalWrite. Для начала поймем, что в L1, L2, L3, L4 хранятся похожие значения что и в кнопках т.е. идущие подряд по натуральному порядку. Мы берем самый первый светодиод, а точнее его значение, будет отталкиваться от него, к L1 в нашем случае мы прибавляем 0 т.е. так и остается просто L1, без изменений. Второе - если кнопка S1 была нажата, то buttonState будет в состоянии "нажатом". Обобщим, uDigitalWrite(в нашем случае просто L1, к примеру - нажат) т.е. команда будет выполнена - светодиод L1 загориться. Такую же аналогию можно проводить и дальше по циклу с S2, S3 и т.д. её я расписывать не буду, потому что она такая же как и здесь, чуть изменена.

#define S1 50
#define S2 51
#define S3 52
#define S4 53

Мои правки и изменения. Во-первых, изменил тип переменой byte на другой. Во-вторых, значительно снизил густоту кода и увеличил его простоту и понятность. В-третьих, самое главное - убрал 2 ненужных переменных, которые в общей сложности занимают 2 байта памяти и 2 байта ОЗУ т.е. оптимизировал код, сделал его быстрее, очистил от мусора и ненужной хранящейся информации.

#include <Wire.h>
#include <Strela.h>


void setup() {

}

void loop() {
  for(uint8_t i = S1; i <= S4; i++) {
    uDigitalWrite(L1 + (i - S1), uDigitalRead(i));
  }
}

Под этим проектом размещен флажок - PIP(project in progress). В переводе с ангилийского значит - проет в работе т.е. данный репозиторий его файлы и документация могут меняться, добавляться, удаляться и пр. в зависимости от хода продвижения по проекту, нахождения новой информации и т.д.

License

See the LICENSE file.

Regards surpri6e.

Owner
surpri6e
I'm a very secret C++ and JS programmer. I am 14 y.o. and i love computer since, big data and hacking, he-he-he.
surpri6e
Similar Resources

Repository created to store a C function library to use in 42 School

Repository created to store a C function library to use in 42 School

Libft of 42. Make with ❤︎ for Luiz Cezario 📌 Index What's this Repo? List of Functions Technologies How to Run Find a Bug? Or somenthing need to chan

Aug 19, 2022

Modifies the hosts file in order to block sites hosting Kant's rat

In the Minecraft cheating community, it's not uncommon for clients or client cracks/leaks to be malware. The most famous example of this would be the Autumn client "crack", released by Kant. This application attempts to blacklist known hosts of Kant's malware, in order to prevent someone from accidentally getting themselves ratted.

Dec 13, 2022

A simple utility that cold patches dwm (uDWM.dll) in order to disable window rounded corners in Windows 11

Win11DisableRoundedCorners A simple utility that cold patches the Desktop Window Manager (uDWM.dll) in order to disable window rounded corners in Wind

Dec 27, 2022

DLL Hijack Search Order Enumeration BOF

DLL Hijack Search Order Enumeration BOF

DLL Hijack Search Order BOF What is this? This is a Cobalt Strike BOF file, meant to use two arguments (path to begin, and a DLL filename of interest)

Dec 13, 2022

A collection of DLLs that use search order hijacking to automatically inject specified DLLs.

🐨 Koaloader 📥 A collection of DLLs that use search order hijacking to automatically inject specified DLLs. 🚀 Usage Simply place one of the proxy dl

Jan 4, 2023

This code converts a point cloud obtained by a Velodyne VLP16 3D-Lidar sensor into a depth image mono16.

This code converts a point cloud obtained by a Velodyne VLP16 3D-Lidar sensor into a depth image mono16.

pc2image This code converts a point cloud obtained by a Velodyne VLP16 3D-Lidar sensor into a depth image mono16. Requisites ROS Kinetic or Melodic Ve

May 18, 2022

Jaws is an invisible programming language! Inject invisible code into other languages and files! Created for security research -- see blog post

Jaws is an invisible programming language! Inject invisible code into other languages and files! Created for security research -- see blog post

Jaws is an invisible interpreted programming language that was created for antivirus research. Since Jaws code is composed entirely of whitespace char

Dec 9, 2022

This is a tool for software engineers to view,record and analyse data(sensor data and module data) In the process of software development.

This is a tool for software engineers to view,record and analyse data(sensor data and module data) In the process of software development.

![Contributors][Huang Jianyu] Statement 由于工具源码在网上公开,除使用部分开源项目代码外,其余代码均来自我个人,工具本身不包含公司的知识产权,所有与公司有关的内容均从软件包中移除,软件发布遵循Apache协议,任何人均可下载进行修改使用,如使用过程中出现任何问

Dec 25, 2022
This Repository is created to help fellow coders learn open source contributions. This Repository is created for Hacktoberfest 2021

Hacktoberfest 2021 Follow the README below to get started! This Repository is created to help fellow coders learn open source contributions This Repos

Oct 24, 2022
Please feel free to use this code if you need to keep track of accelerometer and gyro data :)

IMUArduinoDataCollection Please feel free to use this code if you need to keep track of accelerometer and gyro data :) This code takes in xyz motion b

Nov 9, 2021
Example code for collecting weather data from an ESP32 and then uploading this data to InfluxDB in order to create a dashboard using Grafana.

InfluxGrafanaTutorial Example code for collecting weather data from an ESP32 and then uploading this data to InfluxDB in order to create a dashboard u

Dec 30, 2022
Cloud Native Data Plane (CNDP) is a collection of user space libraries to accelerate packet processing for cloud applications.

CNDP - Cloud Native Data Plane Overview Cloud Native Data Plane (CNDP) is a collection of userspace libraries for accelerating packet processing for c

Dec 28, 2022
This repository uses a ROS node to subscribe to camera (hikvision) and lidar (livox) data. After the node merges the data, it publishes the colored point cloud and displays it in rviz.
This repository uses a ROS node to subscribe to camera (hikvision) and lidar (livox) data. After the node merges the data, it publishes the colored point cloud and displays it in rviz.

fusion-lidar-camera-ROS 一、介绍 本仓库是一个ROS工作空间,其中ws_fusion_camera/src有一个工具包color_pc ws_fusion_camera │ README.md │ └───src │ └───package: c

Dec 7, 2022
Internet of things created using arduino IoT cloud, consisting of esp and arduino boards

Internet of things created using arduino IoT cloud, consisting of esp and arduino boards. Goal of the project is to create a 3D printed RFID protected (with PIN) lock, including surveillance.

Sep 1, 2022
Raise Genuine PRs only. Your PRs will be accepted, keep patience. Star This Repo. You aren't allowed to Update README.md

Welcome To Hacktoberfest 2021 Link To HacktoberFest 2021 Event details : Hacktoberfest® is open to everyone in our global community. Whether you’re a

Sep 16, 2022
Raise Genuine PRs only. Your PRs will be accepted, keep patience. Star This Repo. You aren't allowed to Update README.md

Hacktoberfest 2021 Link To HacktoberFest 2021 Event details : Hacktoberfest® is open to everyone in our global community. Whether you’re a developer,

Dec 24, 2021
Rangeless - c++ LINQ -like library of higher-order functions for data manipulation

rangeless::fn range-free LINQ-like library of higher-order functions for manipulation of containers and lazy input-sequences. Documentation What it's

Dec 27, 2022
This repository contains an exploit of CVE-2021-4034, a local privilege escalation in pkexec

pwnkit (CVE-2021-4034) Privilege Escalation exploit sample This repository contains an exploit of CVE-2021-4034, a local privilege escalation in pkexe

Dec 20, 2022