Soft PWM #
Для работы с функциями программной имитации PWM используйте инструкцию #include <softPwm.h>
.
softPwmCreate() #
Инициализирует процесс программной имитации функции широтно-импульсной модуляции выходного сигнала для указанного в параметре выходного контакта.
Синтаксис #
int softPwmCreate(int pin, int value, int range)
Параметры #
pin
- номер контакта.
value
- ширина импульса (0-range
).
range
- период ШИМ (рекомендуется использовать значение из интервала 100-255)
Возврат #
0 при успешном выполнении, или отрицательное значение в случае ошибки.
softPwmWrite() #
Изменяет ширину импульса программной имитации функции широтно-импульсной модуляции выходного сигнала для указанного в параметре выходного контакта.
Синтаксис #
void softPwmWrite(int pin, int value)
Параметры #
pin
- номер контакта.
value
- ширина импульса (0-range
).
Возврат #
Ничего.
softPwmStop() #
Завершает программную имитацию функции широтно-импульсной модуляции выходного сигнала для указанного в параметре выходного контакта.
Синтаксис #
void softPwmStop(int pin)
Параметры #
pin
- номер контакта.
Возврат #
Ничего.
Пример использования Soft PWM #
Код управляет изменением цветов RGB-светодиода подключенного к контактам PA8 - красный, PA9 - зеленый и PA10 - синий.
#include <stdlib.h>
#include "wiringRP.h"
#include "softPwm.h"
// Глобальные переменные и константы
const int LED_R = 8;
const int LED_G = 9;
const int LED_B = 10;
void setup() {
// Инициализация библиотек wiringRP
if(setupWiringRP(WRP_MODE_SUNXI) < 0)
exit(EXIT_FAILURE);
// Инициализация пользовательских объектов
pinMode(LED_R, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(LED_B, OUTPUT);
softPwmCreate(LED_R, 0, 255);
softPwmCreate(LED_G, 0, 255);
softPwmCreate(LED_B, 0, 255);
}
void loop() {
// плавное включение/выключение красного цвета
for (int i = 0; i <= 255; i++) {
softPwmWrite(LED_R, i);
delay(2);
}
for (int i = 255; i >= 0; i--) {
softPwmWrite(LED_R, i);
delay(2);
}
// плавное включение/выключение зеленого цвета
for (int i = 0; i <= 255; i++) {
softPwmWrite(LED_G, i);
delay(2);
}
for (int i = 255; i >= 0; i--) {
softPwmWrite(LED_G, i);
delay(2);
}
// плавное включение/выключение синего цвета
for (int i = 0; i <= 255; i++) {
softPwmWrite(LED_B, i);
delay(2);
}
for (int i = 255; i >= 0; i--) {
softPwmWrite(LED_B, i);
delay(2);
}
}
ONDESTROY() {
// Освобождение занятых ресурсов, выключение напряжения на пинах
softPwmStop(LED_R);
softPwmStop(LED_G);
softPwmStop(LED_B);
digitalWrite(LED_R, LOW);
digitalWrite(LED_G, LOW);
digitalWrite(LED_B, LOW);
pinMode(LED_R, DISABLE);
pinMode(LED_G, DISABLE);
pinMode(LED_B, DISABLE);
// Завершение работы библиотек
releaseWiringRP();
exit(0); // выход из программы
}
MAIN_WIRINGRP();
Soft Tone #
Для работы с функциями программной имитации функции частотно-импульсной модуляции используйте инструкцию #include <softTone.h>
.
softToneCreate() #
Инициализирует процесс программной имитации функции частотно-импульсной модуляции выходного сигнала для указанного в параметре выходного контакта.
Синтаксис #
int softToneCreate(int pin)
Параметры #
pin
- номер контакта.
Возврат #
0 при успешном выполнении, или отрицательное значение в случае ошибки.
softToneWrite() #
Изменяет частоту импульса программной имитации функции частотно-импульсной модуляции выходного сигнала для указанного в параметре выходного контакта.
Синтаксис #
void softToneWrite(int pin, int freq)
Параметры #
pin
- номер контакта.
freq
- частота импульса (0-5000).
Возврат #
Ничего.
softToneStop() #
Завершает программную имитацию функции частотно-импульсной модуляции выходного сигнала для указанного в параметре выходного контакта.
Синтаксис #
void softToneStop(int pin);
Параметры #
pin
- номер контакта.
Возврат #
Ничего.
Пример использования Soft Tone #
Код управляет генератором частот для воспроизведения мелодии на пьезоэлектрическом динамике подключенном к контакту PA8.
#include <stdlib.h>
#include "wiringRP.h"
#include "softTone.h"
// Глобальные переменные и константы
const int frq[17] = {440, 165, 440, 440, 165, 440, 330, 294, 262, 494, 440, 494, 262, 294, 330, 165, 440};
const int pause[17] = {250, 250, 250, 250, 250, 250, 125, 125, 125, 125, 125, 125, 125, 125, 250, 250, 250};
const int TONE_PIN = 8;
void setup() {
// Инициализация библиотек wiringRP
if(setupWiringRP(WRP_MODE_SUNXI) < 0)
exit(EXIT_FAILURE);
// Инициализация пользовательских объектов
pinMode(TONE_PIN, OUTPUT);
softToneCreate(TONE_PIN);
}
void loop() {
// Основной цикл программы
for (int j = 0; j < 17; j++) {
softToneWrite(TONE_PIN, frq[j]);
delay(pause[j]);
softToneWrite(TONE_PIN, 0);
delay(pause[j]);
}
delay(500);
}
ONDESTROY(){
// Освобождение занятых ресурсов, выключение напряжения на пинах
digitalWrite(TONE_PIN, LOW);
pinMode(TONE_PIN, DISABLE);
// Завершение работы библиотек
releaseWiringRP();
exit(0); // выход из программы
}
MAIN_WIRINGRP();
Soft Servo #
Для работы с функциями программной имитации импульсов для управления сервоприводами используйте инструкцию #include <softServo.h>
.
softServoSetup() #
Инициализирует процесс программной имитации импульсов для управления сервоприводами, подключенными к выходным контактам.
Синтаксис #
int softServoSetup(int p0, int p1, int p2, int p3, int p4, int p5, int p6, int p7)
Параметры #
p0
- номер контакта для 1-го сервопривода. p1
- номер контакта для 2-го сервопривода. p2
- номер контакта для 3-го сервопривода. p3
- номер контакта для 4-го сервопривода. p4
- номер контакта для 5-го сервопривода. p5
- номер контакта для 6-го сервопривода. p6
- номер контакта для 7-го сервопривода. p7
- номер контакта для 8-го сервопривода.
Для неиспользуемых параметров необходимо указать значение -1.
Возврат #
0 при успешном выполнении, или отрицательное значение в случае ошибки.
softServoWrite() #
Изменяет длительность управляющего импульса для указанного в параметре выходного контакта.
Синтаксис #
void softServoWrite(int pin, int value)
Параметры #
pin
- номер контакта.
value
- значение для вычисления импульса (-250 - 1250).
Возврат #
Ничего.
Пример использования Soft Servo #
Код управляет изменением угла поворота вала ротора сервопривода sg90 подключенного к контакту PA8.
#include <stdlib.h>
#include "wiringRP.h"
#include "softServo.h"
// Глобальные переменные и константы
const int SERVO_PIN = 8;
void setup() {
// Инициализация библиотек wiringRP
if(setupWiringRP(WRP_MODE_SUNXI) < 0)
exit(EXIT_FAILURE);
// Инициализация пользовательских объектов
softServoSetup(SERVO_PIN, -1, -1, -1, -1, -1, -1, -1);
}
void loop() {
// Основной цикл программы
// Поворот серводвигателя против часовой стрелки
for (int i = -250; i < 1250; i += 5) {
softServoWrite(SERVO_PIN, i);
delay(30);
}
// Поворот серводвигателя по часовой стрелке
for (int i = 1250; i > -250; i -= 5) {
softServoWrite(SERVO_PIN, i);
delay(30);
}
delay(2000);
}
ONDESTROY(){
// Освобождение занятых ресурсов, выключение напряжения на пинах
digitalWrite(SERVO_PIN, LOW);
pinMode(SERVO_PIN, DISABLE);
// Завершение работы библиотек
releaseWiringRP();
exit(0); // выход из программы
}
MAIN_WIRINGRP();