555 задаёт такт плате
Выход таймера идёт на вход платы: скетч считает импульсы и печатает частоту.

Что понадобится
- Arduino Uno
- Таймер 555
- Резистор (4.7 кОм) × 2
- Конденсатор (100 мкФ)
Как подключить
| Откуда | Куда | |||
|---|---|---|---|---|
| Arduino Uno | 5V | → | Таймер 555 | VCC |
| Arduino Uno | 5V | → | Таймер 555 | RESET |
| Таймер 555 | GND | → | Arduino Uno | GND |
| Arduino Uno | 5V | → | Резистор 1 | 1 |
| Резистор 1 | 2 | → | Таймер 555 | DISCH |
| Таймер 555 | DISCH | → | Резистор 2 | 1 |
| Резистор 2 | 2 | → | Таймер 555 | THRES |
| Таймер 555 | THRES | → | Таймер 555 | TRIG |
| Таймер 555 | THRES | → | Конденсатор | 1 |
| Конденсатор | 2 | → | Arduino Uno | GND |
| Таймер 555 | OUT | → | Arduino Uno | D2 |
Скетч
// Таймер 555 генерирует импульсы сам, а плата их только считает —
// так делают, когда нужен стабильный такт, не зависящий от загруженности
// микроконтроллера.
//
// ВАЖНО: цифровой вход в симуляторе читает то, что подано на него схемой,
// поэтому считаем фронты в цикле, без прерываний.
const int CLK = 2;
int pulses = 0;
bool last = LOW;
unsigned long windowStart = 0;
void setup() {
pinMode(CLK, INPUT);
Serial.begin(9600);
windowStart = millis();
}
void loop() {
bool now = digitalRead(CLK);
if (last == LOW && now == HIGH) pulses++;
last = now;
if (millis() - windowStart >= 5000) {
Serial.print("импульсов за 5 с: ");
Serial.print(pulses);
Serial.print(" → ");
Serial.print(pulses / 5.0);
Serial.println(" Гц");
pulses = 0;
windowStart = millis();
}
delay(5);
}
Ещё примеры с деталью «Таймер 555»
Попробуйте сами
Симулятор работает прямо в браузере: схему можно менять, код — править, а результат видно сразу. Бесплатно, без установки и регистрации.
Открыть «555 задаёт такт плате» в симуляторе