伺服馬達與雨滴感測器程式用在一起的問題
有顏色那塊不知道要怎麼改因為我是用360連續式的伺服馬達又要使感測器到<500後開始動
求解
#include <Servo.h>
Servo myservo;
int rainsense= A1;
int servo= 9;
int countval= 0;
void setup(){
Serial.begin(9600);
pinMode(servo, OUTPUT);
pinMode(rainsense, INPUT);
myservo.attach(9);
myservo.write(120);
delay(5000);
myservo.write(90);
delay(1000);
}
void loop(){
int rainSenseReading = analogRead(rainsense);
Serial.println(rainSenseReading);
delay(1000);
if (countval >= 35){
Serial.print("Heavy rain");
digitalWrite(servo, HIGH);
}
if (rainSenseReading <500){
countval++;
}
else if (rainSenseReading >500) {
digitalWrite(servo, LOW);
countval = 0;
}
delay(1000);
} 既然是使用伺服機
那就要使用.write 去控制伺服機
,而不是 digitalwrite
所以只要
1.把 digitalWrite(servo, HIGH); 全部
改成 myservo.write(120);
2.把 digitalWrite(servo, LOW); 全部
改成 myservo.write(90);
就可以了 超新手 發表於 2018-2-1 06:55
既然是使用伺服機
那就要使用.write 去控制伺服機
,而不是 digitalwrite
當500以下轉動後可以設定時間讓它停止嗎?
那當1000以上要轉回也是一樣的道理?
>當500以下轉動後可以設定時間讓它停止嗎?
是要多久才會停止?
停止之後呢?
本帖最後由 張弘慶 於 2018-2-1 21:22 編輯
超新手 發表於 2018-2-1 17:39
>當500以下轉動後可以設定時間讓它停止嗎?
是要多久才會停止?
停止之後呢?
這一段有辦法控制它轉的時間嗎?
val到500以下就會一直轉
之後val到1000一上再做反方向迴轉
#include <Servo.h>
Servo myservo;
int rainsense= A1;
int servo= 9;
int countval= 0;
void setup(){
Serial.begin(9600);
pinMode(servo, OUTPUT);
pinMode(rainsense, INPUT);
myservo.attach(9);
myservo.write(120);
delay(0);
myservo.write(90);
delay(0);
}
void loop(){
int rainSenseReading = analogRead(rainsense);
Serial.println(rainSenseReading);
delay(1000);
if (countval >= 35){
Serial.print("Heavy rain");
myservo.write(120);
}
if (rainSenseReading <500){
countval++;
}
else if (rainSenseReading >500) {
myservo.write(90);
countval =500;
}
delay(1000);
} ”val到1000以上做反方向迴轉”的做法, 和
你現在”val到500以上停止”的做法是不多的
照著打, 小改一下即可
另外, 那個 countval 改成 =500;的用意是?
這樣寫是錯的
如果你想要讓伺服機快點轉(目前約 35*2=70秒),
應該把 35 的值改小點
而不是改 counval =0; 超新手 發表於 2018-2-2 06:28
”val到1000以上做反方向迴轉”的做法, 和
你現在”val到500以上停止”的做法是不多的
照著打, 小改一下 ...
當運轉時用時間控制伺服馬達運轉的時間有辦法嗎?
頁:
[1]