|
求大佬们帮忙看一下
#include <DHT.h>
#include <DHT_U.h>
#include <DS3231.h>
#include <Servo.h>
#include <LiquidCrystal.h>
#include <Keypad.h>
#include <Wire.h>
#define DHTTYPE DHT11 // DHT 11
#define DHTPIN A5
DHT dht(DHTPIN, DHTTYPE);
// 定义矩阵键盘
const byte ROWS = 4; // 四行
const byte COLS = 4; //四列
char keys[ROWS][COLS] = {
{'1','2','3',':'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 2, 3, 4, 5 };// 将键盘 ROW0、ROW1、ROW2 和 ROW3 连接到2,3,4,5Arduino 引脚。
byte colPins[COLS] = { 6, 7, 8, 9 };// 将键盘 COL0、COL1 、COL2和COL3 连接到6,7,8,9 Arduino 引脚
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // 创建矩阵键盘
DS3231 rtc(SDA, SCL);
Servo servo_test; //initialize a servo object for the connected servo
LiquidCrystal lcd(A0, A1, A2, 11, 12, 13); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
//int angle = 0;
// int potentio = A0; // 初始化电位器的 A0 模拟引脚
int t1, t2, t3, t4, t5, t6;
boolean feed = true; // 闹钟条件
char key;
int r[6];
void setup()
{
dht.begin();
servo_test.attach(10); // 将伺服电机的信号引脚连接到arduino的pin10
Serial.println();
rtc.begin();
lcd.begin(16,2);
servo_test.write(55);
Serial.begin(115200);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
}
void setFeedingTime()
{
feed = true;
int i=0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set feeding Time");
delay(400);
lcd.clear();
lcd.print("HH:MM");
lcd.setCursor(0,1);
char j = 0;
while(1)
{
key = kpd.getKey();
if(key!=NO_KEY){
lcd.setCursor(j,1);
lcd.print(key);
r[i] = key;
i++;
j++;
if (j == 2)
{
lcd.print(":");
j++;
}
delay(500);
}
if (key == 'D')
{
key=0; break;
}
}
}
void loop()
{
lcd.setCursor(0,0);
int buttonPress;
buttonPress = digitalRead(A3);
if (buttonPress==1)
setFeedingTime();
Serial.println(buttonPress);
lcd.print("Time: ");
String t = "";
t = rtc.getTimeStr();
t1 = t.charAt(0);
t2 = t.charAt(1);
t3 = t.charAt(3);
t4 = t.charAt(4);
t5 = t.charAt(6);
t6 = t.charAt(7);
lcd.print(rtc.getTimeStr());
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float te = dht.readTemperature();
if (isnan(h) || isnan(te))
{
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(te);
Serial.print(F("°C "));
lcd.setCursor(0,1);
lcd.print("T:");
lcd.print(te);
lcd.print("C");
lcd.print("H:");
lcd.print(h);
lcd.print("%");
if (t1==r[0] && t2==r[1] && t3==r[2] && t4==r[3]&& feed==true)
{
servo_test.write(100); //将舵机旋转到指定角度的命令
delay(400);
servo_test.write(55);
feed=false;
}
}
|
|