Не подумайте, что в основе этого проекта лежит шарикобоязнь. Мы просто воспользуемся платой Arduino для управления прикрепленным к воздушному шарику резистором, играющим роль нагревательного элемента. По истечении случайного промежутка времени резистор включится и, разогревшись, заставит шарик лопнуть (рисунок ниже).
- Установка, заставляющая шарик лопнуть, в сборе
Учтите, что этот проект весьма опасный нагрева резистора, достаточного для того, чтобы шарик лопнул, вполне хватит и для нанесения вреда экспериментатору. В ходе эксперимента вполне может даже пойти дымок.
ОПАСНОСТЬ ОЖОГА
В этом проекте нагрев резистора ведет к тому, чтобы шарик лопнул, а значит, он достаточно горяч и для того, чтобы подпалить пальцы экспериментатора. Пока на резистор подается питание, его нельзя касаться! Прикоснуться к резистору можно не ранее, чем через 30 секунд после отключения питания.
Существует также некоторый риск устроить пожар, поэтому, на всякий случай, под рукой лучше иметь огнетушитель. Кроме того, при схлопывании шарика резистор может с него слететь. И чтобы избежать попадания горячего резистора в глаз, во время эксперимента следует пользоваться защитными очками.
Комплектующие
В этом эксперименте для работы с Arduino понадобятся следующие комплектующие:
R1, R3 - Резистор 470 Ом 0,25 Вт
R2 - Резистор 10 Ом 0,25 Вт
Q1 - Составной транзистор МРЅА14
LED1 - Красный светодиод
400-точечная беспаечная макетная плата.
Перемычки
Следует приобрести несколько резисторов по 10 Ом, поскольку они, скорее всего, в ходе эксперимента буквально превратятся в дым.
Схема проекта
Когда сработает составной транзистор, напряжение на резисторе достигнет порядка 3,5 В.
При этом через резистор пойдет ток:
3,5 В/10 Ом = 350 мА
Такой ток выдержит любое USB-устройство, обеспечивающее питание для этого проекта.
Тепловая мощность, выделившаяся на резисторе, составит: I x V = 350 мА х 3,5 В = 1,225 Вт
Это намного больше номинальной мощности в 0,25 Вт, на которую рассчитан резистор, тем не менее, даже при такой перегрузке он сможет продержаться достаточно долго, чтобы шарик успел лопнуть.
На рисунке ниже показана компоновка макетной платы для этого проекта.
- Компоновка макетной платы для проекта с шариком
Обратите внимание: резистор должен быть надежно присоединен к разъемам питающих его проводов, чтобы он не болтался в них в момент, когда шарик лопнет.
- Подключение выводов резистора
Программа
В качестве инициатора пуска в этом проекте используется кнопка сброса Arduino. Программа Arduino запускается сразу после загрузки, так что пока вы не готовы лопнуть шарик, один из проводов, идущих к резистору, следует держать отключенным.
Перейдем к скетчу:
Код: Выделить всё
const int popPin = 11;
const int minDelay = 20; // Seconds (1)
const int maxDelay = 200; // Seconds
const int onTime = 15; // Seconds (2)
void setup() {
pinMode(popPin, OUTPUT);
randomSeed(analogRead(0)); // (3)
long pause = random(minDelay, maxDelay+1); // (4)
delay(pause * 1000); // (5)
digitalWrite(popPin, HIGH); // (6)
delay(onTime * 1000);
digitalWrite(popPin, LOW);
}
void loop() {
}
Уточним некоторые моменты скетча по пунктам, воспользовавшись разметкой строк, сделанной в комментариях:
1. Константы
minDelay и
maxDelay задают границы допустимого диапазона времени, в который на резистор может быть подано питание, что приведет к схлопыванию шарика.
2. Константа
оnTime определяет, как долго резистор должен быть включен. Чтобы правильно подобрать ее значение, потребуется провести ряд экспериментов. Резистор не следует держать включенным длительное время, иначе он быстро выйдет из строя.
3. Случайные числа в Arduino С на самом деле не совсем случайные они представляют собой часть длинной псевдослучайной последовательности. Чтобы получить гарантированно разную задержку при каждом старте программы, в этой строке устанавливается позиция в псевдослучайной последовательности, основанная на чтении значения аналогового входа А0. Поскольку этот вход ни к чему не подключен, и на него действуют помехи, то значение на нем можно считать более или менее случайным.
4. Пауза перед включением резистора определяется функцией
random, возвращающей случайное число, находящееся между двумя значениями, задаваемыми как параметры функции. Ко второму параметру добавляется 1, чтобы диапазон был всегда реализуемым. Чтобы диапазон задержек мог выходить за пределы 32 секунд, используется переменная типа
long, поскольку тип
int может содержать только числа до 32 767.
5. Задержка включения в секундах.
6. Включение транзистора и подача питания на резистор, задержка во включенном состоянии на время
onTime() и отключение резистора.
Загружаем и выполняем программу
На этапе подготовки проекта к выполнению лучше сначала установить значения переменных
mіnDelay и
maxDelay равными 2 и 3 соответственно - это добавит вам уверенности, что время, требующееся на то, чтобы шарик под нагревом лопнул, выбрано правильно.
Приклейте резистор к шарику липкой лентой и прикрутите выводы резистора к питающим проводам, а провода подключите к макетной плате. Нажмите кнопку сброса и ждите подрыва шарика.