В этом проекте я хочу плавного вращения сервопривода (вывод (D10) периодически, когда период времени выбирается потенциометром (на самом деле я буду использовать датчик давления на этом выводе, теперь он мне недоступен, поэтому я использую потенциометр g). Период времени, управляемый изменением положения потенциометра (два) на выводе A0. Два светодиода (синий и красный) (D7, D9) (в этом выводе я буду использовать два сервоконтроллера сервомотора) мигают с тем же периодом, а другие мигают желтым светодиодом тот же период, но противоположный. Все работает за исключением серво, вращение которого не является плавным. Это вращение иногда поддерживает надлежащий период и иногда без необходимости останавливается. Прежде чем я попробовал TimerOne и Servo Library, но они создают некоторый конфликт и не загружаются в Board.I использую Arduino Uno Совет. Какое изменение я должен сделать или в Схеме или в Коде. Я новичок в этой области. Любая любезная помощь будет благодарна мне. И мой код:
#include <TimerOne.h>
#include "ServoTimer2.h"
const int potPin = A0;
const int bluePin =7;
const int redPin =8;
const int whitePin = 9;
const int yellowPin = 11;
const int myServoPin = 10;
ServoTimer2 myServo;
int angle;
int speed;
int potVal;
int breathPress;
int lowPress=12;
int upPress=24;
int lowCount=0;
int upCount =0 ;
int time1;
int time2;
int timeDiff;
int temp;
int potPin1 = A2;
int breathRatio;
int ratioVal;
void setup() {
pinMode(potPin,INPUT);
pinMode(bluePin,OUTPUT);
pinMode(redPin,OUTPUT);
pinMode(potPin1,INPUT);
pinMode(whitePin,OUTPUT);
pinMode(yellowPin,OUTPUT);
myServo.attach(10);
Timer1.initialize(100000);
Timer1.attachInterrupt(Blink);
Serial.begin(9600);
}
void loop() {
breathRatio=analogRead(potPin1);
ratioVal = map(breathRatio,0,1023,1,6);
digitalWrite(bluePin,HIGH);
digitalWrite(yellowPin,HIGH);
digitalWrite(whitePin,LOW);
myServo.write(90);
delay(timeDiff);
digitalWrite(bluePin,LOW);
digitalWrite(yellowPin,LOW);
digitalWrite(whitePin,HIGH);
myServo.write(60);
delay(timeDiff);
}
void Blink(){
potVal = analogRead(potPin);
breathPress = map(potVal,0,1023,0,30);
Serial.print("Pressure=");
Serial.println(breathPress);
Serial.println(time1);
Serial.println(time2);
Serial.print("Time Difference :");
Serial.println(timeDiff);
if(breathPress<10){
digitalWrite(redPin,LOW);
}
if(breathPress>27){
digitalWrite(redPin,LOW);
}
else {
digitalWrite(redPin,HIGH);
}
if ((breathPress - 10 )<= 0){
lowCount = 1;
upCount =0;
time1 = millis();
}
if((breathPress - 27)>=0){
lowCount = 0;
upCount = 1;
time2 = millis();
}
if(time1-time2 >= 0){
timeDiff = time1-time2;
}
else{
timeDiff = time2-time1;
}
И результат вывода будет выглядеть как
13096
14994
Time Difference :1898
Pressure=15
13096
14994
Time Difference :1898
Pressure=15
13096
14994
Time Difference :1898
Pressure=15
13096
14994
Time Difference :1898
Pressure=15
}