Timer1
- Войдите на сайт для отправки комментариев
Всем привет!
Прошу помочь понять библиотеку таймера
#include <TimerOne.h>
void setup()
{
Timer1.initialize(); // 1 секунда по умолчанию - то, что надо
Timer1.pwm(9, 512); // полсекунды светимся (512 / 1024), на полсекунды гасим
pinMode(10, OUTPUT);
Timer1.attachInterrupt(Timer1_action);
}
void Timer1_action()
{
// LED секунду горит, секунду - нет
digitalWrite(10, !digitalRead(10));
}
void loop()
{
// пока мы тут что-нибудь делаем, светодиоды мигают сами по себе
}
Этот пример нашел на одном сайте, я вот одного не понимаю, почему у них в коде два разных вывода? то есть они назначают 10 как аутпут, а до этого в команде pwm они работают с 9м.
И еще один вопрос: если открыть в ардуино иде библиотеку таймер1, то там есть такая команда digitalWrite( 13, digitalRead( 13 ) ^ 1 ); какой смысл этой команды?
я неправильно выразился, извиняюсь
смысл digilatWrite я понимаю, но почему digitalRead в первой степени?
Ладно, помогу недалеким.
https://prog-cpp.ru/c-operation/
Самое интересное тут то, что в сравнении с кем-то Вы тоже недалекий) Но за объяснение человеку, только начавшему изучение программирования, спасибо!
Самое интересное тут то, что в сравнении с кем-то Вы тоже недалекий)
воспринимайте это как "не далекий" - в смысле близкий :)
Qwone, а на первый вопрос ответишь?
Какой еще вопрос?
Цитата из первого поста:
я вот одного не понимаю, почему у них в коде два разных вывода? то есть они назначают 10 как аутпут, а до этого в команде pwm они работают с 9м.
я тоже не понимаю
Там так устроена библиотека. В ней два механизма. Этот метод void pwm(char pin, unsigned int duty)- прямое мигание на выводе.
void attachInterrupt(void (*isr)(), unsigned long microseconds) - дергать функцию пользователя.
почему digitalRead в первой степени?
Это ошибка, должен быть в кубе.