Hi There,
I'm trying to control a ducted fan with a brushless motor. What I want to have it do is when i press a button have it go full speed. I tryed modifying an existing sketch that sweeps the speed of the motor up and down, but I cant seem to get it to work. so any help or advice would be greatly appreciated.
Thanks
This is a copy of the sketch I'm working from:
[code#] include <Servo.h>
Servo myservo;
void arm(){
// arm the speed controller, modify as necessary for your ESC
Serial.println("arming");
setSpeed(30);
delay(2000);
setSpeed(90);
delay(2000);
Serial.println("armed");
setSpeed(30);
delay(2000);
}
void setSpeed(int speed){
// speed is from 0 to 100 where 0 is off and 100 is maximum speed
//the following maps speed values of 0-100 to angles from 0-180,
int angle = map(speed, 0, 100, 0, 180);
myservo.write(angle);
}
void setup()
{
Serial.begin(115200);
myservo.attach(9);
arm();
}
void loop()
{
int speed;
Serial.println("Sweeping up");
for(speed = 37; speed <= 90; speed += 1) {
setSpeed(speed);
Serial.println(speed);
delay(100);
}
setSpeed(30);
delay(1000);
Serial.println("Sweeping down");
for(speed = 90; speed > 37; speed -= 1) {
setSpeed(speed);
Serial.println(speed);
delay(100);
}
Serial.println("30 halting...");
setSpeed(30);
delay(5000);
} [/code]
Controlling a ducted fan
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
- adafruit_support_bill
- Posts: 88154
- Joined: Sat Feb 07, 2009 10:11 am
Re: Controlling a ducted fan
Does the sweep sketch work? I don't see any button code. What have you tried that didn't work.
-
- Posts: 9
- Joined: Fri Nov 16, 2012 2:32 am
Re: Controlling a ducted fan
thanks for your reply. That's the original sketch it works to sweep the motor speed up and down.
this is my modification
It turns the motor on full speed then off, but no button functionality.
thanks.
this is my modification
Code: Select all
#include <Servo.h>
Servo myservo;
int switchPin = 8;
void arm(){
// arm the speed controller, modify as necessary for your ESC
Serial.println("arming");
setSpeed(30);
delay(2000);
setSpeed(90);
delay(2000);
Serial.println("armed");
setSpeed(30);
delay(2000);
}
void setSpeed(int speed){
// speed is from 0 to 100 where 0 is off and 100 is maximum speed
//the following maps speed values of 0-100 to angles from 0-180,
int angle = map(speed, 0, 100, 0, 180);
myservo.write(angle);
}
void setup()
{
Serial.begin(115200);
myservo.attach(9);
pinMode(switchPin, INPUT);
arm();
}
void loop()
{
int speed;
Serial.println("GO");
if (digitalRead(switchPin) == HIGH);
{
setSpeed(90);
Serial.println(speed);
delay(4000);
}
Serial.println("STOP");
if (digitalRead(switchPin) == LOW);
{
setSpeed(0);
Serial.println(speed);
delay(100);
}
Serial.println("30 halting...");
setSpeed(30);
delay(5000);
}
thanks.
- adafruit_support_bill
- Posts: 88154
- Joined: Sat Feb 07, 2009 10:11 am
Re: Controlling a ducted fan
What do you see in the serial monitor? Post the output.
-
- Posts: 9
- Joined: Fri Nov 16, 2012 2:32 am
Re: Controlling a ducted fan
arming
armed
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
armed
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
- adafruit_support_bill
- Posts: 88154
- Joined: Sat Feb 07, 2009 10:11 am
Re: Controlling a ducted fan
How do you have your switch wired? Are you using a pullup or pulldown resistor?
-
- Posts: 9
- Joined: Fri Nov 16, 2012 2:32 am
Re: Controlling a ducted fan
Yes a 10k pull down resistor on the ground
- adafruit_support_bill
- Posts: 88154
- Joined: Sat Feb 07, 2009 10:11 am
Re: Controlling a ducted fan
Code: Select all
if (digitalRead(switchPin) == HIGH);
http://arduino.cc/en/Reference/If
-
- Posts: 9
- Joined: Fri Nov 16, 2012 2:32 am
Re: Controlling a ducted fan
That did the trick
Thanks.
Thanks.
-
- Posts: 9
- Joined: Fri Nov 16, 2012 2:32 am
Re: Controlling a ducted fan
i think I jumped the gun a little. There still seems to be a bug somewhere it doesn't work consistently. Sometimes I press the button the fan turns on, and sometimes no.
any Ideas?
Thanks
any Ideas?
Thanks
- adafruit_support_bill
- Posts: 88154
- Joined: Sat Feb 07, 2009 10:11 am
Re: Controlling a ducted fan
You have a lot of delays in your code. If you press the button during a delay, it won't be seen.
Please be positive and constructive with your questions and comments.