"Вы читаете о роботах и программировании и думаете: «Было бы здорово сделать что-то подобное самому!» Теми, кем эта идея овладевает чуть больше просто мыслей смотрят кто и как делал своего робота. Читают статьи, смотрят видео. На картинках все понятно. В видеороликах тоже обычно показываются уже готовые продукты, а также сжато показываются технологии их изготовления. И вроде бы то же всё понятно: отпилил, прикрутил, припаял, соединил, запрограммировал вон на той программе вот этим кодом."
пятница, 12 января 2018 г.
четверг, 11 января 2018 г.
Зона Ардуино: Язык С
Программа на языке Си состоит из одной или более подпрограмм, называемых функциями.
Язык Си является блочно-структурированным. Каждый блок заключается в фигурные скобки {}.
Основным блоком в программе консольного приложения на языке Си является главная функция, имеющая имя main().
Каждое действие в языке Си заканчивается символом "точка с запятой" - ;. В качестве действия может выступать вызов функции или осуществление некоторых операций.
Имя функции — это коллективное имя группы описаний и операторов,
заключенных в блок (фигурные скобки). За именем функции в круглых скобках указываются параметры функции.
Язык Си является блочно-структурированным. Каждый блок заключается в фигурные скобки {}.
Основным блоком в программе консольного приложения на языке Си является главная функция, имеющая имя main().
Каждое действие в языке Си заканчивается символом "точка с запятой" - ;. В качестве действия может выступать вызов функции или осуществление некоторых операций.
Имя функции — это коллективное имя группы описаний и операторов,
заключенных в блок (фигурные скобки). За именем функции в круглых скобках указываются параметры функции.
Комментарии в языке Си
В языке Си для комментариев используются символы
/* - начало комментария;
*/ - конец комментария.
Вся последовательность, заключенная между этими символами, является комментарием.
Это удобно для написания многострочных комментариев:
/* - начало комментария;
*/ - конец комментария.
Вся последовательность, заключенная между этими символами, является комментарием.
Это удобно для написания многострочных комментариев:
int a; /* целая
переменная */
переменная */
Многострочные комментарии также удобно использовать при отладке для сокрытия от выполнения части кода.
В дополнение к этому, для написания коротких комментариев могут использоваться символы //. При этом комментарием является все, что расположено после символов // и до конца строки:
В дополнение к этому, для написания коротких комментариев могут использоваться символы //. При этом комментарием является все, что расположено после символов // и до конца строки:
float b; // вещественная переменная
Главная функция
При выполнении консольного приложения, написанного на языке Си, операционная система компьютера передаёт управление функции с именем main(). Функцию main() нельзя вызывать из других функций программы, она является управляющей.
Следующие за именем функции круглые скобки предназначены для указания параметров (аргументов), которые передаются в функцию при обращении к ней. В данном случае операционная система не передаёт в функцию main() никаких аргументов, поэтому список аргументов в круглых скобках пустой.
Главную функцию можно записать по-разному:
Следующие за именем функции круглые скобки предназначены для указания параметров (аргументов), которые передаются в функцию при обращении к ней. В данном случае операционная система не передаёт в функцию main() никаких аргументов, поэтому список аргументов в круглых скобках пустой.
Главную функцию можно записать по-разному:
- int main()
- void main().
Перед именем функции указывается тип возвращаемого значения. При обращении к главной функции значение возвращается операционной системе. Последняя запись не будет возвращать значения. Однако void main() - не совсем корректная запись, так как сообщает компилятору, что функция main() не возвращает никакого значения.
При этом запись int main() сообщает компилятору о возвращении целочисленного значения, которое необходимо операционной системе и сообщает ей о том, что программа завершилась корректно. Если же это значение не возвращено, то операционная система понимает, что программа завершилась в аварийном режиме.
Для возврата целочисленного значения перед завершением функции добавляется строка
При этом запись int main() сообщает компилятору о возвращении целочисленного значения, которое необходимо операционной системе и сообщает ей о том, что программа завершилась корректно. Если же это значение не возвращено, то операционная система понимает, что программа завершилась в аварийном режиме.
Для возврата целочисленного значения перед завершением функции добавляется строка
return 0; // вещественная переменная
В фигурные скобки заключены описания и операторы.
В общем случае программа может содержать несколько функций. Каждая функция имеет список передаваемых в нее параметров, указанный в круглых скобках, и набор операций, заключенных в блок, ограниченный фигурными скобками.
среда, 10 января 2018 г.
Проект робота и домашнее задание
Цель - создание УЧЕБНОГО РОБОТА, который должен двигаться по линии. Основная задача стоящая перед Вами это создать робота для отработки предложенных Вами же алгоритмов управления движения по сигнальной линии. Предполагаемый вид робота показан на рисунке 1.
рисунок 1.
В состав робота входит контроллер СМ-100, два электромотора, два батарейных отсека. Возможности робота будут расширены за счет добавления в предлагаемую конструкцию кнопки и блока светодиодов, для более информативного процесса управления.
Свой алгоритм управления представить в виде ДРАКОН схемы, используя предложенные иконки на рисунке 2.
рисунок 2
Выполнить домашнее задание в DRACON WEB результат сохранить и загрузить через ПУНКТ ПРИЕМА ДОМАШНИХ ЗАДАНИЙ на блоге клуба рисунок 3.
рисунок 3
Срок выполнения до 23.00 14.01.18. Любое домашнее задание оценивается добавлением поощрительных балов к текущему рейтингу. Максимальная оценка до 3 балла (1 балл за сдачу Д/З своевременно, 1 балл за правильность выполнения Д/З, 1 балл за уникальность варианта Д/З).
ВНИМАНИЕ доманее задание ОБЯЗАТЕЛЬНО для членов команды - его отсутствие - 1 балл от рейтинга.
воскресенье, 7 января 2018 г.
Постановка задачи членам клуба робототехники на первую половину 2018 года
Главная задача клуба Робототехника обучение школьников базовым основам робототехники и культуре проектирования технических устройств. Для решения этой задачи необходимо обучить методике разработки и создания робота или иного автоматического устройства. Любая методика это отработанный алгоритм гарантировано приводящий к достижению поставленной цели. Для реализации главной задачи клуба предлагается следующий алгоритм (методика)
Для успешной реализации данной методики необходимо всем постоянным членам клуба стать постоянными читателями нашего блога - оформить подписку на обновления блога и подписаться в разделе постоянных читателей.
Для дальнейшего повышения качества получения знаний и навыков, а также создания обстановки состязательности члены клуба условно разделены на три группы - команду, скамейку запасных, и "камчатка". Начнем с "камчатки" - это члены клуба, которые заняты только своими целями и не желают участвовать в жизни нашего клуба, они только посещают занятия и ничего более. Скамейка запасных - может быть длинной или короткой, все зависит от них самих - хотят активно участвовать - участвуют, добиваясь место в основном составе сиречь команде. Основной состав - команда, это те члены, которые участвуют в выставках и соревнованиях. Это те, из которых формируются будущие магистры клуба. Некоторым членам команды присваивается звание ЗНАТОК. Кроме того член команды или скамейки запасных обязан быть постоянны читателем блога клуба робототехника, причем активным читателем, который оставляет свои вопросы, замечания, предложения или пожелания через форму связи.
Возвращаясь к нашей методике, в конце марта - апреля, будет проходить "Созвездие", где наша команда может поучаствовать, в качестве приглашенных гостей и международная конференция - "Проблемы школьной информатики" - где мы, команда может быть участниками, призерами и возможно победителями, было бы желание.
Этим и не только вопросам будет посвящено заседание клуба от 11.01.18
суббота, 6 января 2018 г.
Зона Ардуино: Инструкция по проверке созданного скетча в ИС ДРАКОН
Любая программа это алгоритм зафиксированный на языке понятном исполнителю. Исполнитель наших программ - контроллер, родной язык которого машинный код, для нас недоступен. Соответственно наш человеческий (разговорный) язык тоже недоступен контроллеру. Выход написать программу на каком то промежуточном языке более менее, понятном человеку и который может быть транслирован или компилирован в машинный код. Для программ управления, такой язык должен быть очень лаконичным, что очень важно для уменьшения размеров машинного кода. Чем меньше программа тем быстрее она работает, а скорость работы программы важнейший параметр в автоматизации управления. С другой стороны лаконичный язык, он не информативен и как следствие мало понятен человеку. Выход? Выход в написании комментариев, которые при переводе с языка программирования в машинный код (трансляции/компиляции) не включаются и следственно на размер машинного кода не влияют. И все было бы хорошо, но запись на языке программирования остается мало понятным текстом содержащим алгоритм. Алгоритм записанный на естественном(разговорном) языке, тоже весьма довольно трудная, для понимания конструкция. Человеку проще работать с образами в целом, чем с текстом описывающим этот образ (лучше один раз видеть, чем сто раз услышать), уже давно доказано, что текст, мы читаем мысленно проговаривая слова, для того чтобы мысленно их услышать. Выход? Выход в представление текста алгоритма в виде образа - рисунка. Но рисунок не обладает однозначностью. Нарисуйте окружность, а потом ответьте, что это круг или окружность? Именно для этого рисунок нужно сопровождать или дополнять поясняющим текстом - комментарием. Именно так и работает язык программирования ДРАКОН (Дружелюбный Русский Алгоритмический язык Который Обеспечивает Наглядность). Благодаря двум режимам работы - режима создания алгоритма и режима программирования, появляется возможность, даже не у профессиональных программистов, наглядно создать очень быструю программу, практически любой сложности. Но написать программу мало ее нужно загрузить в исполнителя. И вот тут бывает необходим специальный редактор, который сможет разработанную программу в ДРАКОНе загрузить в нашего исполнителя. Такая загрузка подразумевает трансляцию скомпилированного на языке программирования алгоритма. Одна из функций любого транслятора, это нахождение ошибок, допущенных при записи алгоритма на языке программирования. ВНИМАНИЕ транслятор не исправляет ошибки логики в алгоритме, он только проверяет правильность написания программного кода на языке программирования. Проверка правильности алгоритма со стороны логики выполнения поставленной задачи остается за человеком.
Вашему вниманию предлагается еще один способ применения языка ДРАКОН - создание понятных и наглядных инструкций для выполнения каких либо действий человеком исполнителем.
Предлагаемая Вам инструкция это проверка созданной ДРАКОН - схемы управления, перед трансляцией в исполнителя, связка ИС ДРАКОН и редактора ARDUINO.
Вашему вниманию предлагается еще один способ применения языка ДРАКОН - создание понятных и наглядных инструкций для выполнения каких либо действий человеком исполнителем.
Предлагаемая Вам инструкция это проверка созданной ДРАКОН - схемы управления, перед трансляцией в исполнителя, связка ИС ДРАКОН и редактора ARDUINO.
Для ознакомления с предлагаемой графической инструкцией, щелкните левой кнопкой мыши по рисунку. При чтении схемы алгоритма, помним что работают правила сверху - вниз, слева на право, и переходы к указанным снизу меткам(сверху).
пятница, 5 января 2018 г.
Архитектура вычислительных машин
Различаются Принстонскую и Гарвардскую архитектуру вычислительных машин. Эти архитектурные варианты были предложены в конце 40-х годов специалистами, соответственно, Принстонского и Гарвардского университетов США для разрабатываемых ими моделей компьютеров.
Принстонская архитектура
Принстонская архитектура, которая часто называется архитектурой фон Неймана, характеризуется использованием общей оперативной памяти для хранения программ, данных, а также для организации стека. Для обращения к этой памяти используется общая системная шина, по которой в процессор поступают и команды, и данные.
Архитектура современных персональных компьютеров основана на
магистрально-модульном принципе.
магистрально-модульном принципе.
Любую вычислительную машину образуют три основные компонента:
- процессор,
- память,
- устройства ввода-вывода (УВВ).
Информационная связь между устройствами компьютера осуществляется через системную шину (системную магистраль).
Шина – это кабель, состоящий из множества проводников. Количество проводников, входящих в состав шины, является
максимальной разрядностью шины.
максимальной разрядностью шины.
Системная шина, в свою очередь, представляет собой совокупность
- шины данных, служащей для переноса информации;
- шины адреса, которая определяет, куда переносить информацию;
- шины управления, которая определяет правила для передачи информации;
- шины питания, подводящей электропитание ко всем узлам вычислительной машины.
Системная шина характеризуется тактовой частотой и разрядностью. Количество одновременно передаваемых по шине бит называется
разрядностью шины.
разрядностью шины.
Тактовая частота характеризует число элементарных операций по передаче данных в 1 секунду. Разрядность шины измеряется в битах, тактовая частота – в мегагерцах.
Устройство управления (УУ) формирует адрес команды, которая должна быть выполнена в данном цикле, и выдает управляющий сигнал на чтение содержимого соответствующей ячейки запоминающего устройства (ЗУ). Считанная команда передается в УУ. По информации, содержащейся в адресных полях команды, УУ формирует адреса операндов и управляющие сигналы для их чтения из ЗУ и передачи в арифметико-логическое устройство (АЛУ). После считывания операндов устройство управления по коду операции, содержащемуся в команде, выдает в АЛУ сигналы на выполнение операции. Полученный результат записывается в ЗУ по адресу приемника результата под управлением сигналов записи. Признаки результата (знак, наличие переполнения, признак нуля и так далее) поступают в устройство управления, где записываются в специальный регистр признаков. Эта информация может использоваться при выполнении следующих команд программы, например команд условного перехода.
Устройство ввода позволяет ввести программу решения задачи и исходные данные в ЭВМ и поместить их в оперативную память. В зависимости от типа устройства ввода исходные данные для решения задачи вводятся непосредственно с клавиатуры, либо они должны быть предварительно помещены на какой-либо носитель (дисковый накопитель).
Устройство вывода служит для вывода из ЭВМ результатов обработки исходной информации. Чаще всего это символьная информация, которая выводится с помощью печатающих устройств или на экран дисплея.
Запоминающее устройство или память – это совокупность ячеек, предназначенных для хранения некоторого кода. Каждой из ячеек присвоен свой номер, называемый адресом. Информацией, записанной в ячейке, могут быть как команды в машинном виде, так и данные.
Обработка данных и команд осуществляется посредством арифметико-логического устройства (АЛУ), предназначенного для непосредственного выполнения машинных команд под действием устройства управления. АЛУ и УУ совместно образуют центральное процессорное устройство (ЦПУ). Результаты обработки передаются в память.
Основные принципы построения вычислительных машин с архитектурой фон Неймана
Основные принципы построения вычислительных машин с архитектурой фон Неймана
- Принцип двоичности. Для представления данных и команд используется двоичная система счисления.
- Принцип программного управления. Программа состоит из набора команд, которые выполняются процессором друг за другом в определённой последовательности.
- Принцип однородности памяти. Как программы (команды), так и данные хранятся в одной и той же памяти (и кодируются в одной и той же системе счисления, чаще всего – двоичной). Над командами можно выполнять такие же действия, как и над данными.
- Принцип адресуемости памяти. Структурно основная память состоит из пронумерованных ячеек, процессору в произвольный момент времени доступна любая ячейка.
- Принцип последовательного программного управления. Все команды располагаются в памяти и выполняются последовательно, одна после завершения другой.
- Принцип условного перехода. Команды из программы не всегда выполняются одна за другой. Возможно присутствие в программе команд условного перехода (а также команд вызова функций и обработки прерываний), которые изменяют последовательность выполнения команд в зависимости от значений данных. Этот принцип был сформулирован задолго до фон Неймана Адой Лавлейс и Чарльзом Бэббиджем, однако был логически включен в указанный набор как дополняющий предыдущий принцип.
Архитектура фон Неймана имеет ряд важных достоинств.
- Наличие общей памяти позволяет оперативно перераспределять ее объем для хранения отдельных массивов команд, данных и реализации стека в зависимости от решаемых задач. Таким образом, обеспечивается возможность более эффективного использования имеющегося объема оперативной памяти в каждом конкретном случае применения.
- Использование общей шины для передачи команд и данных значительно упрощает отладку, тестирование и текущий контроль функционирования системы, повышает ее надежность.
Поэтому Принстонская архитектура в течение долгого времени доминировала в вычислительной технике.
Однако ей присущи и существенные недостатки. Основным из них является необходимость последовательной выборки команд и обрабатываемых данных по общей системной шине. При этом общая шина становится «узким местом» (bottleneck – «бутылочное горло»), которое ограничивает производительность цифровой системы.
Гарвардская архитектура
Гарвардская архитектура была разработана Говардом Эйкеном в конце 1930-х годов в Гарвардском университете с целью увеличить скорость выполнения вычислительных операций и оптимизировать работу памяти. Она характеризуется физическим разделением памяти команд (программ) и памяти данных. В ее оригинальном варианте использовался также отдельный стек для хранения содержимого программного счетчика, который обеспечивал возможности выполнения вложенных подпрограмм. Каждая память соединяется с процессором отдельной шиной, что позволяет одновременно с чтением-записью данных при выполнении текущей команды производить выборку и декодирование следующей команды. Благодаря такому разделению потоков команд и данных и совмещению операций их выборки реализуется более высокая производительность, чем при использовании Принстонской архитектуры.

Недостатки Гарвардской архитектуры связаны с необходимостью проведения большего числа шин, а также с фиксированным объемом памяти, выделенной для команд и данных, назначение которой не может оперативно перераспределяться в соответствии с требованиями решаемой задачи. Поэтому приходится использовать память большего объема, коэффициент использования которой при решении разнообразных задач оказывается более низким, чем в системах с Принстонской архитектурой. Однако развитие микроэлектронной технологии позволило в значительной степени преодолеть указанные недостатки, поэтому Гарвардская архитектура широко применяется во внутренней структуре современных высокопроизводительных микропроцессоров, где используется отдельная кэш-память для хранения команд и данных. В то же время во внешней структуре большинства микропроцессорных систем реализуются принципы Принстонской архитектуры.

Недостатки Гарвардской архитектуры связаны с необходимостью проведения большего числа шин, а также с фиксированным объемом памяти, выделенной для команд и данных, назначение которой не может оперативно перераспределяться в соответствии с требованиями решаемой задачи. Поэтому приходится использовать память большего объема, коэффициент использования которой при решении разнообразных задач оказывается более низким, чем в системах с Принстонской архитектурой. Однако развитие микроэлектронной технологии позволило в значительной степени преодолеть указанные недостатки, поэтому Гарвардская архитектура широко применяется во внутренней структуре современных высокопроизводительных микропроцессоров, где используется отдельная кэш-память для хранения команд и данных. В то же время во внешней структуре большинства микропроцессорных систем реализуются принципы Принстонской архитектуры.
Зона Ардуино: Порты ввода-вывода

Порт ввода-вывода – логическое объединение сигнальных линий, через которое принимаются и передаются данные.
Каждая линия порта, как правило, обозначается как Pnx, где
Каждая линия порта, как правило, обозначается как Pnx, где
- n – обозначение порта;
- x – номер бита (линии) в порте.
Каждый порт ввода-вывода обслуживают как минимум 3 служебных регистра:
- регистр, содержащий данные (уровни сигналов) на всех линиях порта и используется для записи сигналов в порт;
- регистр, содержащий состояния входов порта, доступен только для чтения, используется при чтении данных из порта;
- регистр направления линий порта: каждая линия порта может быть сконфигурирована как вход или как выход в зависимости от значения бита этого регистра.
Если какая-то линия порта ввода-вывода в схеме не используется, она должна быть определена как выход (соответствующий бит регистра направления должен соответствовать выходу), и ее выходное значение должно быть равно 0.
Большинство линий ввода-вывода могут быть сконфигурированы для выполнения альтернативных функций, обозначенных в назначении выводов микроконтроллера.
Для всех линий портов ввода-вывода, как правило, доступна программная конфигурация входных подтягивающих резисторов. Подтягивающие резисторы осуществляют доопределение потенциалов «брошенных» входов напряжением высокого (Pull-up) или низкого (Pull-down) уровня.


Для обращения к отдельным линиям порта используется маскирование битов.
Входные элементы управления
В качестве входных элементов управления могут использоваться
- другие элементы схемы(датчики);
- тумблеры;
- джамперы;
- множественные переключатели;
- кнопки.
Тумблеры предназначены для коммутации цепей управления. Обрабатываемый сигнал с тумблера – потенциальный.
Различают 1-позиционные и 2-позиционные тумблеры:
1-позиционные

2-позиционные

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

Множественные переключатели представляют собой набор 1-позиционных тумблеров в миниатюрном формате.

Кнопки предназначены для коммутации цепей управления. Обрабатываемый сигнал с кнопки – импульсный и фиксирует момент нажатия кнопки и момент ее отжатия.


2-позиционные
Джамперы, как правило, используются для переключения режима работы, и их состояние проверяется только в момент включения питания микроконтроллера. Установка джампера замыкает 2 вывода, между которыми он установлен.

Множественные переключатели представляют собой набор 1-позиционных тумблеров в миниатюрном формате.

Кнопки предназначены для коммутации цепей управления. Обрабатываемый сигнал с кнопки – импульсный и фиксирует момент нажатия кнопки и момент ее отжатия.

Выходные элементы управления
В качестве выходных элементов управления могут использоваться
- другие элементы схемы;
- элементы индикации (единичные светодиоды или светодиодные сборки, в частности, - 7-сегментные индикаторы).
Единичные светодиоды
Различают 7-сегментные индикаторы с общим анодом и с общим катодом.
При подаче логической единицы на соответствующий сегмент индикатора с общим катодом светодиод сегмента включается. При этом общий вывод сегментов (катод) должен быть соединен с логическим нулем.
При подаче логического нуля на соответствующий сегмент индикатора с общим анодом светодиод сегмента включается. При этом общий вывод (анод) должен быть соединен с логической единицей.
В таблице приведены коды для отображения цифр на 7-сегментном индикаторе
Подписаться на:
Сообщения (Atom)









