Intel с X86 тоже что-то пробует • Операционные системы: Google Android, iOS, мобильная Windows, Windows 10 • Устройства: планшеты, смартфоны; гибридные ноутбуки, серверы с низким энергопотреблением
Архитектуры: MIPS, ARM • Операционные системы: Linux + окружение BusyBox • Устройства: роутеры, встраиваемые системы, где нужен Линукс, но не нужна топовая графика или типа того
десктоп с Linux, военное применение) • Байкал: лицензия ядра мид-энд MIPS, производство в Азии (высокопроизводительные встраиваемые системы — станки с ЧПУ, планируют массовый рынок)
тираж • Автоматический монтаж компонент (специальный корпус SMD) • Резонит (Зеленоград), КБ Связь инжиниринг (Дубна), Виптех (Нижний Новгород) • Китай (с текущим курсом уже не так выгодно)
на HDL → завод в Азии → чип ASIC (специализированная микросхема) • дома: Дизайн на HDL → ПЛИС • MIPSfpga: исходники промышленного чипа PIC32MZ для запуска на ПЛИС • opencores.org • Есть линия в Зеленограде
Совместима на программном уровне с платформой Arduino • Программирование на языке Си/С++ • WiFi, режимы USB хоста и USB-устройства, SD-карта • Контроллер PIC32MX 80МГц • 512Кб ПЗУ флеш, 128Кб ОЗУ
и внешним миром • Пронумерованы от 0 до 41 (на WF32) • Каждый порт может работать в режиме ввода или вывода • Цифровой режим: для порта определено два значения 1 (HIGH - плюс) и 0 (LOW - минус) • В режиме вывода программа записывает в указанный порт единицу 1 и на порт подаётся напряжение плюс, при записи 0 подаётся минус (земля/ground/GND)
Работает на Linux, Mac и Windows • Предварительно необходимо установить платформу Java: java.oracle.com Драйвер платы: • в Linux уже всё есть, хотя может потребоваться дать права на доступ к устройству /dev/ttyUSBX • в Windows 7: драйвер в архиве с MPIDE • в Windows 8: при подключении платы разрешить искать в интернете
(5В), земля GDN и сигнал OUT • OUT=HIGH (т.е. логическая единица), если поднести его к поверхности черного цвета, OUT=LOW (т.е. логический ноль), если поднести его к поверхности любого другого цвета.
видят линии (линия между датчиками), едем вперёд. • Иначе (линия есть под левым или под правым датчиком или сразу под обоими) проверяем, есть ли линия под правым датчиком. • Если линия есть под правым датчиком, поворачиваем направо. • Иначе (значит линия под левым датчиком) поворачиваем налево. • Повторяем всё сначала
== b : если a равно b, ПРАВДА, иначе ЛОЖЬ • a != b : если a не равно b, ПРАВДА, иначе ЛОЖЬ • a < b : если a меньше b, ПРАВДА, иначе ЛОЖЬ • a > b : если a больше b, ПРАВДА, иначе ЛОЖЬ • a <= b : если a меньше или равно b, ПРАВДА, иначе ЛОЖЬ • a >= b : если a больше или равно b, ПРАВДА, иначе ЛОЖЬ
И): если a ПРАВДА И b ПРАВДА, ПРАВДА, иначе ЛОЖЬ • a || b (логическое ИЛИ): если a ПРАВДА ИЛИ b ПРАВДА, ПРАВДА, иначе ЛОЖЬ • !a (логическое НЕ): если a ЛОЖЬ, ПРАВДА, иначе ЛОЖЬ
( digitalRead(LINE_SENSOR_L) == 1 ) ПРАВДА, если левый датчик не видит линию ( digitalRead(LINE_SENSOR_L) == 0 ) ПРАВДА, если правый датчик видит линию ( digitalRead(LINE_SENSOR_R) == 1 ) ПРАВДА, если правый датчик не видит линию ( digitalRead(LINE_SENSOR_R) == 0 )
* подает на нее сигнал: * 1, если сенсор обнаружил линию (черный цвет), * 0, если сенсор линию не видит (белый цвет). */ #define LINE_SENSOR_L 27 #define LINE_SENSOR_R 28