Navigation

    • Register
    • Login
    • OpenHardware.io
    • Categories
    • Recent
    • Tags
    • Popular
    1. Home
    2. manu
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    manu

    @manu

    0
    Reputation
    1
    Posts
    134
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online

    manu Follow

    Best posts made by manu

    This user hasn't posted anything yet.

    Latest posts made by manu

    • Servo-Motion Multisensor - Release 2.0

      Hello everybody,
      I try to bring a multi sensor with 2.0 release to run. Containing a servo and a motion sensor.
      The sketch is compiled without errors
      But unfortunately only the motion sensor works.
      The servo motor does not react. I have tried a lot but without success
      Could someone help me please?
      Many thanks for any help

      // Enable debug prints to serial monitor
      #define MY_DEBUG 
      
      // Enable and select radio type attached
      #define MY_RADIO_NRF24
      //#define MY_RADIO_RFM69
      
      #include <SPI.h>
      #include <MySensors.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_SERVO 1   // Id of the sensor child
      #define CHILD_MOTION 2
      
      unsigned long SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
      #define DIGITAL_INPUT_SENSOR 2   // The digital input you attached your motion sensor.  (Only 2 and 3 generates interrupt!)
      
      MyMessage msgMOTION(CHILD_MOTION, V_TRIPPED);
      MyMessage msgSERVO(CHILD_SERVO, V_DIMMER);
      
      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() 
      { 
        // Request last servo state at startup
        request(CHILD_SERVO, V_DIMMER);
        
        pinMode(DIGITAL_INPUT_SENSOR, INPUT);
      } 
      
      void presentation()  {
        // Send the sketch version information to the gateway and Controller
        sendSketchInfo("Servo_Motion", "1.0");
      
        // Register all sensors to gw (they will be created as child devices)
        present(CHILD_SERVO, S_COVER);
        present(CHILD_MOTION, S_MOTION);
      }
      
      void loop() 
      { 
        
          if (attachedServo && millis() - timeOfLastChange > DETACH_DELAY) {
           myservo.detach();
           attachedServo = false;
         
        }
      
          // Read digital motion value
           bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH;
      
           Serial.println(tripped);
           send(msgMOTION.set(tripped?"1":"0"));  // Send tripped value to gw 
      
            // Sleep until interrupt comes in on motion sensor. Send update every two minute.
           sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME);
       
      } 
      
      void receive(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); // 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);
           send(msgSERVO.set(100));
         } else if (message.type==V_DOWN) {
           Serial.println("Servo DOWN command");
           myservo.write(SERVO_MAX); 
           send(msgSERVO.set(0));
         } else if (message.type==V_STOP) {
           Serial.println("Servo STOP command");
           myservo.detach();
           attachedServo = false;
      
         }
         timeOfLastChange = millis();
      }
      
      posted in Troubleshooting
      manu
      manu