Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 110|回復: 5

伺服馬達與雨滴感測器程式用在一起的問題

[複製鏈接]
發表於 2018-1-31 22:47:46 | 顯示全部樓層 |閱讀模式
有顏色那塊不知道要怎麼改因為我是用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:13 | 顯示全部樓層
既然是使用伺服機
那就要使用.write 去控制伺服機
,而不是 digitalwrite
所以只要
1.把 digitalWrite(servo, HIGH); 全部
改成 myservo.write(120);
2.把 digitalWrite(servo, LOW); 全部
改成 myservo.write(90);
就可以了
 樓主| 發表於 2018-2-1 16:45:11 | 顯示全部樓層
超新手 發表於 2018-2-1 06:55
既然是使用伺服機
那就要使用.write 去控制伺服機
,而不是 digitalwrite

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

發表於 2018-2-1 17:39:33 | 顯示全部樓層
>當500以下轉動後可以設定時間讓它停止嗎?
是要多久才會停止?
停止之後呢?

 樓主| 發表於 2018-2-1 21:17:07 | 顯示全部樓層
本帖最後由 張弘慶 於 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:35 | 顯示全部樓層
”val到1000以上做反方向迴轉”的做法, 和
你現在”val到500以上停止”的做法是不多的
照著打, 小改一下即可
另外, 那個 countval 改成 =500;的用意是?
這樣寫是錯的
如果你想要讓伺服機快點轉(目前約 35*2=70秒),
應該把 35 的值改小點
而不是改 counval =0;
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2018-2-22 13:05 , Processed in 0.146610 second(s), 16 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表