I think I have to be a little more specific about what I want to do, at this moment I have made a sketch for my arduino to open and close my blinds in two ways:
1 At a defined time
2 By a push button for opening and a push button for closing
I want to make it work with my homey but I cant get it work by the Sonoff sketch because I do not know how to integrate my stepper motor in this circuit, I put the sketch below so you can see how it works. When it works with the homey, I do not need the LCD anymore.
I hope this is more clearly for you to understand what I want. Thanks a lot for thinking allong!
Here is my sketch without homey integration working on a arduino NANO:
#include <RTClib.h>
#include <Wire.h>
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 10, d5 = 9, d6 = 8, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#include <Stepper.h>
#define stepsPerRevolution 2040
Stepper stepper(stepsPerRevolution, 4, 6, 5, 3);
int steps1;
const int Open_Switch = 0; // Pin 0 voor de drukknop openen
const int Close_Switch = 1; // Pin 1 voor de drukknop sluiten
int ButtonStateOpen =0;
int ButtonStateClose =0;
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {âZondagâ, âMaandagâ, âDinsdagâ, âWoensdagâ, âDonderdagâ, âVrijdagâ, âZaterdagâ};
void setup() {
pinMode(Open_Switch, INPUT);
pinMode(Close_Switch, INPUT);
pinMode (13, OUTPUT);
pinMode (2, OUTPUT);
digitalWrite (2, HIGH); //Relais niet bediend
Wire.begin();
lcd.begin(16, 2);
digitalWrite (13, HIGH); //LED display verlicht
delay(100);
lcd.setCursor(0, 0);
lcd.print(âReset tellerâŚâ);
lcd.setCursor(0, 1);
lcd.print(âTijd instellenâŚâ);
delay(3000);
lcd.clear();
digitalWrite (13, LOW); //LED display donker
steps1=0;
}
void loop() {
ButtonStateOpen = digitalRead(Open_Switch);
ButtonStateClose = digitalRead(Close_Switch);
DateTime now = rtc.now();
lcd.setCursor(0, 0);
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
lcd.print(" 0=D 1=O");
lcd.setCursor(0, 1);
lcd.print(now.hour());
lcd.print(":");
lcd.setCursor(3, 1);
lcd.print(now.minute());
lcd.print(":");
lcd.setCursor(6, 1);
lcd.print(now.second());
lcd.setCursor(11, 1);
lcd.print(steps1);
delay(500);
//Openen met drukknop
if (ButtonStateOpen == LOW && (steps1 == 0)) {
digitalWrite (13, HIGH); //LED display verlicht
delay(2000);
digitalWrite (2, LOW); //Relais bediend
delay(100);
stepper.setSpeed(10);
stepper.step(9180);
//Stappenteller
steps1++;
delay(100);
digitalWrite (2, HIGH); //Relais niet bediend
delay(2000);
digitalWrite (13, LOW); //LED display niet verlicht
}
//Sluiten met drukknop
if (ButtonStateClose == LOW && (steps1 == 1)) {
digitalWrite (13, HIGH); //LED display verlicht
delay(2000);
digitalWrite (2, LOW); //Relais bediend
delay(100);
stepper.setSpeed(10);
stepper.step(-9180);
//Stappenteller
steps1â;
delay(100);
digitalWrite (2, HIGH); //Relais niet bediend
delay(2000);
digitalWrite (13, LOW); //LED display niet verlicht
}
// Deze cyclus start openen van de luxaflex.
if (now.hour() == 9 && now.minute() == 30 && (steps1 == 0)) {
digitalWrite (13, HIGH); //LED display verlicht
delay(2000);
digitalWrite (2, LOW); //Relais bediend
delay(100);
stepper.setSpeed(10);
stepper.step(9180);
delay(100);
digitalWrite (2, HIGH); //Relais niet bediend
//Stappenteller
steps1++;
digitalWrite (13, LOW); //LED display dimmen
}
// Deze cyclus start sluiten van de luxaflex.
if (now.hour() == 18 && now.minute() == 30 && (steps1 == 1)) {
digitalWrite (13, HIGH); //LED display verlicht
delay(2000);
digitalWrite (2, LOW); //Relais bediend
delay(100);
stepper.setSpeed(10);
stepper.step(-9180);
delay(100);
digitalWrite (2, HIGH); //Relais niet bediend
//Stappenteller
steps1â;
digitalWrite (13, LOW); //LED display dimmen
}
lcd.clear();
}