🔒 Closed DS3231 - Code that repeat for given no. of X days? Arduino Project

Status
Not open for further replies.

AEZAKMI_12

Eternal Poster
Good Day mga paps, medyo baguhan lang ako sa arduino, lalo na sa DS3231 RTC Module kaya di ko rin alam kung pano gagawin

Gusto ko gumawa ng loop kung saan iseset ng users kung ilang days nila gusto mag repeat. Let say nag input si user ng "3", edi mag rerepeat dapat ng 3 days yun.

Basically gagawa ako ng Pet Feeder kung saan yung users pwedeng
A. Set the time WITHIN the day when they want to feed it ONCE
B. Set the no. of days they want to repeat the process of feeding at certain time(the time will be specified within the code, so the user will only set the no. of days).

Bali sa part na to ako nahihirapan, di ko alam kung pano gagawin. Baka alam nyo kung pano, patulong naman

C++:
void setFeedingDate(){
 //No code yet. Sad emoji
}


Eto yung full code ko


C++:
#include <DS3231.h>
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>

const byte ROWS = 4; // Four rows
const byte COLS = 4; // Three columns

// Define the Keymap
char keys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};


byte rowPins[ROWS] = { 2, 3, 4, 5 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 6, 7, 8, 9 };// Connect keypad COL0, COL1 and COL2 to these Arduino pins.

//  Create the Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
DS3231  rtc(A4, A5);
Servo servo_test; //initialize a servo object for the connected servo
LiquidCrystal_I2C lcd(0x27, 16, 2); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
//int angle = 0;
// int potentio = A0;      // initialize the A0analog pin for potentiometer

int t1, t2, t3, t4, t5, t6;

boolean feed = true; // condition for alarm

char key;

int r[6];

void setup() {
      Serial.begin(9600);
      servo_test.attach(10);   // attach the signal pin of servo to pin9 of arduino

      rtc.begin();
      lcd.begin();
      servo_test.write(55);

      pinMode(A0, OUTPUT);
      pinMode(A1, OUTPUT);
      pinMode(A2, OUTPUT);

}

void loop() {
 
  lcd.setCursor(0, 0);

  int buttonPress;

  buttonPress = digitalRead(A3);


  //Default display on LCD - START
  lcd.print("Time:  ");
  String t = "";
  t = rtc.getTimeStr();
  t1 = t.charAt(0) - 48;
  t2 = t.charAt(1) - 48;
  t3 = t.charAt(3) - 48;
  t4 = t.charAt(4) - 48;
  t5 = t.charAt(6) - 48;
  t6 = t.charAt(7) - 48;

  lcd.print(rtc.getTimeStr());
  lcd.setCursor(0, 1);
  lcd.print("Date: ");
  lcd.print(rtc.getDateStr());
  //Default display on LCD - END


  //Choose whether Time or Date Duration - START
  if (buttonPress == 1){
    setFeedingTimeDate();
  }
  //Choose whether Time or Date Duration - END


  //SERVO ACTIVATION CODE - START
  if (t1 == r[0] && t2 == r[1] && t3 == r[2] && t4 == r[3] && t5 < 1 && t6 < 3 && feed == true){
    servo_test.write(100);
    delay(400);
    servo_test.write(55);
    feed = false;
  }
  //SERVO ACTIVATION CODE - END 

 
}


void setFeedingTimeDate() {
    
    key = kpd.getKey();
    char j;

    lcd.setCursor(0, 0);
    lcd.print("Press: A for X Time");
    lcd.setCursor(0, 1);
    lcd.print("Press: B for X Date");

        if (key == 'A'){
          setFeedingTime()
        }

        if (key == 'B') {
          setFeedingDate()
        }
 
  }

void setFeedingTime(){
  key = kpd.getKey();
  char j;
  feed = true;
  int i = 0;

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Set feeding Time");
  lcd.clear();
  lcd.print("HH:MM");
  lcd.setCursor(0, 1);

  while (1) {
    key = kpd.getKey();
    char j;

    if (key != NO_KEY) {
      lcd.setCursor(j, 1);
      lcd.print(key);
      r[i] = key - 48;
      i++;
      j++;

      if (j == 2){
      lcd.print(":"); j++;
      }

      delay(500);
      }

    if (key == 'D'){
      key = 0;
      break;
    }
  }
}

void setFeedingDate(){
//sad di maalam dito :(
}
 
Status
Not open for further replies.

About this Thread

  • 0
    Replies
  • 613
    Views
  • 1
    Participants
Last reply from:
AEZAKMI_12

Trending Topics

Online now

Members online
1,111
Guests online
1,015
Total visitors
2,126

Forum statistics

Threads
2,277,954
Posts
28,980,038
Members
1,228,184
Latest member
Shinra09
Back
Top