Just to let you know that I solved the issue.
I found a library where you can control the speed and make sure it get to it's position.
You can find it here: https://github.com/netlabtoolkit/VarSpeedServo
I incorporated it in the Mysensor sketch and it works eventhoug it looks like it only goes like 90 degrees but it's enough for me :
#include <MySensor.h>
#include <SPI.h>
#include <VarSpeedServo.h>
// #include <Servo.h>
#define SERVO_DIGITAL_OUT_PIN 3
#define SERVO_MIN 0 // Fine tune your servos min. 0-180
#define SERVO_MAX 180 // Fine tune your servos max. 0-180
#define DETACH_DELAY 900 // Tune this to let your movement finish before detaching the servo
#define CHILD_ID 10 // Id of the sensor child
MySensor gw;
MyMessage msg(CHILD_ID, V_DIMMER);
VarSpeedServo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
// Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created Sensor gw(9,10);
unsigned long timeOfLastChange = 0;
bool attachedServo = false;
void setup()
{
// Attach method for incoming messages
gw.begin(incomingMessage);
// Send the sketch version information to the gateway and Controller
gw.sendSketchInfo("Servo", "1.0");
// Register all sensors to gw (they will be created as child devices)
gw.present(CHILD_ID, S_COVER);
// Request last servo state at startup
gw.request(CHILD_ID, V_DIMMER);
}
void loop()
{
gw.process();
if (attachedServo && millis() - timeOfLastChange > DETACH_DELAY) {
myservo.detach();
attachedServo = false;
}
}
void incomingMessage(const MyMessage &message) {
myservo.attach(SERVO_DIGITAL_OUT_PIN);
attachedServo = true;
if (message.type==V_DIMMER) { // This could be M_ACK_VARIABLE or M_SET_VARIABLE
int val = message.getInt();
myservo.write(SERVO_MAX + (SERVO_MIN-SERVO_MAX)/100 * val,255,true); // sets the servo position 0-180
// Write some debug info
Serial.print("Servo changed. new state: ");
Serial.println(val);
} else if (message.type==V_UP) {
Serial.println("Servo UP command");
myservo.write(SERVO_MIN,255,true);
gw.send(msg.set(100));
} else if (message.type==V_DOWN) {
Serial.println("Servo DOWN command");
myservo.write(SERVO_MAX,255,true);
gw.send(msg.set(0));
} else if (message.type==V_STOP) {
Serial.println("Servo STOP command");
myservo.detach();
attachedServo = false;
}
timeOfLastChange = millis();
}
I've added all the files manually so things should be there now (though I'd recommend grabbing things from github to preserve directory structure and get all the files).
I think you can just set the I2C pins in MyBoardNRF5.h without remapping the pins in MyBoardNRF5.cpp.
Look in MyBoardNRF5.h, under the Wire Interfaces section. Set SDL and SCA to 30 and 31 as appropriate for your board.
@toyman said in NModule DC Fan / PWM shield:
Can the FET withstand continious 2A load? I have one meter long 5050 strip
FDD8447L is rated for 15A continuous load. You don't want to try that because it's possible only with a big pad and 2oz copper PCB, but 2A will not be a problem on this board, there's plenty of margin
https://isojed.nl/blog/wp-content/uploads/2013/06/FDD8447L.pdf
@kalina, Thanks. So it will not work for my configuration. Wall switch (push button) is already installed. No possibilities to draw more electrical wires.
Moreover, if i put the board near the light, i have just the Neutral and the return wire from the wall switch. No Live wire to power on the mysensors board.
I think in my ase the best way is to manage everything in my garage in the electrical main board where all the wires are mapped. I can get L + N for mysensors power supply. And i can continue to reuse the original wall switch independently of the Mysensors board.
@yoonie said:
For the pro mini version, should i create another Openhardware project, or should i put it here, in the already existing project?
Might be better to create a new project as they uses a different set of design files.