Эксперимент Маячок


Вопросы для проверки себя



бет26/45
Дата13.02.2023
өлшемі1,82 Mb.
#67503
түріЗакон
1   ...   22   23   24   25   26   27   28   29   ...   45
Вопросы для проверки себя

  1. Что необходимо для определения собственной функции?

  2. Что означает ключевое слово void?

  3. Как ведет себя программа при упоминании одной переменной с разных сторон от оператора присваивания =?

Задания для самостоятельного решения

  1. Доработайте код таким образом, чтобы шаг изменения яркости настраивался в одном месте.

  2. Создайте еще одну функцию и переделайте код так, чтобы одна функция отвечала за отслеживание нажатий, а другая — за вычисление яркости светодиода и возвращала его в analogWrite.


Эксперимент 12. Кнопочные ковбои
← Светильник с кнопочным управлением | Оглавление | Секундомер →

В этом эксперименте мы создаем игрушку на реакцию: кто быстрее нажмет кнопку по сигналу.


Список деталей для эксперимента

  • 1 плата Arduino Uno

  • 1 беспаечная макетная плата

  • 2 тактовых кнопки

  • резистора номиналом 220 Ом

  • светодиода

  • пьезопищалка

  • 10 проводов «папа-папа»

Принципиальная схема

Схема на макетке

Скетч
p120_button_cowboys.ino
#define BUZZER_PIN 12 // пин с пищалкой
#define PLAYER_COUNT 2 // количество игроков-ковбоев
// вместо перечисления всех пинов по-одному, мы объявляем пару
// списков: один с номерами пинов с кнопками, другой — со
// светодиодами. Списки также называют массивами (англ. array)
int buttonPins[PLAYER_COUNT] = {3, 13};
int ledPins[PLAYER_COUNT] = {9, 11};
void setup()
{
pinMode(BUZZER_PIN, OUTPUT);
for (int player = 0; player < PLAYER_COUNT; ++player) {
// при помощи квадратных скобок получают значение в массиве
// под указанным в них номером. Нумерация начинается с нуля
pinMode(ledPins[player], OUTPUT);
pinMode(buttonPins[player], INPUT_PULLUP);
}
}
void loop()
{
// даём сигнал «пли!», выждав случайное время от 2 до 7 сек
delay(random(2000, 7000));
tone(BUZZER_PIN, 3000, 250); // 3 килогерца, 250 миллисекунд
for (int player = 0; ; player = (player+1) % PLAYER_COUNT) {
// если игрок номер «player» нажал кнопку...
if (!digitalRead(buttonPins[player])) {
// ...включаем его светодиод и сигнал победы на 1 сек
digitalWrite(ledPins[player], HIGH);
tone(BUZZER_PIN, 4000, 1000);
delay(1000);
digitalWrite(ledPins[player], LOW);
break; // Есть победитель! Выходим (англ. break) из цикла
}
}
}


Достарыңызбен бөлісу:
1   ...   22   23   24   25   26   27   28   29   ...   45




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет