Nukkige Relais & domme codeur
14 berichten
• Pagina 1 van 2 • 1, 2
Nukkige Relais & domme codeur
Beste mensen,
Even korte introductie: Peter, rozenveredelaar, techniek-enthousiast, geen programmeur, handig met copy-paste-edit coderen; maar soms lukt dat niet, vandaar dit bericht.
Ik heb de onderstaande Sketch gemaakt met het voorbeeld uit de TimeAlarm library als voorbeeld. Ik wil dat twee relais NA elkaar een gegeven periode aan en dan weer uit schakelen:
Beide uit > Relais 1 aan voor x minuten > 1 off > 2 aan voor x minuten > 2 off > vervolg cyclus van b.v. 24 uur.
Dit krig ik niet voor elkaar"
Ik krijg: Both on > 1 off > 1 on > 2 off > 2 on
Als ik in de code HIGH en LOW omdraai krijg ik:
Both on > 1 off > 2 off
De relais zijn bedraad op het "normaal gesloten" poortje, sinds dat de status is voor het grootste gedeelte vd dag.
Wie kan iets zinnigs hierover zeggen?
<code>
/*
A time switch based on the TimeAlarm example
I want to switch realy 1 on for 5 seconds then go off after which
Relay 2 is witched on for 5 seconds and then off
However: this does not work as expected: both relays are ON immediately at 19:00
Eventually I want this to work with an RTC so I can use real time (I have a DS1307)
*/
#include <Time.h>
#include <TimeAlarms.h>
// Pins
#define RELAY1 6
#define RELAY2 7
void setup() {
// Start Serial & set pin to output
Serial.begin(9600);
//set relays
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
// start clock
setTime(19,0,0,9,5,15); // set time to 19:00 Sep 5 2015 I want to use an RTC eventually......
// create the alarms
Alarm.alarmRepeat(19,0,5, FarRedOn); // 19:05 every day
Alarm.alarmRepeat(19,0,10,FarRedOff); // 19:00:10 every day
Alarm.alarmRepeat(19,0,11, RedOn); // 19:00:11 every day
Alarm.alarmRepeat(19,0,16, RedOff); // 19:00:16 every day
Alarm.timerRepeat(15, Repeats); // timer for every 15 seconds
Alarm.timerOnce(10, OnceOnly); // called once after 10 seconds
}
void loop() {
digitalClockDisplay();
Alarm.delay(1000); // wait one second between clock display
}
void FarRedOn(){
Serial.println("Far Red lights on");
digitalWrite(RELAY1,HIGH); // Turns ON Relay 1
delay(2000);
}
void FarRedOff(){
Serial.println("Far Red lights off");
digitalWrite(RELAY1,LOW); // Turns Relay 1 Off
}
void RedOn(){
Serial.println("Red lights on");
digitalWrite(RELAY2,HIGH); // Turns ON Relays 2
}
void RedOff(){
Serial.println("Red lights off");
digitalWrite(RELAY2,LOW); // Turns Relay 2 Off
}
void Repeats(){
Serial.println("15 second timer");
}
void OnceOnly(){
Serial.println("This timer only triggers once");
}
void digitalClockDisplay()
{
// digital clock display of the time
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.println();
}
void printDigits(int digits)
{
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
</code>
Even korte introductie: Peter, rozenveredelaar, techniek-enthousiast, geen programmeur, handig met copy-paste-edit coderen; maar soms lukt dat niet, vandaar dit bericht.
Ik heb de onderstaande Sketch gemaakt met het voorbeeld uit de TimeAlarm library als voorbeeld. Ik wil dat twee relais NA elkaar een gegeven periode aan en dan weer uit schakelen:
Beide uit > Relais 1 aan voor x minuten > 1 off > 2 aan voor x minuten > 2 off > vervolg cyclus van b.v. 24 uur.
Dit krig ik niet voor elkaar"
Ik krijg: Both on > 1 off > 1 on > 2 off > 2 on
Als ik in de code HIGH en LOW omdraai krijg ik:
Both on > 1 off > 2 off
De relais zijn bedraad op het "normaal gesloten" poortje, sinds dat de status is voor het grootste gedeelte vd dag.
Wie kan iets zinnigs hierover zeggen?
<code>
/*
A time switch based on the TimeAlarm example
I want to switch realy 1 on for 5 seconds then go off after which
Relay 2 is witched on for 5 seconds and then off
However: this does not work as expected: both relays are ON immediately at 19:00
Eventually I want this to work with an RTC so I can use real time (I have a DS1307)
*/
#include <Time.h>
#include <TimeAlarms.h>
// Pins
#define RELAY1 6
#define RELAY2 7
void setup() {
// Start Serial & set pin to output
Serial.begin(9600);
//set relays
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
// start clock
setTime(19,0,0,9,5,15); // set time to 19:00 Sep 5 2015 I want to use an RTC eventually......
// create the alarms
Alarm.alarmRepeat(19,0,5, FarRedOn); // 19:05 every day
Alarm.alarmRepeat(19,0,10,FarRedOff); // 19:00:10 every day
Alarm.alarmRepeat(19,0,11, RedOn); // 19:00:11 every day
Alarm.alarmRepeat(19,0,16, RedOff); // 19:00:16 every day
Alarm.timerRepeat(15, Repeats); // timer for every 15 seconds
Alarm.timerOnce(10, OnceOnly); // called once after 10 seconds
}
void loop() {
digitalClockDisplay();
Alarm.delay(1000); // wait one second between clock display
}
void FarRedOn(){
Serial.println("Far Red lights on");
digitalWrite(RELAY1,HIGH); // Turns ON Relay 1
delay(2000);
}
void FarRedOff(){
Serial.println("Far Red lights off");
digitalWrite(RELAY1,LOW); // Turns Relay 1 Off
}
void RedOn(){
Serial.println("Red lights on");
digitalWrite(RELAY2,HIGH); // Turns ON Relays 2
}
void RedOff(){
Serial.println("Red lights off");
digitalWrite(RELAY2,LOW); // Turns Relay 2 Off
}
void Repeats(){
Serial.println("15 second timer");
}
void OnceOnly(){
Serial.println("This timer only triggers once");
}
void digitalClockDisplay()
{
// digital clock display of the time
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.println();
}
void printDigits(int digits)
{
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
</code>
Advertisement
Re: Nukkige Relais & domme codeur
de delay weghalen en als je een functie aanroept moet je wel () gebruiken.
zonder rtc of een andere sync zal het niet precies zijn.
zonder rtc of een andere sync zal het niet precies zijn.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Nukkige Relais & domme codeur
Ik heb de delay weggehaald. Wat ik niet snap is dat het relais zodra ik stroom op de Arduino zet of op de reset knop druk allebei de kanalen aan zet; allebei de LED's gaan branden en ik hoor de relais klikken. Daarna komt de procedure op gang. Blijkbaar is dat een standaard controleding van het relais. Moet ik eerst een delay oid inbouwen om het relais in "rust stand" te laten komen? Ik bedoel: LED's & lampen uit?
m.a.w.: LED aan=lamp aan LED uit= lamp uit.
m.a.w.: LED aan=lamp aan LED uit= lamp uit.
Re: Nukkige Relais & domme codeur
als de relais klapperen ja dat kan wel, hoe heb je ze aangesloten?
paul deelen
shooter@home.nl
shooter@home.nl
Re: Nukkige Relais & domme codeur
Sommige pinnen worden tijdens het opstarten tijdelijk even hoog gemaakt.
Als je de relais op andere pinnen aansluit ben je van het probleem af.
// Pins
#define RELAY1 6
#define RELAY2 7
en dan de 6 & 7 aanpassen naar de pinnen die je daarna gebruikt
Als je de relais op andere pinnen aansluit ben je van het probleem af.
// Pins
#define RELAY1 6
#define RELAY2 7
en dan de 6 & 7 aanpassen naar de pinnen die je daarna gebruikt
Met vriendelijke groet Arjan
Re: Nukkige Relais & domme codeur
Ik denk dat ik het zo voor elkaar heb! Ik heb een functie RelayOff toegevoegd die na 2 seconden alles dicht gooit, daarna de normale dagelijkse cyclus. Al ze uit zijn blijven ze uit de volgende dag, dus geen probleem. Tijden zijn kort, maar dat is voor deze proef nodig...
Klopt die redenering? Nu nog de RTC toevoegen. Wie kan me daarmee helpen?
Klopt die redenering? Nu nog de RTC toevoegen. Wie kan me daarmee helpen?
- Code: Alles selecteren
/*
A time switch based on the TimeAlarm example
I want to switch realy 1 on for 5 seconds then go off after which
Relay 2 is witched on for 5 seconds and then off
However: this does not work as expected: both relays are ON immediately at 19:00
Eventually I want this to work with an RTC so I can use real time (I have a DS1307)
*/
#include <Time.h>
#include <TimeAlarms.h>
// Pins
#define RELAY1 6
#define RELAY2 7
void setup() {
// Start Serial & set pin to output
Serial.begin(9600);
//set relays
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
// start clock
setTime(19,0,0,9,5,15); // set time to 19:00 Sep 5 2015 I want to use an RTC eventually......
// create the alarms
//switch relays to OFF
Alarm.alarmRepeat(19,0,2, RelayOff); // 19:00:2 every day
//Start normal daily cycle
Alarm.alarmRepeat(19,0,10, FarRedOn); // 19:00:10 every day
Alarm.alarmRepeat(19,0,20,FarRedOff); // 19:00:20 every day
Alarm.alarmRepeat(19,0,23, RedOn); // 19:00:23 every day
Alarm.alarmRepeat(19,0,33, RedOff); // 19:00:33 every day
Alarm.alarmRepeat(19,0,36, FarRedOn2); // 19:00:36 every day
Alarm.alarmRepeat(19,0,46,FarRedOff2); // 19:00:46 every day
Alarm.alarmRepeat(19,0,49, RedOn2); // 19:00:49 every day
Alarm.alarmRepeat(19,0,59, RedOff2); // 19:00:59 every day
//Alarm.timerRepeat(15, Repeats); // timer for every 15 seconds
// Alarm.timerOnce(10, OnceOnly); // called once after 10 seconds
}
void loop() {
digitalClockDisplay();
Alarm.delay(1000); // wait one second between clock display
}
//Relays OFF
void RelayOff(){
Serial.println("All Off");
digitalWrite(RELAY1,HIGH); // Turns OFF Relay 1
digitalWrite(RELAY2,HIGH); // Turns OFF Relay 2
}
// Switch Lights
void FarRedOn(){
Serial.println("Far Red lights on");
digitalWrite(RELAY1,LOW); // Turns ON Relay 1
}
void FarRedOff(){
Serial.println("Far Red lights off");
digitalWrite(RELAY1,HIGH); // Turns Relay 1 Off
}
void RedOn(){
Serial.println("Red lights on");
digitalWrite(RELAY2,LOW); // Turns ON Relays 2
}
void RedOff(){
Serial.println("Red lights off");
digitalWrite(RELAY2,HIGH); // Turns Relay 2 Off
}
void FarRedOn2(){
Serial.println("Far Red lights on");
digitalWrite(RELAY1,LOW); // Turns ON Relay 1
}
void FarRedOff2(){
Serial.println("Far Red lights off");
digitalWrite(RELAY1,HIGH); // Turns Relay 1 Off
}
void RedOn2(){
Serial.println("Red lights on");
digitalWrite(RELAY2,LOW); // Turns ON Relays 2
}
void RedOff2(){
Serial.println("Red lights off");
digitalWrite(RELAY2,HIGH); // Turns Relay 2 Off
}
void Repeats(){
Serial.println("15 second timer");
}
void OnceOnly(){
Serial.println("This timer only triggers once");
}
void digitalClockDisplay()
{
// digital clock display of the time
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.println();
}
void printDigits(int digits)
{
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
Re: Nukkige Relais & domme codeur
de relais moeten extern gevoed worden want je zit echt aanmaximum stroom.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Nukkige Relais & domme codeur
shooter schreef:de relais moeten extern gevoed worden want je zit echt aanmaximum stroom.
maximum vanuit de Arduino zoals op de foto met USB stroom bedoel je? In de "echte" opstelling wil ik een 9 volt trafo (een wallwart, 500mA) op de arduino aansluiten. Dat zou voldoende moeten zijn toch?
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Nukkige Relais & domme codeur
De regulator op het board heeft een max van 500mA. Het enige wat je bereikt is een warmer wordende regulator.... Relais moet je apart voeden.
14 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 110 gasten