Оглавление:
- Запасы
- Шаг 1: разработка игры гласных с помощью Arduino
- Шаг 2:
- Шаг 3:
- Шаг 4: Идея проекта
- Шаг 5:
- Шаг 6: построение логики программирования игры
- Шаг 7:
- Шаг 8:
- Шаг 9: Функция Void Setup ()
- Шаг 10: Основная функция Void Loop ()
- Шаг 11:
- Шаг 12: Заключение
- Шаг 13: Подтверждение
Видео: Игра гласных с Arduino и MP3-модулем YX5300 Catalex: 13 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Ты умеешь читать этот вопрос? Это странно! Я специально задал этот вопрос. Если вы можете прочитать этот текст, это потому, что вы знаете весь алфавит и, конечно же, выучили все гласные.
Гласные присутствуют во всех словах. От каждого из них невозможно спастись. А теперь позвольте мне задать вам вопрос. Было ли ваше детство увлекательным обучением и задействовало технологические ресурсы?
Я уверен, что учебных ресурсов было мало, и вы использовали традиционные методы для изучения гласных и алфавита.
В конце концов, можно ли использовать какие-то технологические ресурсы для изучения гласных?
В этой статье я научу вас, как обучать своих учеников и детей гласным с помощью игры.
Я научу вас, как создать систему с голосом, где ваш ребенок / ученик будет слышать звук буквы и должен нажимать кнопку, чтобы указать правильную букву.
Таким образом, они будут учиться во время игры и всегда будут заинтересованы в учебе.
Теперь я покажу вам пошаговый процесс создания собственной игры и обучения детей гласным звукам.
Запасы
Печатная плата JLCPCB
Ардуино Уно
Кнопочный переключатель
Резистор 10кР
Заголовок 2, 54 мм 1x7
Шаг 1: разработка игры гласных с помощью Arduino
Сердце игры - печатная плата гласных JLCPCB. Вы можете перейти по этой ссылке и скачать файлы проекта. На нем 5 кнопок. Вы будете использовать каждую кнопку, чтобы представить гласную и подключить ее к вашему Arduino.
Печатная плата представлена на рисунке 1.
Шаг 2:
С помощью этого проекта печатной платы вы можете подключить его к Arduino и создать свою игру. Затем я предложу вам электронную схему, чтобы вы могли собрать или построить проект на своей прототипной плате.
Шаг 3:
Из этой схемы мы создали макет электронной доски. Он показан на рисунке 2, и вы можете загрузить файлы и создать свой проект.
Выберите 5 контактов на Arduino и соедините перемычки на плате с Arduino. Или вы можете собрать следующую электронную схему.
Шаг 4: Идея проекта
Я научу вас, как собрать аудиосистему MP3 с помощью Arduino. Эта система будет отвечать за воспроизведение голоса, говорящего на письме. Звук каждой буквы будет отображаться с использованием значения от 1 до 5, где 1 представляет A, а 5 представляет U.
Таким образом, когда ребенок слышит звук, он должен смотреть на клавиатуру, распознавать написание гласной и нажимать правильную клавишу.
В случае сбоя система мигнет красным светодиодом 3 раза. В противном случае система активирует зуммер на 5 секунд и нарисует новую гласную.
Для этого необходимо собрать следующую схему.
В этой схеме вы подключите модуль MP3 и плату гласных на Arduino. Модуль Bluetooth использовался для представления модуля Catalex MP3.
Arduino будет отвечать за сортировку 5 чисел, а затем отправляет команду для активации нарисованной гласной
Шаг 5:
После этого подождем, пока ребенок не услышит и не нажмет кнопку, как показано на рисунке выше.
Каждая кнопка выше представляет собой гласную букву алфавита. Далее я покажу вам, как вы построите логику программирования для этого проекта.
Шаг 6: построение логики программирования игры
Система игры гласных основана на работе модуля YX5300. Этот модуль имеет некоторые функции, однако мы сосредоточимся на представлении рабочей структуры игры через основные функции модуля YX5300.
Ниже я представляю вам всю программную логику проекта.
Шаг 7:
Далее я шаг за шагом объясню логику этой веселой игры для детей.
#включают
#define ARDUINO_RX 5 // должен подключаться к TX модуля последовательного MP3-плеера #define ARDUINO_TX 6 // подключаться к RX модуля SoftwareSerial mp3 (ARDUINO_RX, ARDUINO_TX); статический int8_t Send_buf [8] = {0}; // Буфер для команд отправки. // ЛОКАЛЬНО ЛУЧШЕ static uint8_t ansbuf [10] = {0}; // Буфер для ответов. // ЛОКАЛЬНО ЛУЧШЕ String mp3Answer; // Ответ из MP3. String sanswer (недействительно); Строка sbyte2hex (uint8_t b); / ************ Командный байт ************************** / #define CMD_NEXT_SONG 0X01 // Воспроизвести дальше песня. #define CMD_PREV_SONG 0X02 // Воспроизвести предыдущую песню. #define CMD_PLAY_W_INDEX 0X03 #define CMD_VOLUME_UP 0X04 #define CMD_VOLUME_DOWN 0X05 #define CMD_SET_VOLUME 0X06 #define CMD_SNG_CYCL_PLAY 0X08 // Единый цикл воспроизведения. #define CMD_SEL_DEV 0x09 #define CMD_SLEEP_MODE 0x0a #define CMD_WAKE_UP 0x0B #define CMD_RESET 0x0c #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_PLAY_FOLDER_FILE 0x0F #define CMD_STOP_PLAY 0x16 // Останов постоянно играет. #define CMD_FOLDER_CYCLE 0X17 #define CMD_SHUFFLE_PLAY 0x18 // #define CMD_SET_SNGL_CYCL 0X19 // Установить единичный цикл. #define CMD_SET_DAC 0x1a #define DAC_ON 0x00 #define DAC_OFF 0x01 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAYING_N 0x4C #define CMD_QUERY_STATUS 0x42 #define CMD_QUERY_VOLUME 0x43 #define CMD_QUERY_FLDR_TRACKS 0x4e #define CMD_QUERY_TOT_TRACKS 0x48 #define CMD_QUERY_FLDR_COUNT 0x4F / ********* *** Опитоны ************************** / #define DEV_TF 0X02 / ************** ************************************************ ***** / int number; byte estado; байтовый зуммер = 2; байтовый контакт = 0; byte SortNumber = 0; кнопка bool = 0; void setup () {Serial.begin (9600); mp3.begin (9600); задержка (500); для (контакт = 8; контакт 13) {контакт = 8; } Serial.println ("Varrendo…"); Serial.println (контакт); // задержка (1000); } while (кнопка! = 1); Serial.println («Сайу…»); если (кнопка == 1 && (контакт-1)! = Номер сортировки) {sendCommand (0x03, 0, 6); задержка (3000); } if (button == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); задержка (3000); } // Проверяем ответ. если (mp3.available ()) {Serial.println (decodeMP3Answer ()); } задержка (100); //Serial.println("Tocando musica… "); } / ********************************************** ******************************* / / * Функция sendMP3Command: искать команду 'c' и отправлять ее в MP3 * / / * Параметр: c. Код для команды MP3, «h» для справки. * / / * Возврат: void * / void sendMP3Command (char c) {switch (c) {case '?': Case 'h': Serial.println ("HELP"); Serial.println ("p = Play"); Serial.println ("P = Пауза"); Serial.println ("> = Далее"); Serial.println ("': Serial.println (" Next "); sendCommand (CMD_NEXT_SONG); sendCommand (CMD_PLAYING_N); // запрашиваем номер воспроизводимого файла break; case' Карта памяти вставлена."; Break; case 0x3D: decodedMP3Answer + = "-> Завершено воспроизведение num" + String (ansbuf [6], DEC); // sendCommand (CMD_NEXT_SONG); // sendCommand (CMD_PLAYING_N); // запрашиваем номер воспроизводимого файла break; case 0x40: decodedMP3Answer + = "-> Ошибка"; перерыв; case 0x41: decodedMP3Answer + = "-> Данные получены правильно."; перерыв; case 0x42: decodedMP3Answer + = "-> Статус воспроизведения:" + String (ansbuf [6], DEC); break; case 0x48: decodedMP3Answer + = "-> Количество файлов:" + String (ansbuf [6], DEC); break; case 0x4C: decodedMP3Answer + = "-> Воспроизведение:" + String (ansbuf [6], DEC); break; case 0x4E: decodedMP3Answer + = "-> Количество файлов в папке:" + String (ansbuf [6], DEC); break; case 0x4F: decodedMP3Answer + = "-> Количество папок:" + String (ansbuf [6], DEC); break;} return decodedMP3Answer;} / ********************************* ************ ******************************** / / * Функция: отправить команду в MP3 * / / * Параметр: byte команда * / / * Параметр: параметр byte dat1 для команды * / / * Параметр: параметр byte dat2 для команды * / void sendCommand (byte command) {sendCommand (command, 0, 0); } void sendCommand (байтовая команда, байт данных1, байт данных2) {задержка (20); Send_buf [0] = 0x7E; // Send_buf [1] = 0xFF; // Send_buf [2] = 0x06; // Len Send_buf [3] = command; // Send_buf [4] = 0x01; // 0x00 NO, 0x01 обратная связь Send_buf [5] = dat1; // данные Send_buf [6] = dat2; // данные Send_buf [7] = 0xEF; // Serial.print ("Отправка:"); для (uint8_t я = 0; я <8; я ++) {mp3.write (Send_buf [я]); Serial.print (sbyte2hex (Send_buf )); } Serial.println (); } / ********************************************** ******************************** / / * Функция: sbyte2hex. Возвращает байтовые данные в формате HEX. * / / * Параметр: - uint8_t b. Байт для преобразования в HEX. * / / * Возврат: String * / String sbyte2hex (uint8_t b) {String shex; shex = "0X"; если (b <16) shex + = "0"; shex + = строка (b, HEX); shex + = ""; вернуть шекс; } / ********************************************** ******************************* / / * Функция: shex2int. Возвращает int из шестнадцатеричной строки. * / / * Параметр: s. char * s для преобразования в HEX. * / / * Параметр: n. длина char * s. * / / * Возврат: int * / int shex2int (char * s, int n) {int r = 0; for (int i = 0; i = '0' && s = 'A' && s <= 'F') {r * = 16; r + = (s - 'A') + 10; }} return r; } / ********************************************** ******************************* / / * Функция: sanswer. Возвращает строковый ответ от mp3-модуля UART. * / / * Параметр: - uint8_t b. пустота. * / / * Возврат: String. Если ответ хорошо сформулирован, ответьте. * / String sanswer (void) {uint8_t i = 0; Строка mp3answer = ""; // Получить только 10 байт while (mp3.available () && (i <10)) {uint8_t b = mp3.read (); ansbuf = b; i ++; mp3answer + = sbyte2hex (б); } // если формат ответа правильный. если ((ansbuf [0] == 0x7E) && (ansbuf [9] == 0xEF)) {return mp3answer; } return "???:" + mp3answer; }
Сначала мы определяем все программные переменные и адреса регистров доступа модуля YX5300.
#включают
#define ARDUINO_RX 5 // должен подключаться к TX модуля последовательного MP3-плеера #define ARDUINO_TX 6 // подключаться к RX модуля SoftwareSerial mp3 (ARDUINO_RX, ARDUINO_TX); статический int8_t Send_buf [8] = {0}; // Буфер для команд отправки. // ЛОКАЛЬНО ЛУЧШЕ static uint8_t ansbuf [10] = {0}; // Буфер для ответов. // ЛОКАЛЬНО ЛУЧШЕ String mp3Answer; // Ответ из MP3. String sanswer (недействительно); Строка sbyte2hex (uint8_t b); / ************ Командный байт ************************* / #define CMD_NEXT_SONG 0X01 // Воспроизвести далее песня. #define CMD_PREV_SONG 0X02 // Воспроизвести предыдущую песню. #define CMD_PLAY_W_INDEX 0X03 #define CMD_VOLUME_UP 0X04 #define CMD_VOLUME_DOWN 0X05 #define CMD_SET_VOLUME 0X06 #define CMD_SNG_CYCL_PLAY 0X08 // Единый цикл воспроизведения. #define CMD_SEL_DEV 0x09 #define CMD_SLEEP_MODE 0x0a #define CMD_WAKE_UP 0x0B #define CMD_RESET 0x0c #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_PLAY_FOLDER_FILE 0x0F #define CMD_STOP_PLAY 0x16 // Останов постоянно играет. #define CMD_FOLDER_CYCLE 0X17 #define CMD_SHUFFLE_PLAY 0x18 // #define CMD_SET_SNGL_CYCL 0X19 // Установить единичный цикл. #define CMD_SET_DAC 0x1a #define DAC_ON 0x00 #define DAC_OFF 0x01 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAYING_N 0x4C #define CMD_QUERY_STATUS 0x42 #define CMD_QUERY_VOLUME 0x43 #define CMD_QUERY_FLDR_TRACKS 0x4e #define CMD_QUERY_TOT_TRACKS 0x48 #define CMD_QUERY_FLDR_COUNT 0x4F / ********* *** Опитоны ************************** / #define DEV_TF 0X02 / ************** ************************************************* ***** / int number; byte estado; байтовый зуммер = 2; байтовый контакт = 0; byte SortNumber = 0; bool button = 0;
Шаг 8:
Эти адреса регистров используются для настройки работы модуля. Например, см. Этот регистрационный адрес ниже.
#define CMD_PLAY_W_INDEX 0X03
Адрес 0x03 определяется с именем CMD_PLAY_W_INDEX. Он используется для запуска песни по ее номеру, то есть вы вводите номер звука, и он будет воспроизведен.
Именно с этими значениями мы будем их использовать и настраивать работу нашего проекта.
После того, как вы определили различные адреса, которые будут использоваться, мы войдем в функцию настройки и настроим контакты и последовательную связь для нашего проекта.
Шаг 9: Функция Void Setup ()
Затем посмотрите функцию настройки void. Я выполнил все настройки контактов кнопок, последовательной связи модуля MP3 и инициализации модуля карты в MP3.
установка void ()
{Serial.begin (9600); mp3.begin (9600); задержка (500); for (контакт = 8; контакт <13; контакт ++) {pinMode (контакт, ВХОД); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); задержка (500); }
Я запустил последовательную связь для печати данных на серийном компьютере компьютера, а затем мы запустили последовательную связь через объект mp3.
Serial.begin (9600);
mp3.begin (9600); задержка (500);
Модуль mp3 управляется командами, полученными последовательным интерфейсом Arduino. В этом процессе мы использовали библиотеку SoftwareSerial и эмулировали серийный номер на цифровых выводах Arduino.
Таким образом, вы сможете использовать Arduino для управления модулем MP3 с помощью команд, отправленных на него.
Кроме того, мы выполнили настройку цифровых контактов и инициализацию модуля MP3 Card.
for (контакт = 8; контакт <13; контакт ++) {pinMode (контакт, ВХОД); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); задержка (500);
После настройки мы должны перейти к основной логике функции void loop.
Шаг 10: Основная функция Void Loop ()
Код очень прост, и вся логическая структура представлена ниже. Далее я объясню вам полную логику основной функции.
пустой цикл ()
{pin = 8; randomSeed (analogRead (A0)); numero = случайный (8, 12); SortNumber = число; число = число - 7; Serial.println (номер); sendCommand (0x03, 0, число); задержка (1000); сделать {button = digitalRead (контакт); Serial.println (кнопка); pin ++; если (вывод> 13) {вывод = 8; } Serial.println ("Varrendo…"); Serial.println (контакт); // задержка (1000); } while (кнопка! = 1); Serial.println («Сайу…»); если (кнопка == 1 && (контакт-1)! = Номер сортировки) {sendCommand (0x03, 0, 6); задержка (3000); } if (button == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); задержка (3000); } // Проверяем ответ. если (mp3.available ()) {Serial.println (decodeMP3Answer ()); } задержка (100); //Serial.println("Tocando musica… "); }
При каждом запуске цикла функции цикла мы будем генерировать новое значение от 8 до 12, чтобы генерировать звук гласной. Значение от 8 до 12 относится к цифровому штырю гласной.
Код для генерации случайного значения показан ниже.
pin = 8;
randomSeed (analogRead (A0)); numero = случайный (8, 12); SortNumber = число;
Кроме того, мы вычитаем 7 из суммы, взятой между 8 и 12. Это позволит нам указать позиции с 1 по 5 песен, записанных на карту памяти.
число = число - 7;
После этого я воспроизвел звук гласной, нарисованной на строке ниже.
sendCommand (0x03, 0, число);
задержка (1000);
Теперь настало важное время: момент, когда мы будем читать кнопку, нажатую ребенком. Часть кода представлена ниже.
делать
{button = digitalRead (контакт); Serial.println (кнопка); pin ++; если (вывод> 13) {вывод = 8; } Serial.println ("Varrendo…"); Serial.println (контакт); // задержка (1000); } while (кнопка! = 1);
Этот цикл будет выполняться до тех пор, пока пользователь не нажмет кнопки. Цикл позволяет сканировать 5 цифровых контактов, и в тот момент, когда ребенок нажимает одну из кнопок, он выйдет из цикла и проверит, правильно ли ребенок ответил.
Вы выполните проверку, используя приведенный ниже код.
if (button == 1 && (pin-1)! = SortNumber)
{sendCommand (0x03, 0, 6); задержка (3000); } if (button == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); задержка (3000); }
Первое условие будет выполнено, когда пользователь совершит ошибку, потому что была нажата кнопка, и сработавшее значение пина отличалось от нарисованного пина (SortNumber).
На этом этапе вы должны выполнить команду ниже.
sendCommand (0x03, 0, 6);
задержка (3000);
Эта команда используется для включения неправильного ответного тона. Наконец, у нас есть второе условие, которое будет использоваться, чтобы проверить, прав ли ребенок.
if (button == 1 && (pin-1) == SortNumber)
{sendCommand (0x03, 0, 7); задержка (3000); }
Шаг 11:
Если кнопка была нажата, а цифровой вывод, который был нажат, совпадает с нарисованным, система выдаст правильный ответ.
Как я вам объясняю, этот код очень прост и поможет любому ребенку развить свои знания гласных с помощью игры с Arduino.
На рисунке выше звуковой ящик исполняет песню, хранящуюся на SD-карте MP3-модуля YX5300.
Шаг 12: Заключение
Классное обучение необходимо постоянно менять, и Arduino может стать отличным союзником в создании увлекательных задач.
Благодаря этому проекту можно было разработать простое упражнение, которое может развить навыки детей за счет знания звука и написания каждой гласной.
В отличие от традиционных методов обучения, дети учатся в классе с помощью игр и электроники.
Шаг 13: Подтверждение
Этот проект был разработан благодаря поддержке и поощрению компании JLCPCB. Они поощряли образование и предлагали нам разработать игру гласных для обучения детей в классе.
Если вы хотите приобрести электронные пластинки Игры гласных, вы можете перейти по этой ссылке и приобрести 10 единиц за 2 доллара на JLCPCB.
Рекомендуемые:
Игра в 3D лабиринт с использованием Arduino: 8 шагов (с изображениями)
Игра в 3D-лабиринт с использованием Arduino: Здравствуйте, друзья, поэтому сегодня мы собираемся создать игру-лабиринт с использованием ARDUINO UNO. Поскольку Arduino Uno является наиболее часто используемой платой, очень круто создавать игры с ней. В этом руководстве давайте создадим игру-лабиринт, управляемую с помощью джойстиков. Не забывайте
Нажмите кнопку); // Игра с ЖК-дисплеем Arduino: 5 шагов (с изображениями)
Нажмите кнопку); // Игра с ЖК-дисплеем Arduino: недавно в Scouts я работал над значком за заслуги перед игровым дизайном. По одному из требований я создал эту игру с использованием Arduino, основанной на LED Rocker Game. Цель игры - набрать как можно больше очков. В начале т
Игра Arduino Wire: 7 шагов (с изображениями)
Arduino Wire Game: для этого проекта я использовал ссылку на этом веб-сайте и изменил его, чтобы создать новый проект. Этот проект называется Wire Game, где вы возьмете металлическую ручку и проведете ее сквозь проволоку, не касаясь ее. Если ручка касается провода
Игра Саймона - Веселая игра !: 5 шагов
Simon Game - Fun Game !: Справка: После долгих выходных вы должны очень постараться, чтобы выполнить все задания и работу, за которые вы отвечаете. Пора нам тренировать мозг, не так ли? Помимо этих скучных и бессмысленных игр, есть игра под названием Simon Game
Контроллер DIY на базе Arduino - Игровой контроллер Arduino PS2 - Игра в Tekken с DIY-геймпадом Arduino: 7 шагов
Контроллер DIY на базе Arduino | Игровой контроллер Arduino PS2 | Игра в Tekken с помощью DIY Arduino Gamepad: Здравствуйте, ребята, играть в игры всегда весело, но играть с вашим собственным игровым контроллером DIY еще веселее. Поэтому мы создадим игровой контроллер с использованием arduino pro micro в этих инструкциях