Has anyone made a 2 or 4 channel relay , and is that worked correct ?
-
if any one built a 2 or 4 channel please help me , please send me the codes that you use , and wiring and please told me what you use adaptor ( how much V and A ) ? which arduino use ?
@Reza Since it's already a long thread I didn't want to read everything. But just a stupid question. Did you measure the relay? It would be my starting point. Because if that's not working, the rest will not work either.
Also I once had a relay connected to a ProMini 5V, which I powered over FDTI. But I forgot to setup my FDTI programmer to 5V. By this the Arduino didn't have enough power to switch on the relay. It took me a while before I discovered that, because the NFR24L01+ antenna was working just fine.
Before I add an external power source to an Arduino, I always feed the Arduino through the USB of my computer. In my experience it has always supplied enough power for controlling a relay state. You could try it, just to eliminate power supply issues.
Just a few tips for you my friend. I hope you'll be able to find the cause of your troubles really soon.
Take care.
-
@Reza Since it's already a long thread I didn't want to read everything. But just a stupid question. Did you measure the relay? It would be my starting point. Because if that's not working, the rest will not work either.
Also I once had a relay connected to a ProMini 5V, which I powered over FDTI. But I forgot to setup my FDTI programmer to 5V. By this the Arduino didn't have enough power to switch on the relay. It took me a while before I discovered that, because the NFR24L01+ antenna was working just fine.
Before I add an external power source to an Arduino, I always feed the Arduino through the USB of my computer. In my experience it has always supplied enough power for controlling a relay state. You could try it, just to eliminate power supply issues.
Just a few tips for you my friend. I hope you'll be able to find the cause of your troubles really soon.
Take care.
@TheoL said:
@Reza Since it's already a long thread I didn't want to read everything. But just a stupid question. Did you measure the relay? It would be my starting point. Because if that's not working, the rest will not work either.
Also I once had a relay connected to a ProMini 5V, which I powered over FDTI. But I forgot to setup my FDTI programmer to 5V. By this the Arduino didn't have enough power to switch on the relay. It took me a while before I discovered that, because the NFR24L01+ antenna was working just fine.
Before I add an external power source to an Arduino, I always feed the Arduino through the USB of my computer. In my experience it has always supplied enough power for controlling a relay state. You could try it, just to eliminate power supply issues.
Just a few tips for you my friend. I hope you'll be able to find the cause of your troubles really soon.
Take care.
hi thank you for help me , connected the in1 to pin3 and in2 to pin4 , but pin 4 work and 3 dont work ! (voltag Priority is pin 3 , is this true ? but pin 3 is off and pin4 is work !! also i change pin3 and 4 so other relay is work and other one connect to pin3 dont work ! i test this with a adaptor 5V and 1A but dont work , do need i use a adaptor with more amper ?
also i use a "ClearEepromConfig" program for my arduino and program relay again but dont work again...
( my arduino is a arduino nano ) -
@TheoL said:
@Reza Since it's already a long thread I didn't want to read everything. But just a stupid question. Did you measure the relay? It would be my starting point. Because if that's not working, the rest will not work either.
Also I once had a relay connected to a ProMini 5V, which I powered over FDTI. But I forgot to setup my FDTI programmer to 5V. By this the Arduino didn't have enough power to switch on the relay. It took me a while before I discovered that, because the NFR24L01+ antenna was working just fine.
Before I add an external power source to an Arduino, I always feed the Arduino through the USB of my computer. In my experience it has always supplied enough power for controlling a relay state. You could try it, just to eliminate power supply issues.
Just a few tips for you my friend. I hope you'll be able to find the cause of your troubles really soon.
Take care.
hi thank you for help me , connected the in1 to pin3 and in2 to pin4 , but pin 4 work and 3 dont work ! (voltag Priority is pin 3 , is this true ? but pin 3 is off and pin4 is work !! also i change pin3 and 4 so other relay is work and other one connect to pin3 dont work ! i test this with a adaptor 5V and 1A but dont work , do need i use a adaptor with more amper ?
also i use a "ClearEepromConfig" program for my arduino and program relay again but dont work again...
( my arduino is a arduino nano )@Reza what happens if you connect pin 3 to in2 and pin 4 to in1? That's the easiest way to check your relay. I'm not an expert. Buy my guess is, that if there's a power problem, you wouldn't be able to control any one of the relays. But maybe someone with more knowledge will be able to confirm or deny that,
-
@Reza what happens if you connect pin 3 to in2 and pin 4 to in1? That's the easiest way to check your relay. I'm not an expert. Buy my guess is, that if there's a power problem, you wouldn't be able to control any one of the relays. But maybe someone with more knowledge will be able to confirm or deny that,
@TheoL said:
what happens if you connect pin 3 to in2 and pin 4 to in1? That's the easiest way to check your relay. I'm not an expert. Buy my guess is, that if there's a power problem, you wouldn't be able to control any one of the relays. But maybe someone with more knowledge will be able to confirm or deny that,
Each relay connect to pin 4 is correct ,and each relay connect to pin 3 is not correct, ok thank you :(
-
@TheoL said:
what happens if you connect pin 3 to in2 and pin 4 to in1? That's the easiest way to check your relay. I'm not an expert. Buy my guess is, that if there's a power problem, you wouldn't be able to control any one of the relays. But maybe someone with more knowledge will be able to confirm or deny that,
Each relay connect to pin 4 is correct ,and each relay connect to pin 3 is not correct, ok thank you :(
@Reza I'm not sure. But if I understand you correctly, my gut feeling is that your pin 3 on the Arduino is broken (or not correctly setup in the code). Could be a power issue, but I seriously doubt it.
Just try the blink sketch example. Hookup an LED to pin 3 and change the BLINK_LED pin to pin 3 instead of 13. That way you can check if pin 3 is working correctly.
-
@Reza I'm not sure. But if I understand you correctly, my gut feeling is that your pin 3 on the Arduino is broken (or not correctly setup in the code). Could be a power issue, but I seriously doubt it.
Just try the blink sketch example. Hookup an LED to pin 3 and change the BLINK_LED pin to pin 3 instead of 13. That way you can check if pin 3 is working correctly.
@TheoL said:
@Reza I'm not sure. But if I understand you correctly, my gut feeling is that your pin 3 on the Arduino is broken (or not correctly setup in the code). Could be a power issue, but I seriously doubt it.
Just try the blink sketch example. Hookup an LED to pin 3 and change the BLINK_LED pin to pin 3 instead of 13. That way you can check if pin 3 is working correctly.
i change code to :
#define RELAY_1 4
#define NUMBER_OF_RELAYS 2
and in wiring in1=pin4 and in2=pin5
so pin 5 is working but pin4 is not work !!! -
@TheoL said:
@Reza I'm not sure. But if I understand you correctly, my gut feeling is that your pin 3 on the Arduino is broken (or not correctly setup in the code). Could be a power issue, but I seriously doubt it.
Just try the blink sketch example. Hookup an LED to pin 3 and change the BLINK_LED pin to pin 3 instead of 13. That way you can check if pin 3 is working correctly.
i change code to :
#define RELAY_1 4
#define NUMBER_OF_RELAYS 2
and in wiring in1=pin4 and in2=pin5
so pin 5 is working but pin4 is not work !!!@Reza In that case, since it's so predictable, it's a bug in your sketch. At least that's what I think. Unfortunately I have busy weekend and week ahead, so I don't think I have the time to investigate your code. I'm really sorry. I have to check if I have a spare relay, and if I can find one I'm willing to check your sketch. But as mentioned before I can't promise that.
Hopefully others might be able to help you sooner. Take care.
-
@Reza In that case, since it's so predictable, it's a bug in your sketch. At least that's what I think. Unfortunately I have busy weekend and week ahead, so I don't think I have the time to investigate your code. I'm really sorry. I have to check if I have a spare relay, and if I can find one I'm willing to check your sketch. But as mentioned before I can't promise that.
Hopefully others might be able to help you sooner. Take care.
@TheoL said:
@Reza In that case, since it's so predictable, it's a bug in your sketch. At least that's what I think. Unfortunately I have busy weekend and week ahead, so I don't think I have the time to investigate your code. I'm really sorry. I have to check if I have a spare relay, and if I can find one I'm willing to check your sketch. But as mentioned before I can't promise that.
Hopefully others might be able to help you sooner. Take care.
ok :( thank you very much
-
Maybe using increment operator causes your problem [https://www.arduino.cc/en/Reference/Increment]
Replacing pin++ with pin=pin+1 in your code should fix it. -
Maybe using increment operator causes your problem [https://www.arduino.cc/en/Reference/Increment]
Replacing pin++ with pin=pin+1 in your code should fix it. -
@Nuubi said:
Maybe using increment operator causes your problem [https://www.arduino.cc/en/Reference/Increment]
Replacing pin++ with pin=pin+1 in your code should fix it.hi thank you , I will test this and I will report results
So I took your Sketch and refactored it. Just to be sure that nothing strange is in the code. I don't think there was anything strange in it. I just don't like the ID of defining one relay and calculate the others. But that's just me. I'd like to be able to debug, but with the way this sketch is set-up, checking what might be wrong is just harder to do.
Haven't tested it on an Arduino, don't have any empty breadboard at the moment.
#include <MySensor.h> #include <SPI.h> #define RELAY_1 3 // Arduino Digital I/O pin number for first relay (second on pin+1 etc) #define NUMBER_OF_RELAYS 2 // Total number of attached relays #define RELAY_ON HIGH // GPIO value to write to turn on attached relay #define RELAY_OFF LOW // GPIO value to write to turn off attached relay #define SKETCH_NAME "Relay" #define SKETCH_VERSION "1.0" // Construct MySensors library MySensor gw; // don't bother with singing yet. First get the sketch and hardware to work...!!!! void setup() { gw.begin( incomingMessage, AUTO, true ); // Initialize library and add callback for incoming messages gw.sendSketchInfo( SKETCH_NAME, SKETCH_VERSION); // Send the sketch version information to the gateway and Controller for ( int sensor = 0; sensor < NUMBER_OF_RELAYS; sensor++ ) { gw.present( sensor + 1, S_LIGHT ); // Present the actuator to the GW pinMode( RELAY_1 + sensor, OUTPUT ); // Assign Relay_pin as output digitalWrite( RELAY_1 + sensor, RELAY_OFF ); // turn of the relay (some relay need inverted value. You'll have to check yours.). Turning it of is for safety!!! gw.wait( 50 ); // my gateway sometimes just can't handle to much child presents after each other gw.request( sensor + 1, V_LIGHT ); // Request current state from Home Automation controller. I just don't see any reason to store it in the EPROM gw.wait( 50 ); // my gateway sometimes just can't handle to much child presents after each other } } void loop() { // Alway process incoming messages whenever possible gw.process(); } void incomingMessage(const MyMessage &message) { if ( message.type==V_LIGHT ) { // We only expect one type of message from controller. But we better check anyway. int relayPin = RELAY_1 + message.sensor - 1; if ( message.sensor >= 1 && message.sensor <= NUMBER_OF_RELAYS ) { // make sure message is for a known pin. You wouldn't want to write to a pin that's being used for the radio. digitalWrite( relayPin, message.getBool() ? RELAY_ON : RELAY_OFF ); // Change relay state // Write some debug info Serial.print("Incoming change for sensor:"); Serial.print(message.sensor); Serial.print( ", relay_pin: " ); Serial.print( relayPin ); Serial.print(", New status: "); Serial.println(message.getBool()); } } }Sketch should work. Please post the serial output of this sketch.
My first steps would be:
- Use the sketch I provided (should work, or I missed something).
- Disconnect RELAY from Arduino.
- Connect LEDs to the arduino with resistor (330 Ohm should be just fine)
Test this. The reason I would remove the relay is to be sure there's no power issue. The arduino should be able to provide enough power for driving a simple LED.
If this works you know that it's a hardware problem and from there on, you can investigate what the problem is.
-
So I took your Sketch and refactored it. Just to be sure that nothing strange is in the code. I don't think there was anything strange in it. I just don't like the ID of defining one relay and calculate the others. But that's just me. I'd like to be able to debug, but with the way this sketch is set-up, checking what might be wrong is just harder to do.
Haven't tested it on an Arduino, don't have any empty breadboard at the moment.
#include <MySensor.h> #include <SPI.h> #define RELAY_1 3 // Arduino Digital I/O pin number for first relay (second on pin+1 etc) #define NUMBER_OF_RELAYS 2 // Total number of attached relays #define RELAY_ON HIGH // GPIO value to write to turn on attached relay #define RELAY_OFF LOW // GPIO value to write to turn off attached relay #define SKETCH_NAME "Relay" #define SKETCH_VERSION "1.0" // Construct MySensors library MySensor gw; // don't bother with singing yet. First get the sketch and hardware to work...!!!! void setup() { gw.begin( incomingMessage, AUTO, true ); // Initialize library and add callback for incoming messages gw.sendSketchInfo( SKETCH_NAME, SKETCH_VERSION); // Send the sketch version information to the gateway and Controller for ( int sensor = 0; sensor < NUMBER_OF_RELAYS; sensor++ ) { gw.present( sensor + 1, S_LIGHT ); // Present the actuator to the GW pinMode( RELAY_1 + sensor, OUTPUT ); // Assign Relay_pin as output digitalWrite( RELAY_1 + sensor, RELAY_OFF ); // turn of the relay (some relay need inverted value. You'll have to check yours.). Turning it of is for safety!!! gw.wait( 50 ); // my gateway sometimes just can't handle to much child presents after each other gw.request( sensor + 1, V_LIGHT ); // Request current state from Home Automation controller. I just don't see any reason to store it in the EPROM gw.wait( 50 ); // my gateway sometimes just can't handle to much child presents after each other } } void loop() { // Alway process incoming messages whenever possible gw.process(); } void incomingMessage(const MyMessage &message) { if ( message.type==V_LIGHT ) { // We only expect one type of message from controller. But we better check anyway. int relayPin = RELAY_1 + message.sensor - 1; if ( message.sensor >= 1 && message.sensor <= NUMBER_OF_RELAYS ) { // make sure message is for a known pin. You wouldn't want to write to a pin that's being used for the radio. digitalWrite( relayPin, message.getBool() ? RELAY_ON : RELAY_OFF ); // Change relay state // Write some debug info Serial.print("Incoming change for sensor:"); Serial.print(message.sensor); Serial.print( ", relay_pin: " ); Serial.print( relayPin ); Serial.print(", New status: "); Serial.println(message.getBool()); } } }Sketch should work. Please post the serial output of this sketch.
My first steps would be:
- Use the sketch I provided (should work, or I missed something).
- Disconnect RELAY from Arduino.
- Connect LEDs to the arduino with resistor (330 Ohm should be just fine)
Test this. The reason I would remove the relay is to be sure there's no power issue. The arduino should be able to provide enough power for driving a simple LED.
If this works you know that it's a hardware problem and from there on, you can investigate what the problem is.
@TheoL said:
So I took your Sketch and refactored it. Just to be sure that nothing strange is in the code. I don't think there was anything strange in it. I just don't like the ID of defining one relay and calculate the others. But that's just me. I'd like to be able to debug, but with the way this sketch is set-up, checking what might be wrong is just harder to do.
Haven't tested it on an Arduino, don't have any empty breadboard at the moment.
#include <MySensor.h> #include <SPI.h> #define RELAY_1 3 // Arduino Digital I/O pin number for first relay (second on pin+1 etc) #define NUMBER_OF_RELAYS 2 // Total number of attached relays #define RELAY_ON HIGH // GPIO value to write to turn on attached relay #define RELAY_OFF LOW // GPIO value to write to turn off attached relay #define SKETCH_NAME "Relay" #define SKETCH_VERSION "1.0" // Construct MySensors library MySensor gw; // don't bother with singing yet. First get the sketch and hardware to work...!!!! void setup() { gw.begin( incomingMessage, AUTO, true ); // Initialize library and add callback for incoming messages gw.sendSketchInfo( SKETCH_NAME, SKETCH_VERSION); // Send the sketch version information to the gateway and Controller for ( int sensor = 0; sensor < NUMBER_OF_RELAYS; sensor++ ) { gw.present( sensor + 1, S_LIGHT ); // Present the actuator to the GW pinMode( RELAY_1 + sensor, OUTPUT ); // Assign Relay_pin as output digitalWrite( RELAY_1 + sensor, RELAY_OFF ); // turn of the relay (some relay need inverted value. You'll have to check yours.). Turning it of is for safety!!! gw.wait( 50 ); // my gateway sometimes just can't handle to much child presents after each other gw.request( sensor + 1, V_LIGHT ); // Request current state from Home Automation controller. I just don't see any reason to store it in the EPROM gw.wait( 50 ); // my gateway sometimes just can't handle to much child presents after each other } } void loop() { // Alway process incoming messages whenever possible gw.process(); } void incomingMessage(const MyMessage &message) { if ( message.type==V_LIGHT ) { // We only expect one type of message from controller. But we better check anyway. int relayPin = RELAY_1 + message.sensor - 1; if ( message.sensor >= 1 && message.sensor <= NUMBER_OF_RELAYS ) { // make sure message is for a known pin. You wouldn't want to write to a pin that's being used for the radio. digitalWrite( relayPin, message.getBool() ? RELAY_ON : RELAY_OFF ); // Change relay state // Write some debug info Serial.print("Incoming change for sensor:"); Serial.print(message.sensor); Serial.print( ", relay_pin: " ); Serial.print( relayPin ); Serial.print(", New status: "); Serial.println(message.getBool()); } } }Sketch should work. Please post the serial output of this sketch.
My first steps would be:
- Use the sketch I provided (should work, or I missed something).
- Disconnect RELAY from Arduino.
- Connect LEDs to the arduino with resistor (330 Ohm should be just fine)
Test this. The reason I would remove the relay is to be sure there's no power issue. The arduino should be able to provide enough power for driving a simple LED.
If this works you know that it's a hardware problem and from there on, you can investigate what the problem is.
very very thank you , i will test this and i will comeback <3
-
So I took your Sketch and refactored it. Just to be sure that nothing strange is in the code. I don't think there was anything strange in it. I just don't like the ID of defining one relay and calculate the others. But that's just me. I'd like to be able to debug, but with the way this sketch is set-up, checking what might be wrong is just harder to do.
Haven't tested it on an Arduino, don't have any empty breadboard at the moment.
#include <MySensor.h> #include <SPI.h> #define RELAY_1 3 // Arduino Digital I/O pin number for first relay (second on pin+1 etc) #define NUMBER_OF_RELAYS 2 // Total number of attached relays #define RELAY_ON HIGH // GPIO value to write to turn on attached relay #define RELAY_OFF LOW // GPIO value to write to turn off attached relay #define SKETCH_NAME "Relay" #define SKETCH_VERSION "1.0" // Construct MySensors library MySensor gw; // don't bother with singing yet. First get the sketch and hardware to work...!!!! void setup() { gw.begin( incomingMessage, AUTO, true ); // Initialize library and add callback for incoming messages gw.sendSketchInfo( SKETCH_NAME, SKETCH_VERSION); // Send the sketch version information to the gateway and Controller for ( int sensor = 0; sensor < NUMBER_OF_RELAYS; sensor++ ) { gw.present( sensor + 1, S_LIGHT ); // Present the actuator to the GW pinMode( RELAY_1 + sensor, OUTPUT ); // Assign Relay_pin as output digitalWrite( RELAY_1 + sensor, RELAY_OFF ); // turn of the relay (some relay need inverted value. You'll have to check yours.). Turning it of is for safety!!! gw.wait( 50 ); // my gateway sometimes just can't handle to much child presents after each other gw.request( sensor + 1, V_LIGHT ); // Request current state from Home Automation controller. I just don't see any reason to store it in the EPROM gw.wait( 50 ); // my gateway sometimes just can't handle to much child presents after each other } } void loop() { // Alway process incoming messages whenever possible gw.process(); } void incomingMessage(const MyMessage &message) { if ( message.type==V_LIGHT ) { // We only expect one type of message from controller. But we better check anyway. int relayPin = RELAY_1 + message.sensor - 1; if ( message.sensor >= 1 && message.sensor <= NUMBER_OF_RELAYS ) { // make sure message is for a known pin. You wouldn't want to write to a pin that's being used for the radio. digitalWrite( relayPin, message.getBool() ? RELAY_ON : RELAY_OFF ); // Change relay state // Write some debug info Serial.print("Incoming change for sensor:"); Serial.print(message.sensor); Serial.print( ", relay_pin: " ); Serial.print( relayPin ); Serial.print(", New status: "); Serial.println(message.getBool()); } } }Sketch should work. Please post the serial output of this sketch.
My first steps would be:
- Use the sketch I provided (should work, or I missed something).
- Disconnect RELAY from Arduino.
- Connect LEDs to the arduino with resistor (330 Ohm should be just fine)
Test this. The reason I would remove the relay is to be sure there's no power issue. The arduino should be able to provide enough power for driving a simple LED.
If this works you know that it's a hardware problem and from there on, you can investigate what the problem is.
@TheoL said:
So I took your Sketch and refactored it. Just to be sure that nothing strange is in the code. I don't think there was anything strange in it. I just don't like the ID of defining one relay and calculate the others. But that's just me. I'd like to be able to debug, but with the way this sketch is set-up, checking what might be wrong is just harder to do.
Haven't tested it on an Arduino, don't have any empty breadboard at the moment.
#include <MySensor.h> #include <SPI.h> #define RELAY_1 3 // Arduino Digital I/O pin number for first relay (second on pin+1 etc) #define NUMBER_OF_RELAYS 2 // Total number of attached relays #define RELAY_ON HIGH // GPIO value to write to turn on attached relay #define RELAY_OFF LOW // GPIO value to write to turn off attached relay #define SKETCH_NAME "Relay" #define SKETCH_VERSION "1.0" // Construct MySensors library MySensor gw; // don't bother with singing yet. First get the sketch and hardware to work...!!!! void setup() { gw.begin( incomingMessage, AUTO, true ); // Initialize library and add callback for incoming messages gw.sendSketchInfo( SKETCH_NAME, SKETCH_VERSION); // Send the sketch version information to the gateway and Controller for ( int sensor = 0; sensor < NUMBER_OF_RELAYS; sensor++ ) { gw.present( sensor + 1, S_LIGHT ); // Present the actuator to the GW pinMode( RELAY_1 + sensor, OUTPUT ); // Assign Relay_pin as output digitalWrite( RELAY_1 + sensor, RELAY_OFF ); // turn of the relay (some relay need inverted value. You'll have to check yours.). Turning it of is for safety!!! gw.wait( 50 ); // my gateway sometimes just can't handle to much child presents after each other gw.request( sensor + 1, V_LIGHT ); // Request current state from Home Automation controller. I just don't see any reason to store it in the EPROM gw.wait( 50 ); // my gateway sometimes just can't handle to much child presents after each other } } void loop() { // Alway process incoming messages whenever possible gw.process(); } void incomingMessage(const MyMessage &message) { if ( message.type==V_LIGHT ) { // We only expect one type of message from controller. But we better check anyway. int relayPin = RELAY_1 + message.sensor - 1; if ( message.sensor >= 1 && message.sensor <= NUMBER_OF_RELAYS ) { // make sure message is for a known pin. You wouldn't want to write to a pin that's being used for the radio. digitalWrite( relayPin, message.getBool() ? RELAY_ON : RELAY_OFF ); // Change relay state // Write some debug info Serial.print("Incoming change for sensor:"); Serial.print(message.sensor); Serial.print( ", relay_pin: " ); Serial.print( relayPin ); Serial.print(", New status: "); Serial.println(message.getBool()); } } }Sketch should work. Please post the serial output of this sketch.
My first steps would be:
- Use the sketch I provided (should work, or I missed something).
- Disconnect RELAY from Arduino.
- Connect LEDs to the arduino with resistor (330 Ohm should be just fine)
Test this. The reason I would remove the relay is to be sure there's no power issue. The arduino should be able to provide enough power for driving a simple LED.
If this works you know that it's a hardware problem and from there on, you can investigate what the problem is.
@TheoL this is trueeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee <3 <3 <3
so where was problem ? so this sketch will work for 4 or 8 channel ?
this problem was just for me ? or all ? -
@TheoL said:
So I took your Sketch and refactored it. Just to be sure that nothing strange is in the code. I don't think there was anything strange in it. I just don't like the ID of defining one relay and calculate the others. But that's just me. I'd like to be able to debug, but with the way this sketch is set-up, checking what might be wrong is just harder to do.
Haven't tested it on an Arduino, don't have any empty breadboard at the moment.
#include <MySensor.h> #include <SPI.h> #define RELAY_1 3 // Arduino Digital I/O pin number for first relay (second on pin+1 etc) #define NUMBER_OF_RELAYS 2 // Total number of attached relays #define RELAY_ON HIGH // GPIO value to write to turn on attached relay #define RELAY_OFF LOW // GPIO value to write to turn off attached relay #define SKETCH_NAME "Relay" #define SKETCH_VERSION "1.0" // Construct MySensors library MySensor gw; // don't bother with singing yet. First get the sketch and hardware to work...!!!! void setup() { gw.begin( incomingMessage, AUTO, true ); // Initialize library and add callback for incoming messages gw.sendSketchInfo( SKETCH_NAME, SKETCH_VERSION); // Send the sketch version information to the gateway and Controller for ( int sensor = 0; sensor < NUMBER_OF_RELAYS; sensor++ ) { gw.present( sensor + 1, S_LIGHT ); // Present the actuator to the GW pinMode( RELAY_1 + sensor, OUTPUT ); // Assign Relay_pin as output digitalWrite( RELAY_1 + sensor, RELAY_OFF ); // turn of the relay (some relay need inverted value. You'll have to check yours.). Turning it of is for safety!!! gw.wait( 50 ); // my gateway sometimes just can't handle to much child presents after each other gw.request( sensor + 1, V_LIGHT ); // Request current state from Home Automation controller. I just don't see any reason to store it in the EPROM gw.wait( 50 ); // my gateway sometimes just can't handle to much child presents after each other } } void loop() { // Alway process incoming messages whenever possible gw.process(); } void incomingMessage(const MyMessage &message) { if ( message.type==V_LIGHT ) { // We only expect one type of message from controller. But we better check anyway. int relayPin = RELAY_1 + message.sensor - 1; if ( message.sensor >= 1 && message.sensor <= NUMBER_OF_RELAYS ) { // make sure message is for a known pin. You wouldn't want to write to a pin that's being used for the radio. digitalWrite( relayPin, message.getBool() ? RELAY_ON : RELAY_OFF ); // Change relay state // Write some debug info Serial.print("Incoming change for sensor:"); Serial.print(message.sensor); Serial.print( ", relay_pin: " ); Serial.print( relayPin ); Serial.print(", New status: "); Serial.println(message.getBool()); } } }Sketch should work. Please post the serial output of this sketch.
My first steps would be:
- Use the sketch I provided (should work, or I missed something).
- Disconnect RELAY from Arduino.
- Connect LEDs to the arduino with resistor (330 Ohm should be just fine)
Test this. The reason I would remove the relay is to be sure there's no power issue. The arduino should be able to provide enough power for driving a simple LED.
If this works you know that it's a hardware problem and from there on, you can investigate what the problem is.
@TheoL this is trueeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee <3 <3 <3
so where was problem ? so this sketch will work for 4 or 8 channel ?
this problem was just for me ? or all ?@Reza The Sketch is working? If so great. I wasn't sure, because I wasn't able to test it. I can't tell what was wrong. I just rewrote it. In theory it's possible to add 6 relays this way. This is because pin 9 is in use by the NFR24L01+ antenna. You could use pin 2 as a starting pin (you don't need to connect the radio to pin 2, because it's not using it). So you might be able to add up 7 relays with this sketch.
Because you also have pin 0 + 1 and the 6 analog pins, you can add up to 15 relays, but you'll need a different Sketch for this. Just let me now if you can get it to work with the max of 7 relays.
-
@Reza The Sketch is working? If so great. I wasn't sure, because I wasn't able to test it. I can't tell what was wrong. I just rewrote it. In theory it's possible to add 6 relays this way. This is because pin 9 is in use by the NFR24L01+ antenna. You could use pin 2 as a starting pin (you don't need to connect the radio to pin 2, because it's not using it). So you might be able to add up 7 relays with this sketch.
Because you also have pin 0 + 1 and the 6 analog pins, you can add up to 15 relays, but you'll need a different Sketch for this. Just let me now if you can get it to work with the max of 7 relays.
@TheoL said:
@Reza The Sketch is working? If so great. I wasn't sure, because I wasn't able to test it. I can't tell what was wrong. I just rewrote it. In theory it's possible to add 6 relays this way. This is because pin 9 is in use by the NFR24L01+ antenna. You could use pin 2 as a starting pin (you don't need to connect the radio to pin 2, because it's not using it). So you might be able to add up 7 relays with this sketch.
Because you also have pin 0 + 1 and the 6 analog pins, you can add up to 15 relays, but you'll need a different Sketch for this. Just let me now if you can get it to work with the max of 7 relays.
yes this is working true.
ok.
very very very very thank you <3 <3 <3 -
@TheoL said:
@Reza The Sketch is working? If so great. I wasn't sure, because I wasn't able to test it. I can't tell what was wrong. I just rewrote it. In theory it's possible to add 6 relays this way. This is because pin 9 is in use by the NFR24L01+ antenna. You could use pin 2 as a starting pin (you don't need to connect the radio to pin 2, because it's not using it). So you might be able to add up 7 relays with this sketch.
Because you also have pin 0 + 1 and the 6 analog pins, you can add up to 15 relays, but you'll need a different Sketch for this. Just let me now if you can get it to work with the max of 7 relays.
yes this is working true.
ok.
very very very very thank you <3 <3 <3@Reza Glad that I could help. I was just thinking. I've added a wait in between the presentation of the relays childs to the gateway. Maybe that made the difference. Anyway good luck and enjoy the greatness of MySensors and it's wonderful community.