Здравствуйте, начитавшись в интернете про ARDUINO решил попробовать что-нибудь изобрести, пришла в голову идея голосового управления светом в ванной комнате, а за одно и заставить унитаз смывать по команде, как бы это смешно не казалось))) Дальше больше, после того как электроприборы начали подчиняться голосу, возник вопрос, почему бы на оставшиеся свободные выходы не подключить датчик влажности и датчик температуры пола, что и было сделано. скетч был доработан и всё пошло как по маслу, если бы не одно но... постоянно разговаривать со светом и унитазом , оказывается, дико напрягает и возникло желание чтобы помимо голосового управления была еще возможность управлять всеми приборами, ну допустим с кнопки. То есть чтобы я мог, допустим голосом включить , а нажатием на кнопку выключить и тут меня взял ступор, никак не могу понять как это сделать (((( Во пример скетча, может кто подскажет, заранее спасибо:
#include "SoftwareSerial.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#include <dht11.h>
#define ONE_WIRE_BUS 4 // Датчик температуры подключен к порту 4
#define DHT11PIN 5 // Датчик влажности подключен к порту 5
OneWire oneWire(ONE_WIRE_BUS); // Настройка параметров библиотеки oneWire
DallasTemperature sensors(&oneWire);// Свяжем библиотеки oneWire и Dallas Temperature.
dht11 sensor;
int currTemp = 0;
SoftwareSerial mySerial (2,3); // RX, TX
byte incomingByte;
byte com = 0;
int rele1 = 7;//Привязано к VR
int rele2 = 8;//Привязано к VR
int rele3 = 9;//Привязано к VR
int rele4 = 10;//Привязано к VR
int rele5 = 11;// Привязано к DS18b20
int rele6 = 12;// Привязано к DHT11 hudm
void setup() {
Serial.println("DHT11 TEST PROGRAM ");
mySerial.begin(9600);// устанавливаем скорость UART для модуля
sensors.begin(); // Стартуем библиотеку
pinMode (rele1, OUTPUT);
pinMode (rele2, OUTPUT);
pinMode (rele3, OUTPUT);
pinMode (rele4, OUTPUT);
pinMode (rele5, OUTPUT);
pinMode (rele6, OUTPUT);
delay(2000);
mySerial.write(0xAA);//избавляемся от текста
mySerial.write(0x37);// и оставляем байты
delay(1000);
mySerial.write(0xAA); // вызываем из памяти
mySerial.write(0x21);// команды 1-ой группы
delay(2000);
Serial.println("okey");
}
void loop(){
Serial.println("\n");
int chk = sensor.read(DHT11PIN);
Serial.print("Read sensor: ");
switch (chk)
{
case DHTLIB_OK:
Serial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.println("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.println("Time out error");
break;
default:
Serial.println("Unknown error");
break;
}
if (sensor.humidity > 55){
digitalWrite(rele6, HIGH);
}
if (sensor.humidity < 45){
digitalWrite(rele6, LOW);
}
{
sensors.requestTemperatures(); // Посылаем импульс на датчик
currTemp=sensors.getTempCByIndex(0);
if (currTemp<38) {
digitalWrite(rele5, HIGH);//При температуре ниже Y градусов включаем.
}
if (currTemp>46) {
digitalWrite(rele5, LOW);//При температуре Х градусов отключаем .
}
if(mySerial.available())
{
com = mySerial.read() ;
switch(com)
{
case 0x11:
digitalWrite(rele1, HIGH);
break;
case 0x12:
digitalWrite(rele2, HIGH);
break;// если 1, то выключаем LED
case 0x13:
digitalWrite(rele3, HIGH);
break;
case 0x14:
digitalWrite(rele4, HIGH);
delay (1000);
digitalWrite (rele4, LOW);
break;
case 0x15:
digitalWrite(rele1,LOW );
digitalWrite(rele2,LOW );
digitalWrite(rele3,LOW );
digitalWrite(rele4,LOW );
break;
}
}
}
}