Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 6515|回復: 6
打印 上一主題 下一主題

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 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);
}
2#
發表於 2018-2-1 06:55:13 | 只看該作者
既然是使用伺服機
那就要使用.write 去控制伺服機
,而不是 digitalwrite
所以只要
1.把 digitalWrite(servo, HIGH); 全部
改成 myservo.write(120);
2.把 digitalWrite(servo, LOW); 全部
改成 myservo.write(90);
就可以了
3#
 樓主| 發表於 2018-2-1 16:45:11 | 只看該作者
超新手 發表於 2018-2-1 06:55
既然是使用伺服機
那就要使用.write 去控制伺服機
,而不是 digitalwrite

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

4#
發表於 2018-2-1 17:39:33 | 只看該作者
>當500以下轉動後可以設定時間讓它停止嗎?
是要多久才會停止?
停止之後呢?

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

當運轉時用時間控制伺服馬達運轉的時間有辦法嗎?
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-11-23 17:32 , Processed in 0.071795 second(s), 6 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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