Помогите эти 2 программы собрат вместе что бы они работали одном программе. Эти программы по отдельности работают но когда объединяю не работает.Заранее спасибо.
// Example 55.7 #include <SoftwareSerial.h> char inchar; // Will hold the incoming character from the GSM shield SoftwareSerial SIM900(7, 8); int led1 = 10; int led2 = 11; int led3 = 12; int led4 = 13; int led5 = 9; void setup() { Serial.begin(19200); // set up the digital pins to control pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); // wake up the GSM shield SIM900power(); SIM900.begin(19200); delay(20000); // give time to log on to network. SIM900.print("AT+CMGF=1\r"); // set SMS mode to text delay(100); SIM900.print("AT+CNMI=2,2,0,0,0\r"); // blurt out contents of new SMS upon receipt to the GSM shield's serial out delay(100); Serial.println("Ready..."); } void SIM900power() // software equivalent of pressing the GSM shield "power" button { digitalWrite(9, LOW); delay(3000); digitalWrite(9,HIGH ); delay(5000); } void loop() { //If a character comes in from the cellular module... if(SIM900.available() >0) { inchar=SIM900.read(); if (inchar=='#') { delay(10); inchar=SIM900.read(); if (inchar=='a') { delay(10); inchar=SIM900.read(); if (inchar=='0') { digitalWrite(led1, LOW); } else if (inchar=='1') { digitalWrite(led1, HIGH); } delay(10); inchar=SIM900.read(); if (inchar=='b') { inchar=SIM900.read(); if (inchar=='0') { digitalWrite(led2, LOW); } else if (inchar=='1') { digitalWrite(led2, HIGH); } delay(10); inchar=SIM900.read(); if (inchar=='c') { inchar=SIM900.read(); if (inchar=='0') { digitalWrite(led3, LOW); } else if (inchar=='1') { digitalWrite(led3, HIGH); } delay(10); inchar=SIM900.read(); if (inchar=='d') { delay(10); inchar=SIM900.read(); if (inchar=='0') { digitalWrite(led4, LOW); } else if (inchar=='1') { digitalWrite(led4, HIGH); } delay(10); } } SIM900.println("AT+CMGD=1,4"); // delete all SMS } } } } }
А что вы хоте в итоге получить? Успел заметить, что скетчи похожие, только переменные по разному называются.
Я хочу отправит смс и когда ардуино получит сигнал на пин 10 то електоклапан откроется. Потом я поставил датчик потока. Когда електроклапан открываетсяю и вода идет то датчик потока дает сигнал на пин 6.когда пин6 получит сигнал то мне придет смс.
Я хочу отправит смс и когда ардуино получит сигнал на пин 10 то електоклапан откроется. Потом я поставил датчик потока. Когда електроклапан открываетсяю и вода идет то датчик потока дает сигнал на пин 6.когда пин6 получит сигнал то мне придет смс.
Блин прости смогу помочь позже. Если хочешь, через час буду ВК, напиши: http://vk.com/egrebennikov2013
Проверяйте!У меня работает.Пин выхода на реле исправьте я специально 13 взял чтоб светодиод на плате загорался также поправьте номер телефона для СМС и текст. Код (C++): [code] //для выхода будем использовать 13 вход потом поменяем если надо на 10 //для датчика пин 6 int rele = 13; int btn = 3; int power = 9 ; // подача питания пин 9 void setup() { // инициализируем пин, подключенный к кнопке, как вход // пин 9 для включения шилда pinMode(power, OUTPUT); pinMode(rele, OUTPUT); pinMode(btn, INPUT); digitalWrite(power,HIGH); //подали питание delay(1000); //на 1 сек digitalWrite(power,LOW); //сняли питание Serial.begin(9600); //скорость 9600 бод самое оно delay(300); // Настраиваем приём сообщений с других устройств // Между командами даём время на их обработку Serial.print("AT+CMGF=1\r"); delay(300); Serial.print("AT+IFC=1, 1\r"); delay(300); Serial.print("AT+CPBS=\"SM\"\r"); delay(300); Serial.print("AT+CNMI=1,2,2,1,0\r"); delay(500); } String currStr = ""; // Переменная принимает значение True, если текущая строка является сообщением boolean isStringMessage = false; void loop() { if (!Serial.available()) //если есть данные return; char currSymb = Serial.read(); if ('\r' == currSymb) { if (isStringMessage) { //если текущая строка - SMS-сообщение, //отреагируем на него соответствующим образом if (!currStr.compareTo("on")) //если on включим реле { digitalWrite(rele, HIGH); {if (digitalRead(btn) == LOW) // если датчик сработал (замкнут на землю) //посылаем смс { Serial.println("AT + CMGS = \"+79222909090\""); //Ваш номер телефона delay(300); // Пишем текст сообщения Serial.println("Preved Medved!"); delay(300); // Отправляем Ctrl+Z, обозначая, что сообщение готово Serial.println((char)26); delay(1000); } } } else if (!currStr.compareTo("off")) //если off выключим реле { digitalWrite(rele, LOW); } isStringMessage = false; } else { if (currStr.startsWith("+CMT")) { //если текущая строка начинается с "+CMT", //то следующая строка является сообщением isStringMessage = true; } } currStr = ""; } else if ('\n' != currSymb) { currStr += String(currSymb); } } Да ещё важно!Не использовал левых библиотек поэтому используется аппаратный USART перемычки на плате ГПРС Шилда поставить в положение "HW"
Привет. У нас подключение вот так я загрузил этот программу не сработал. Может гдето не правилно делаю?
Я же написал У вас на фото стоят в положении serial SW а надо в положение serial HW ну а по схеме всё вроде правильно.И потом у Вас уровень сработки от сенсора на 6 пин низкий или высокий?В скетче у меня низкий-замыкание на GND.
Да правильно.Должно работать если отправите СМС с ткестом on (буквы маленькие) должно сработать реле на пин 13 если после этого пин 6 замкнуть на GND то отправит Вам СМС. Номер в скетче поправили?
Привет. Помоги пожалуйста. Программа который я загрузил работает. Но я еще хочу когда HIGH сигнал придет на пин 4 чтобы мне пришел смс. Заранее спасибо.
Да в этом скетче. Независимо от других событий. Когда я нажму на бутон чтобы смс приходил. Спасибо за всё.