Arduino Playground — HomePage
Arduino Playground is a work in progress. We can use all the help you can give, so please read the Participate section and get your fingers typing!
Playground Content Tree
Arduino en Español, Български, Català, Deutsch, Français, Italiano, Português, Русский
Manuals and Curriculum
- More Good starting places — Cohesive documentation that will step you through a variety of topics.
Board Setup and Configuration
- Learn more about using and configuring your boards. For example: power supplies, burning bootloaders, firmwares, etc.
Development Tools
- Software for PCs for Arduino development.
Arduino on other Chips
- The Arduino IDE can be configured to program a variety of microcontrollers, not just the ones found on the standard Arduino boards.
Interfacing With Hardware
- Output — Examples and information for specific output devices and peripherals: How to connect and wire up devices and code to drive them.
- Input — Examples and information on specific input devices and peripherals: How to connect and wire up devices and code to get data from them.
- User Interface
- Storage — Adding external storage to your Arduino board.
- Communication — various means of communicating to and from an Arduino board.
- Data Logging and Plotting — libraries for SD cards, data loggers and plotters
- Power supplies — Solutions for powering your project.
- General — General interfacing that does not fit under any of the categories, or span across multiple.
Interfacing with Software
- How to get Arduino to talk to various pieces of software on your computer.
User Code Library
- Here you find general use software snippets and libraries for calculations and ‘internal’ purposed. Tutorials for learning C, math, sleep, etc.
- Snippets and Sketches
- Libraries
- Tutorials
- If you have code to contribute related to an external device, find the right spot under Interfacing With Hardware.
Suggestions & Bugs
- With your help this free open source project can continue to improve. Bug reports, feature requests, and pull requests are welcome!
Electronics Techniques
- Soldering tutorials and electronics texts and resources.
Sources for Electronic Parts
Related Hardware and Initiatives
- Arduino-compatible hardware, related initiatives, and other microcontroller platforms.
Arduino People/Groups & Sites
Exhibition
- A gallery of projects made with Arduino (as opposed to tutorials on how to recreate them).
Project Ideas
- A list of project ideas, divided into three difficulty levels:
Easy, Intermediate and Advanced.
Languages
- Català
- Español — Spanish
- Français
- Italiano
- Deutsch
- Português
- Simplified Chinese (简体中文)
Проблема инициализации массива struct (arduino uno, array)
Цель для этого состоит в том, чтобы создать структуру, которая включает в себя имя, идентификатор, имя файла и логическое значение, а затем создать массив этих структур.
struct Amiibo { char *aName{}; char *ID{}; char *AudioFileName{}; bool alreadyPlayed{false}; }; Amiibo amii[20] = { {"Mario","A5005B00","MARIO",false}, //0 {"Meta Knight","A5 00 02 00","MK"}, //1 {"Inkling", "A5 00 05 00","INK"}, //2 {"Donkey Kong","A5 00 01 00","DK"}, //3 {"Lucas","A5 00 0A 00","LUCAS"}, //4 {"Duck Hunt", "A5 00 08 00","DUCKH"}, //5 {"Ocarina of Time Link","A5 00 01 00","OOTL"}, //6 {"Breath of The Wild Link","random","BOTWL"}, //7 {"8-bit Link","random","8BITL"}, //8 {"Toon Link","random","TOONL"}, //9 {"Mr. Game and Watch","random","GANDW"}, //10 {"Falco","random","FALCO"}, //11 {"King Dedede","random","DEDEDE"}, //12 {"Mewtwo","random","MEWTWO"}, //13 {"Captain Falcon","random","CAPF"}, //14 {"ROB","random","ROB"}, //15 {"PAC-MAN","random","PACMAN"}, //16 {"Cloud","random","CLOUD"}, //17 {"Ness","random","NESS"}, //18 {"Ryu","random","RYU"} //19 };
Это дает мне следующую ошибку:
ошибка: не удалось преобразовать » {«Mario», «A5005B00», «MARIO», false}» из » в «Amiibo»
И та же ошибка для всех остальных элементов массива.
скобки вокруг скалярного интилизатора типа «Amiibo»
Я не знаю, что с этим делать, так как совершенно уверен, что это не скалярный тип.
Мне бы очень хотелось создать структурный массив, чтобы я мог циклически перебирать их наугад, используя случайное семя. Это не должно быть так сложно, но я упираюсь в стену. Я был бы признателен за любой совет, который вы все должны дать. Спасибо.
▲ 0
Если вы используете значения по умолчанию в объявлении структуры, вы должны определить также конструкторы для установки определенных элементов:
struct Amiibo { const char *aName{}; const char *ID{}; const char *AudioFileName{}; bool alreadyPlayed{false}; Amiibo() = default; // реализация по умолчанию для конструктора default Amiibo(const char* name, const char* id, const char * audio) // конструктор с тремя строками c в качестве параметров : aName{ name } , ID{ id } , AudioFileName{ audio } { ; } }; Amiibo amii[] = { {"Mario","A5005B00","MARIO",false}, //0 {"Meta Knight","A5 00 02 00","MK"}, //1 {"Inkling", "A5 00 05 00","INK"}, //2 {"Donkey Kong","A5 00 01 00","DK"}, //3 {"Lucas","A5 00 0A 00","LUCAS"}, //4 {"Duck Hunt", "A5 00 08 00","DUCKH"}, //5 {"Ocarina of Time Link","A5 00 01 00","OOTL"}, //6 {"Breath of The Wild Link","random","BOTWL"}, //7 {"8-bit Link","random","8BITL"}, //8 {"Toon Link","random","TOONL"}, //9 {"Mr.![]()
Game and Watch","random","GANDW"}, //10 {"Falco","random","FALCO"}, //11 {"King Dedede","random","DEDEDE"}, //12 {"Mewtwo","random","MEWTWO"}, //13 {"Captain Falcon","random","CAPF"}, //14 {"ROB","random","ROB"}, //15 {"PAC-MAN","random","PACMAN"}, //16 {"Cloud","random","CLOUD"}, //17 {"Ness","random","NESS"}, //18 {"Ryu","random","RYU"} //19 };
Кстати на старых AVR все эти строки также будут храниться в памяти
, @KIIV
Структура struct | Детская площадка Simple Simon
Сохранить Подписаться Пожалуйста, войдите, чтобы подписаться на это руководство.
После входа в систему вы будете перенаправлены обратно к этому руководству и сможете подписаться на него.
Поиграйте в игру некоторое время, прежде чем читать этот раздел.
В предыдущем разделе я не упомянул ни одну из строк кода в верхней части скетча. Большинство из них являются обычными глобальными переменными и довольно распространенными константами. Однако этот раздел кода может быть для вас новым.
кнопка структуры { uint8_t capPad[2]; uint8_t пиксель[3]; uint32_t цвет; uint16_t частота; } симонбуттон[] = { { {3,2}, {0,1,2}, 0x00FF00, 415 }, // ЗЕЛЕНЫЙ { {0,1}, {2,3,4}, 0xFFFF00, 252 }, // ЖЕЛТЫЙ { {12, 6}, {5,6,7}, 0x0000FF, 209 }, // СИНИЙ { {9, 10}, {7,8,9}, 0xFF0000, 310 }, // КРАСНЫЙ };
Это определение и инициализация массива ( simonButton[]
) чего-то, называемого структурой . Структура происходит из языка программирования C, но также поддерживается в C++ и, следовательно, в Arduino. В основном это позволяет нам создать новую переменную, которая представляет собой набор информации, связанной с чем-то, например, с «кнопкой» Саймона. Это позволяет нам передавать и получать доступ к этой информации из одной ссылки. Нам не нужно передавать каждый отдельный фрагмент информации отдельно.
Разговор о структурах может быть довольно сложным, и они являются предшественниками более сложного класса
C++ и мира ООП. Но они очень полезны, и мы довольно просто используем их в нашем коде Simple Simon. Чтобы лучше понять, чем полезна структура, давайте рассмотрим более простой пример — двумерную точку.
Двумерная точка представлена значением x
и y
. Мы могли бы создать их как отдельные переменные:
float x; плавать у;
, а затем используйте их как обычно:
x = 45,3; у = -108,6;
Но что, если я хочу передать эту 2D-точку функции? Или что, если я хочу создать еще одну 2D-точку? Вещи начинают становиться немного грязными. Здесь поможет структура. Вместо двух отдельных переменных мы создаем одну структуру для представления 2D-точки и помещаем туда переменные.
точка структуры { плавать х; плавать у; }
А затем создать новую точечную переменную:
точка структуры someLocation;
И присвойте ему значения:
someLocation.x = 45.3; SomeLocation.y = -108,6;
Теперь все, что нужно сделать, это передать переменную someLocation
В коде Simple Simon реализована одна интересная вещь — создание и инициализация значений структуры за один шаг. Для нашего 2D-точечного примера это будет выглядеть так:
точка структуры { плавать х; плавать у; } некоторое расположение = { 45,3, -108,6 }
Это просто быстрый способ создать переменную и присвоить ей некоторые начальные значения.
Возвращаясь к нашей игре «Простой Саймон», подумайте о том, что имеет каждая из четырех «кнопок». Наиболее очевидным является цвет . Но они тоже издают звук при нажатии, и у каждого свой тон . Поскольку мы пытаемся реализовать их на нашей Circuit Playground, мы будем использовать набор из NeoPixels , чтобы показать цвет. Также мы планируем использовать емкостное касание для кнопок, при этом каждая кнопка будет иметь пару пэдов . Итак, на каждую «кнопку» у нас есть следующие позиции:
- 2 емкостных тачпада
- 3 х NeoPixels
- цвет
- тон
Эй, должно быть знакомо. Посмотрите еще раз на определение структуры:
struct button { uint8_t capPad[2]; uint8_t пиксель[3]; uint32_t цвет; uint16_t частота; }
Как в списке. Для каждой «кнопки» у нас есть индексы для 2 емкостных сенсорных панелей, индексы для 3 NeoPixels, цвет для NeoPixels и частота тона для кнопки.
У нас есть более одной «кнопки», поэтому мы создаем их массив и инициализируем их значения:
simonButton[] = { { {3,2}, {0,1,2}, 0x00FF00, 415 }, // ЗЕЛЕНЫЙ { {0,1}, {2,3,4}, 0xFFFF00, 252 }, // ЖЕЛТЫЙ { {12, 6}, {5,6,7}, 0x0000FF, 209 }, // СИНИЙ { {9, 10}, {7,8,9}, 0xFF0000, 310 }, // КРАСНЫЙ };
Каждая строка является элементом массива и представляет одну кнопку. Каждый элемент в каждой строке соответствует значению структуры и используется для определения конкретных кнопок. Например, первая строка определяет ЗЕЛЕНУЮ кнопку как имеющую емкостные сенсорные панели № 3 и № 2, NeoPixels № 0, № 1 и № 2, зеленый цвет (в шестнадцатеричном формате) и частоту 415 Гц.
Затем, если нам нужна частота тона ЗЕЛЁНОЙ кнопки, синтаксис такой:
simonButton[0].freq
Цвет для СИНЕЙ кнопки?
simonButton[2].color
Индекс 2-го НеоПикселя для КРАСНОЙ кнопки?
simonButton[3].pixel[1]
и т.д. и т.п.
Надеюсь, это имеет смысл, и вы видите, насколько это полезно. Если нет, то просто получайте удовольствие, играя в игру… пока.
Просто пытаюсь упростить. Но это вполне выполнимо, так как внутри Arduino используется C++.
Прохождение кода CircuitPython версии
Это руководство было впервые опубликовано 23 января 2017 года. обновлено 23 января 2017 г.
Эта страница (Структура структуры) последний раз обновлялась 19 января 2017 г.
Текстовый редактор на базе tinymce.
Arduino #19: структуры файлов – Курс
Политика конфиденциальности
Какую информацию мы собираем?
Мы собираем информацию от вас, когда вы регистрируетесь на нашем сайте или размещаете заказ. При заказе или регистрации на нашем сайте, в зависимости от обстоятельств, вас могут попросить ввести: имя, адрес электронной почты или почтовый адрес.Для чего мы используем вашу информацию?
Любая информация, которую мы получаем от вас, может быть использована одним из следующих способов: Чтобы персонализировать ваш опыт (Ваша информация помогает нам лучше реагировать на ваши индивидуальные потребности) Для улучшения нашего сайта (мы постоянно стремимся улучшить предложения нашего веб-сайта на основе информации и отзывов, которые мы получаем от вас) Для улучшения обслуживания клиентов (Ваша информация помогает нам более эффективно реагировать на ваши запросы обслуживания клиентов и потребности в поддержке) Для обработки транзакций Ваша информация, будь то общедоступная или частная, не будет продаваться, обмениваться, передаваться или передаваться какой-либо другой компании по какой бы то ни было причине без вашего согласия, кроме как для явной цели доставки приобретенного продукта или запрошенной услуги.
Как мы защищаем вашу информацию?
Мы применяем различные меры безопасности для обеспечения безопасности вашей личной информации, когда вы размещаете заказ или вводите, отправляете или получаете доступ к своей личной информации. Мы предлагаем использование безопасного сервера. Вся предоставленная конфиденциальная/кредитная информация передается с помощью технологии Secure Socket Layer (SSL), а затем зашифровывается в нашу базу данных поставщиков платежных шлюзов, чтобы быть доступной только для тех, кто имеет специальные права доступа к таким системам, и они обязаны сохранять конфиденциальность информации. После транзакции ваша личная информация (кредитные карты, номера социального страхования, финансовые данные и т.
Используем ли мы файлы cookie?
Да (файлы cookie — это небольшие файлы, которые сайт или его поставщик услуг передает на жесткий диск вашего компьютера через веб-браузер (если вы разрешаете), что позволяет сайтам или системам поставщиков услуг распознавать ваш браузер, а также собирать и запоминать определенную информацию Мы используем файлы cookie, чтобы помочь нам запомнить и обработать товары в вашей корзине, понять и сохранить ваши предпочтения для будущих посещений, отслеживать рекламу и собирать сводные данные о трафике сайта и взаимодействии с ним, чтобы мы могли предложить лучший опыт работы с сайтом и инструменты в будущее. Мы можем заключить договор со сторонними поставщиками услуг, чтобы помочь нам лучше понять посетителей нашего сайта. Этим поставщикам услуг не разрешается использовать информацию, собранную от нашего имени, кроме как для помощи в ведении и улучшении нашего бизнеса. Если вы предпочитаете, вы можете выбрать, чтобы ваш компьютер предупреждал вас каждый раз, когда отправляется файл cookie, или вы можете отключить все файлы cookie в настройках своего браузера.
Раскрываем ли мы какую-либо информацию внешним сторонам?
Мы не продаем, не обмениваем или иным образом не передаем третьим лицам вашу личную информацию. Это не включает доверенных третьих лиц, которые помогают нам в работе нашего веб-сайта, ведении нашего бизнеса или обслуживании вас, если эти стороны соглашаются сохранять конфиденциальность этой информации. Мы также можем разглашать вашу информацию, когда мы считаем, что разглашение необходимо для соблюдения закона, обеспечения соблюдения политик нашего сайта или защиты наших или чужих прав, собственности или безопасности.
Регистрация
Минимальная информация, необходимая нам для регистрации, — это ваше имя, адрес электронной почты и пароль. Мы будем задавать вам дополнительные вопросы по различным услугам, в том числе по стимулированию сбыта. Если не указано иное, вы должны ответить на все регистрационные вопросы. Мы также можем задать некоторые другие добровольные вопросы во время регистрации в определенных службах (например, в профессиональных сетях), чтобы мы могли получить более четкое представление о том, кто вы. Это также позволяет нам персонализировать услуги для вас. Чтобы помочь нам в нашем маркетинге, в дополнение к данным, которые вы предоставляете нам при регистрации, мы также можем получать данные от доверенных третьих лиц, чтобы помочь нам понять, что вас может заинтересовать. Эта «профилирующая» информация создается из из различных источников, включая общедоступные данные (например, списки избирателей) или из таких источников, как опросы и опросы, в отношении которых вы дали разрешение на передачу ваших данных.

Соблюдение Закона о защите конфиденциальности детей в Интернете
Мы соблюдаем требования COPPA (Закон о защите конфиденциальности детей в Интернете), мы не собираем никакой информации от лиц моложе 13 лет.