Arduino计时器

下午好 我叫Nikita Sergeevich,今年14岁,在这篇文章中,我想向您介绍我半年前开发的设备(和应用),因为成品设备是由父亲焊接和组装的。 尽管您可能不止一次看到过这样的设备,但是它并没有打扰我。

所有这些都是为了自动打开和关闭鸡舍中的灯而创建的,也可用于其他目的。





成品和组装后的设备可以在从指定的时间到指定的时间(精确到分钟)内发送到指定的数字引脚arduino 1或0(在该时段之外,提供与添加计时器时应用程序中指定的值相反的值)。

所有参数均在应用程序中指示。 但是从这里更详细...

有一个适用于android的应用程序,您需要在其中连接到蓝牙模块并添加计时器。 该应用程序很直观,我认为它不会有任何问题。





.apk文件将位于该项目的文件夹中。

必填项:

  1. arduino;
  2. rtc模块ds1307;
  3. 蓝牙模块HC-05;
  4. 连接元件(例如电线);
  5. arduino固件; 我认为草图很复杂,最好不要详细介绍。
  6. 适用于android的应用程序;

我们处理arduino和插件。

是的,第1-4段:



arduino - hc-05 5v - vcc gnd - gnd TX1 - RXD RX0 - TXD arduino - ds1307 5v - 5v gnd - gnd A5 - scl A4 - sda 

加载草图时,不要忘记断开arduino上的RX0引脚。 你说素描吗?

5.素描到工作室:

 #include <Wire.h> //     i2c #include <iarduino_RTC.h> //  rtc ( c,    (Timer->firmware_for_timer->iarduino_RTC)) #include <EEPROM.h> //      iarduino_RTC time(RTC_DS1307); //        int values; //    unsigned int to_minutes(unsigned int hours, unsigned int minutes)//        { return (60*hours)+minutes; } void setup() { time.begin(); //   Serial.begin(9600); //   } void loop() { if(Serial.available() > 0) // -  { values = Serial.read(); time.settime(0,-1, values); //    delay(50); values = Serial.read(); time.settime(0, values); //    delay(50); //   for (int i = 0 ; i < EEPROM.length() ; i++) { EEPROM.write(i, 0); } ////////////////////////////////// values = Serial.read(); delay(50); //    ,    while (values > 0) //    { for(int i = 0; i < 7; ++i) { EEPROM.write(EEPROM.read(EEPROM.length() - 1) * 7 + i, Serial.read()); delay(50); } EEPROM.write(EEPROM.length() - 1, EEPROM.read(EEPROM.length() - 1) + 1); values = Serial.read(); delay(50); } ///////////////////////////////////////// } //    for(int i = 0; i < EEPROM.read(EEPROM.length() - 1); ++i) { if(EEPROM.read(i * 7 + 0) == 1) //    { bool find = 0; // time.gettime(); if((to_minutes(EEPROM.read(i * 7 + 1), EEPROM.read(i * 7 + 2)) <= to_minutes(time.Hours, time.minutes)) && //     (to_minutes(EEPROM.read(i * 7 + 3), EEPROM.read(i * 7 + 4)) > to_minutes(time.Hours, time.minutes))) { pinMode(EEPROM.read(i * 7 + 5), OUTPUT); //     digitalWrite(EEPROM.read(i * 7 + 5), EEPROM.read(i * 7 + 6)); //     } else //     { //      for (int j = 0; j < EEPROM.read(EEPROM.length() - 1); ++j) { if(EEPROM.read(i * 7 + 5) == EEPROM.read(j * 7 + 5) && (i != j) && (EEPROM.read(j * 7 + 0) == 1)) { //              if((to_minutes(EEPROM.read(j * 7 + 1), EEPROM.read(j * 7 + 2)) <= to_minutes(time.Hours, time.minutes)) && (to_minutes(EEPROM.read(j * 7 + 3), EEPROM.read(j * 7 + 4)) > to_minutes(time.Hours, time.minutes))) //     { pinMode(EEPROM.read(i * 7 + 5), OUTPUT); //     digitalWrite(EEPROM.read(i * 7 + 5), EEPROM.read(j * 7 + 6)); //     find = 1; //  } } } if(find == 0) //        { pinMode(EEPROM.read(i * 7 + 5), OUTPUT); //     digitalWrite(EEPROM.read(i * 7 + 5), !EEPROM.read(i * 7 + 6)); //      } } } } } 

但是,所有这些无需应用的操作将像石头一样寒冷而静止,因此继续前进。

6。
该应用程序很直观,我认为它不会有任何问题。
但是最好立即解决。 首次进入应用程序时,需要连接到蓝牙模块,为此,请单击“同步设备”
然后选择我们的模块 选中“自动连接”复选框,打开应用程序时手机本身将尝试连接至蓝牙模块(此芯片取自Alex gyver)“计时器”是所有计时器及其名称搜索的列表。 单击计时器名称将打开用于更改该计时器的屏幕。 单击此处(添加计时器屏幕),在此处(计时器列表的位置)位于右下角“ +”,其中指示:

  • 他的名字
  • 从什么时间开始(小时分钟)
  • 什么时间(小时分钟)
  • 受控引脚
  • 对他有价值
  • 和状态(arduino将在正确的时间打开或关闭它)。


项目档案;
有一个应用程序。

关于这一点,我要感谢您的关注,并说,如果发现任何侧钉或错误-随时写一下,我们将修复它。

Source: https://habr.com/ru/post/zh-CN461561/


All Articles