Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Топ:
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Интересное:
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2018-01-30 | 2894 |
5.00
из
|
Заказать работу |
|
|
Сontinue пропускает оставшиеся операторы в текущем шаге цикла. Вместо них выполняется проверка условного выражения цикла, а break используется для принудительного выхода из циклов do, for или while, не дожидаясь завершения цикла по условию.
Задания для самостоятельного решения
1.Сделайте напряженный вариант игры: пусть интервал между сигналами будет в диапазоне от 10 до 15 секунд.
Листинг:
1. #defineBUZZER_PIN 12 // порт с пьезодинамиком
2. #define PLAYER_COUNT 2 // количество игроков-ковбоев
3. // вместо перечислени¤ всех портов по-одному, мы объ¤вл¤ем пару
4. // списков: один с номерами портов с кнопками, другой Ч со
5. // светодиодами. —писки также называют массивами (англ. array)
6. int buttonPins[PLAYER_COUNT] = {2, 3};
7. int ledPins[PLAYER_COUNT] = {9, 11};
8. void setup()
9. {
10. pinMode(BUZZER_PIN, OUTPUT);
11. for (int player = 0; player < PLAYER_COUNT; ++player) {
12. // при помощи квадратных скобок получают значение в массиве
13. // под указанным в них номером.Ќумераци¤ начинаетс¤ с нул¤
14. pinMode(ledPins[player], OUTPUT);
15. pinMode(buttonPins[player], INPUT_PULLUP);
16. }
17. }
18. void loop()
19. {
20. // даем сигнал Ђпли!ї, выждав случайное врем¤ от 2 до 7 сек
21. delay(random(10000, 15000));
22. tone(BUZZER_PIN, 3000, 250); // 3 килогерца, 250 миллисекунд
23. for (int player = 0;; player = (player + 1) % PLAYER_COUNT) {
24. // если игрок номер Ђplayerї нажал кнопку...
25. if (!digitalRead(buttonPins[player])) {
26. //...включаем его светодиод и сигнал победы на 1 сек
27. digitalWrite(ledPins[player], HIGH);
28. tone(BUZZER_PIN, 4000, 1000);
29. delay(1000);
30. digitalWrite(ledPins[player], LOW);
31. }
32. }
33. }
3.Добавьте в игру еще двух ковбоев!
Листинг:
1. #defineBUZZER_PIN 13 // порт с пьезодинамиком
2. #define PLAYER_COUNT 4 // количество игроков-ковбоев
3. // вместо перечислени¤ всех портов по-одному, мы объ¤вл¤ем пару
4. // списков: один с номерами портов с кнопками, другой Ч со
5. // светодиодами. —писки также называют массивами (англ. array)
|
6. int buttonPins[PLAYER_COUNT] = {2, 3, 4, 5};
7. int ledPins[PLAYER_COUNT] = {9, 10, 11, 12};
8. void setup()
9. {
10. pinMode(BUZZER_PIN, OUTPUT);
11. for (int player = 0; player < PLAYER_COUNT; ++player) {
12. // при помощи квадратных скобок получают значение в массиве
13. // под указанным в них номером. Ќумераци¤ начинаетс¤ с нул¤
14. pinMode(ledPins[player], OUTPUT);
15. pinMode(buttonPins[player], INPUT_PULLUP);
16. }
17. }
18. void loop()
19. {
20. // даем сигнал Ђпли!ї, выждав случайное врем¤ от 2 до 7 сек
21. delay(random(10000, 15000));
22. tone(BUZZER_PIN, 3000, 250); // 3 килогерца, 250 миллисекунд
23. for (int player = 0;; player = (player + 1) % PLAYER_COUNT)
24. {
25. // если игрок номер Ђplayerї нажал кнопку...
26. if (!digitalRead(buttonPins[player])) {
27. //...включаем его светодиод и сигнал победы на 1 сек
28. digitalWrite(ledPins[player], HIGH);
29. tone(BUZZER_PIN, 4000, 1000);
30. delay(1000);
31. digitalWrite(ledPins[player], LOW);
32. }
33. }
34. }
Эксперимент 13. Секундомер
В этом эксперименте мы создаем секундомер, который считает до 10.
Принципиальная схема
Код
1. #define FIRST_SEGMENT_PIN 2
2. #define SEGMENT_COUNT 7
3. byte numberSegments[10] = {
4. 0b00111111, 0b00001010, 0b01011101, 0b01011110, 0b01101010,
5. 0b01110110, 0b01110111, 0b00011010, 0b01111111, 0b01111110,
6. };
7. void setup()
8. {
9. for (int i = 0; i < SEGMENT_COUNT; ++i)
10. pinMode(i + FIRST_SEGMENT_PIN, OUTPUT);
11. }
12. void loop()
13. {
14. int number = (millis() / 1000) % 10;
15. int mask = numberSegments[number];
16. for (int i = 0; i < SEGMENT_COUNT; ++i) {
17. boolean enableSegment = bitRead(mask, i);
18. digitalWrite(i + FIRST_SEGMENT_PIN, enableSegment);
19. }
20. }
Вопросы для проверки себя
|
|
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!