Инструменты пользователя

Инструменты сайта


Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
конспект-arduino:мерзкое-пианино [2013/10/11 15:31] – [Список деталей для эксперимента] perepelkinконспект-arduino:мерзкое-пианино [2022/01/25 16:31] (текущий) – [Список деталей для эксперимента] mik
Строка 1: Строка 1:
 ====== Эксперимент 8. Мерзкое пианино  ====== ====== Эксперимент 8. Мерзкое пианино  ======
 [[бегущий-огонек|← Бегущий огонёк]] | [[конспект-arduino:|Оглавление]] | [[миксер|Миксер →]] [[бегущий-огонек|← Бегущий огонёк]] | [[конспект-arduino:|Оглавление]] | [[миксер|Миксер →]]
----- + 
-В этом эксперименте мы создаем маленькую клавиатуру на которой можно сыграть несколько нот.+В этом эксперименте мы создаем маленькую клавиатуруна которой можно сыграть несколько нот.
 ===== Прочтите перед выполнением ===== ===== Прочтите перед выполнением =====
  
Строка 10: Строка 10:
  
   * 1 плата [[amp>product/arduino-uno|Arduino Uno]]   * 1 плата [[amp>product/arduino-uno|Arduino Uno]]
-  * 1 беспаечная [[amp>collection/proto|макетная плата]]+  * 1 беспаечная [[amp>collection/breadboards|макетная плата]]
   * 1 [[amp>product/piezo-buzzer|пьезопищалка]]   * 1 [[amp>product/piezo-buzzer|пьезопищалка]]
   * 3 тактовых [[amp>product/tactile-button|кнопки]]   * 3 тактовых [[amp>product/tactile-button|кнопки]]
-  * 3 [[amp>product/resistor|резистора]] номиналом 10 кОм+  * 3 [[amp>product/resistor-10k|резистора]] номиналом 10 кОм
   * 10 проводов [[amp>product/wire-mm|«папа-папа»]]   * 10 проводов [[amp>product/wire-mm|«папа-папа»]]
  
Строка 24: Строка 24:
 ===== Принципиальная схема ===== ===== Принципиальная схема =====
  
-{{ :конспект-arduino:}}+{{ :конспект-arduino:8_dumb_piano_scheme.svg.png?nolink& |}}
  
 ===== Схема на макетке ===== ===== Схема на макетке =====
  
-{{ :конспект-arduino:}}+{{ :конспект-arduino:8_dumb_piano_bread.svg.png?nolink& |}}
  
 ===== Обратите внимание ===== ===== Обратите внимание =====
  
-  * Ножки тактовой кнопки, расположенные с одной стороны, разомкнуты, когда кнопка не нажата. Ножки, расположенные друг напротив друга на противоположных сторонах кнопки,  — одна «рельса». Воспользовавшись этим, мы можем расположить резистор с одной стороны макетки, а провод, подключаемый к порту Arduino, с другой стороны.+  * Ножки тактовой кнопки, расположенные с одной стороны, разомкнуты, когда кнопка не нажата. Ножки, расположенные друг напротив друга на противоположных сторонах макетки находятся на одной «рельсе». Воспользовавшись этим, мы можем расположить резистор с одной стороны макетки, а провод, подключаемый к порту Arduino, с другой стороны.
   * В данном эксперименте мы подключаем кнопки по [[кнопка|схеме]] с подтягивающим резистором.   * В данном эксперименте мы подключаем кнопки по [[кнопка|схеме]] с подтягивающим резистором.
-  * Для того, чтобы данный вариант программы работал, важно, чтобы кнопки были подключены к портам, находящимся рядом друг с другом (имеющим соседние номера).+  * Для того, чтобы данный вариант программы работал, важно, чтобы кнопки были подключены к портам, находящимся рядом друг с другом, т.е. имеющим соседние номера.
  
 ===== Скетч ===== ===== Скетч =====
Строка 79: Строка 79:
 ===== Пояснения к коду ===== ===== Пояснения к коду =====
  
-  * Благодаря тому, что в начале программы мы определили ''FIRST_KEY_PIN'' и ''KEY_COUNT'', мы можем подключать произвольное количество кнопок к любым идущим друг за другом цифровым пинам, и для корректировки программы нам не придется менять параметры цикла ''for''но только изменить эти константы:+  * Благодаря тому, что в начале программы мы определили ''FIRST_KEY_PIN'' и ''KEY_COUNT'', мы можем подключать произвольное количество кнопок к любым идущим друг за другом цифровым пинам, и для корректировки программы нам не придется менять параметры цикла ''for''. Изменить понадобится лишь эти константы:
     * цикл в любом случае пробегает от 0 до ''KEY_COUNT'';     * цикл в любом случае пробегает от 0 до ''KEY_COUNT'';
     * перед считыванием порта мы задаем смещение на номер первого используемого порта — ''FIRST_KEY_PIN''.     * перед считыванием порта мы задаем смещение на номер первого используемого порта — ''FIRST_KEY_PIN''.
-  * Функция ''digitalRead(pin)'' возвращает состояние порта, номер которого передан ей параметром ''pin''. Это может быть состояние HIGH или LOW (высокое напряжение или низкое, 1 или 0, true или false).+  * Функция ''digitalRead(pin)'' возвращает состояние порта, номер которого передан ей параметром ''pin''. Это может быть состояние ''HIGH'' или ''LOW''. Или, выражаясь иначе: высокое напряжение или низкое, 1 или 0, ''true'' или ''false''
   * Поскольку мы получаем с порта одно из двух состояний, мы сохраняем его в переменную уже знакомого нам типа ''boolean'', и можем работать с ней как с логическим значением.   * Поскольку мы получаем с порта одно из двух состояний, мы сохраняем его в переменную уже знакомого нам типа ''boolean'', и можем работать с ней как с логическим значением.
-  * Мы используем логический оператор отрицания ''!'', «не». Если ''keyUp'' имеет значение 0, выражение ''**!**keyUp'' будет иметь значение 1 и наоборот. +  * Мы используем логический оператор отрицания «не» ''!''. Если ''keyUp'' имеет значение 0, выражение ''**!**keyUp'' будет иметь значение 1 и наоборот. 
-  * Поскольку мы собрали схему с подтягивающим резистором, при нажатии кнопки мы будем получать на соответствующем порте 0. Как мы знаем, действия, описанные в условном операторе ''if'', выполняются, когда его условие имеет значение «истина», 1, поэтому нужное нам действие будет выполняться при инвертированном значении состояния порта +  * Поскольку мы собрали схему с подтягивающим резистором, при нажатии кнопки мы будем получать на соответствующем порте 0. 
 +  * Действия, описанные в условном выражении ''if'', выполняются, когда его условие имеет значение «истина» (единица). Поэтому для выполнения действия по нажатию, мы инвертируем сигнал с кнопки.
 ===== Вопросы для проверки себя ===== ===== Вопросы для проверки себя =====