Robofun 機器人論壇

標題: 伺服馬達與雨滴感測器程式用在一起的問題 [打印本頁]

作者: 張弘慶    時間: 2018-1-31 22:47
標題: 伺服馬達與雨滴感測器程式用在一起的問題
有顏色那塊不知道要怎麼改因為我是用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);
}
作者: 超新手    時間: 2018-2-1 06:55
既然是使用伺服機
那就要使用.write 去控制伺服機
,而不是 digitalwrite
所以只要
1.把 digitalWrite(servo, HIGH); 全部
改成 myservo.write(120);
2.把 digitalWrite(servo, LOW); 全部
改成 myservo.write(90);
就可以了
作者: 張弘慶    時間: 2018-2-1 16:45
超新手 發表於 2018-2-1 06:55
既然是使用伺服機
那就要使用.write 去控制伺服機
,而不是 digitalwrite

當500以下轉動後可以設定時間讓它停止嗎?
那當1000以上要轉回也是一樣的道理?


作者: 超新手    時間: 2018-2-1 17:39
>當500以下轉動後可以設定時間讓它停止嗎?
是要多久才會停止?
停止之後呢?


作者: 張弘慶    時間: 2018-2-1 21:17
本帖最後由 張弘慶 於 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);
}

作者: 超新手    時間: 2018-2-2 06:28
”val到1000以上做反方向迴轉”的做法, 和
你現在”val到500以上停止”的做法是不多的
照著打, 小改一下即可
另外, 那個 countval 改成 =500;的用意是?
這樣寫是錯的
如果你想要讓伺服機快點轉(目前約 35*2=70秒),
應該把 35 的值改小點
而不是改 counval =0;
作者: 張弘慶    時間: 2018-4-3 09:48
超新手 發表於 2018-2-2 06:28
”val到1000以上做反方向迴轉”的做法, 和
你現在”val到500以上停止”的做法是不多的
照著打, 小改一下 ...

當運轉時用時間控制伺服馬達運轉的時間有辦法嗎?




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2