В этом проекте сделаем выключатель который будет выключаться и выключаться по хлопку.
Для этого нам понадобится:
attiny13: http://ali.pub/3i09aa
Микрофон: http://ali.pub/3i09fq
Реле: http://ali.pub/29qkrt
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
Схема подключения компонентов будет следующая:

За место светодиода можно также подключить и реле, эффект будет тот же.
Теперь давайте перейдем к программированию attiny13. Чтоб это сделать, нам нужно сначала настроить программу arduino ide, я описал данный процесс вот здесь.
Сам код программы выглядит вот таким образом:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define LED_PIN PB0 // пин для реле(светодиода)
#define MIC_PIN PB1 // пин для микрофона
static volatile uint8_t state = 0;
int
main(void)
{
uint8_t reset = 0, claps = 0;
/* setup */
DDRB |= _BV(LED_PIN);
MCUCR &= ~(_BV(ISC01)|_BV(ISC00));
GIMSK |= _BV(INT0);
sei();
/* loop */
while (1) {
/* если обнаружен одиночный хлопок, запустите процедуру */
if (state) {
claps++; // increment claps count
if (claps == 1) { // если это первый хлопок
reset = 0; // сбросить счетчик
} else if (claps == 2) { // если второй хлопок
PORTB ^= _BV(LED_PIN); // то либо включить либо выключить
claps = reset = 0; // и установить начальное значение
}
state = 0;
_delay_ms(200);
}
if (++reset >= 10) {
claps = state = reset = 0;
}
_delay_ms(100);
}
}
ISR(INT0_vect)
{
state = 1;
}
Сам код можно скачать отсюда: https://yadi.sk/d/49yFYUdnNjSHKA
Принцип работы очень простой, модуль микрофона умеет подавать сигнал по пину D0 когда улавливает какой либо шум. И получается, что как только мы совершаем хлопок, сигнал подается на пин D0 и улавливается контроллером attiny13 и контроллер ждет второго такого сигнала, если второй хлопок произошел меньше чем с интервалом в секунду, то attiny13 включает реле ( или светодиод) если же нет, то придется повторить попытку.
Видео: