diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..932074b --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/pmw.iml b/.idea/pmw.iml new file mode 100644 index 0000000..f08604b --- /dev/null +++ b/.idea/pmw.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index 39f9e71..34f0c59 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -#8. Устройство управления контроллером ШИМ. +# 8. Устройство управления контроллером ШИМ. -##Устройство представляет из себя I2C ведущее устройство. Управляет устройством из задания 7. Имеет 6 кнопок: +## Устройство представляет из себя I2C ведущее устройство. Управляет устройством из задания 7. Имеет 6 кнопок: --Включить ШИМ. --Выключить ШИМ. --Увеличить частоту на 25% от текущего. --Уменьшить частоту на 20% от текущего. --Увеличить скважность. --Уменьшить скважность. \ No newline at end of file +- **Включить ШИМ. +- **Выключить ШИМ. +- **Увеличить частоту на 25% от текущего. +- **Уменьшить частоту на 20% от текущего. +- **Увеличить скважность. +- **Уменьшить скважность. \ No newline at end of file diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..68e93e6 --- /dev/null +++ b/main.cpp @@ -0,0 +1,37 @@ +// определяем пины, к которым подключена кнопка и ШИМ +#define BUTTON_PIN 2 +#define PWM_PIN 9 + +// определяем регистры ШИМ +#define TCCR1A_REG 0x80 +#define TCCR1B_REG 0x81 +#define OCR1A_REG 0x88 + +void setup() { + // настраиваем пин кнопки на вход с подтягивающим резистором + pinMode(BUTTON_PIN, INPUT_PULLUP); + + // настраиваем пин ШИМ на выход + pinMode(PWM_PIN, OUTPUT); + + // устанавливаем настройки ШИМа + TCCR1A = 0x82; // настройки регистра TCCR1A (включаем Fast PWM, устанавливаем режим non-inverting) + TCCR1B = 0x11; // настройки регистра TCCR1B (выбираем источник тактирования и устанавливаем prescaler) + OCR1A = 0x0000; // устанавливаем начальное значение ШИМа +} + +void loop() { + // считываем состояние кнопки + bool buttonState = digitalRead(BUTTON_PIN); + + // если кнопка нажата, включаем ШИМ + if (buttonState == LOW) { + // устанавливаем значение ШИМа + OCR1A = 0x0FFF; + } + // если кнопка не нажата, выключаем ШИМ + else { + // устанавливаем значение ШИМа в 0 + OCR1A = 0x0000; + } +} diff --git a/main.ino b/main.ino new file mode 100644 index 0000000..3fb9eb4 --- /dev/null +++ b/main.ino @@ -0,0 +1,37 @@ +//// определяем пины, к которым подключена кнопка и ШИМ +//#define BUTTON_PIN 2 +//#define PWM_PIN 9 +// +//// определяем регистры ШИМ +//#define TCCR1A_REG 0x80 +//#define TCCR1B_REG 0x81 +//#define OCR1A_REG 0x88 +// +//void setup() { +// // настраиваем пин кнопки на вход с подтягивающим резистором +// pinMode(BUTTON_PIN, INPUT_PULLUP); +// +// // настраиваем пин ШИМ на выход +// pinMode(PWM_PIN, OUTPUT); +// +// // устанавливаем настройки ШИМа +// TCCR1A = 0x82; // настройки регистра TCCR1A (включаем Fast PWM, устанавливаем режим non-inverting) +// TCCR1B = 0x11; // настройки регистра TCCR1B (выбираем источник тактирования и устанавливаем prescaler) +// OCR1A = 0x0000; // устанавливаем начальное значение ШИМа +//} +// +//void loop() { +// // считываем состояние кнопки +// bool buttonState = digitalRead(BUTTON_PIN); +// +// // если кнопка нажата, включаем ШИМ +// if (buttonState == LOW) { +// // устанавливаем значение ШИМа +// OCR1A = 0x0FFF; +// } +// // если кнопка не нажата, выключаем ШИМ +// else { +// // устанавливаем значение ШИМа в 0 +// OCR1A = 0x0000; +// } +//}