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
Eto yung full code ko
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 :(
}