Перейти к содержанию

geniv82

Members
  • Постов

    17
  • Зарегистрирован

  • Посещение

Весь контент geniv82

  1. Вот такой дисплей не пробовали? Тут есть кое-что.
  2. @asvetp , здравствуйте, а FM_M328_ST7735_RTC_DS18B20_RDS_bat с МР3 плеером не будет? А так хочется.
  3. А там тумблер на три положения между дисплеями. А управление приёмником двумя качелями справа от диспа. Про дисплей - тупо запараллелил. Хотел сделать коммутацию на ключах, но обошёлся развязкой питания на шоттки - работает.
  4. asvetp, а Вы не планировали перевести управление на энкодер? Ну и пример: при использовании джойстика невозможно одновременно нажать громкость + и -, зато можно использовать дополнительную кнопку, включённую по приведённой схеме. Проверено - работает.
  5. Да нет, выше писал, что хочу на один дисплей посадить это радио и esp radio v2. Гуглится легко. У меня давно работает, и, вполне устраивает.
  6. Не получилось. Ещё заметил баг: если после включения не переключать станцию, а менять громкость, то последняя громкость не сохраняется.
  7. Конечно, огромное спасибо. Проект супер. Прям воплотили все мои хотелки. Как сделаю корпус - покажу.
  8. Вроде, готово. Осталось всё причесать и срастить два проекта. Asvetp, а можно растянуть фон, чтоб по бокам не было мусора? Версия FM_M328_ST7735_RTC_DS18B20_RDS_bat.
  9. Похоже нашёл решение. Запитал дисплей от 5 вольт, а микроконтроллер от 3,3. Скорее всего это не правильно, но работает. Попробую поставить резисторы между дисплеем и МК.
  10. Здравствуйте asvetp, собрал FM -радио на МК ATMega328 с цветным дисплеем ST7735 разрешением 128*160 пикселей. Вот что получилось: 1. Контраст или мал или велик; 2. При нажатии кнопки Reset изображение становится нормальным (т.е. при работе с микроконтроллером контраст не тот); 3. Играл с питанием - толку нет. Я понимаю, что дисплей не тот, но можно ли подкорректировать контраст под данный дисплей. Новый купить не проблема, просто хотел объеденить Ваше радио и интернет радио на один дисплей.
  11. Хотел получить то, что при звонке определяется номер телефона, и, если он совпадает с одним из номеров TEL1 или TEL2 или TEL3: #define TEL1 "79038599995" //// 1 НАШ НОМЕР УПРАВЛЕНИЯ #define TEL2 "79201234567" //// 2 НАШ НОМЕР УПРАВЛЕНИЯ #define TEL3 "79021234567" //// 3 НАШ НОМЕР УПРАВЛЕНИЯ то далее программа включает или выключает реле (в зависимости от первоначального состояния). В первом скетче это условие выполняется, но если там прописан только один телефон. А с двумя и более номерами - не работает. Конечный результат следующий: на данный момент имеется розетка, которая управляется DTMF. Но не удобно включать, т.е. набрать номер, дождаться ответа, нажать соотв. цифру на клавиатуре, сбросить номер. Хочется, чтобы по звонку с двух, трёх номеров срабатывала розетка.
  12. Здравствуйте форумчане, который день бьюсь с GSM розеткой. Проблема в том, что не могу записать более одного разрешённого номера. Вот рабочий скетч. #include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX unsigned long timing; // Переменная для хранения точки отсчета ////////////--------------////////////// #define TEL1 "79038599995" //// 1 НАШ НОМЕР УПРАВЛЕНИЯ #define TEL2 "79201234567" //// 2 НАШ НОМЕР УПРАВЛЕНИЯ #define TEL3 "79021234567" //// 3 НАШ НОМЕР УПРАВЛЕНИЯ ////////////--------------////////////// void setup() { Serial.begin(9600); mySerial.begin(9600); pinMode(2, OUTPUT); // ЭТО РЕЛЕ digitalWrite(2, LOW); // ПОДТЯЖКА ПОРТА HIGH mySerial.println("ATE0"); //ОТКЛ ЭХО delay(300); mySerial.println("AT+IPR=9600;"); delay(300); } void loop() { digitalWrite(13, HIGH);// ИНДИКАЦИЯ СВЯЗИ СИМ800 И МИКРОК. mySerial.println("AT"); // РЕГИСТАЦИЯ СЕТИ if (millis() - timing > 500) { // Вместо 10000 подставьте нужное вам значение паузы if ( mySerial.find("OK")) // ОТВЕТ ОК { Serial.println("SOEDINENIE OK"); digitalWrite(13, LOW); }// МИГАЕМ ВСЕ ОК else { Serial.println("SOEDINENIE NO"); digitalWrite(13, HIGH); // ЕСЛИ НЕ НАШЛИ ГОРИМ } timing = millis(); } /////////////ИЩЕМ ЗВОНОК///////////// if (mySerial.find("CLIP:")) // если нашли RING { Serial.println("RING!"); delay(200); mySerial.println("AT+CLIP=1"); // ВКЛ ОПРЕДЕЛИТЕЛЬ НОМЕРА delay(300); while (1) // в цикле { if (mySerial.find(TEL1)) { // ищим номер телефона, если нашли { digitalWrite(2, !digitalRead(2)); // инвертируем A1 delay(500); Serial.println("INVERSIA RELE"); //////////////////////////////////////// delay(500); if ( digitalRead(2) == HIGH) //ЕСЛИ РЕЛЕ ВКЛ LOW { mySerial.println("AT+CHUP;"); // сбрасываем вызов delay(400); Serial.println("VKL RELE"); } else { Serial.println("OTKL RELE"); delay(6000); mySerial.println("AT+CHUP;"); // сбрасываем вызов delay(500); } if (mySerial.find("CLIP:")) break; } } else { // иначе mySerial.println("AT"); // спрашиваем состояние модема delay(200); if (mySerial.find("OK")) break; // и если он в "готовности", выходим из цикла } // если звонок в процессе, возвращает +CPAS: 3 } // и крутимся дальше mySerial.println("AT+CHUP;"); // сбрасываем вызов delay(200); } } А вот этот работать не хочет, из-за изменений в строке: if (mySerial.find(TEL1)||(TEL2)||(TEL3)) { // ищим номер телефона, если нашли #include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX unsigned long timing; // Переменная для хранения точки отсчета ////////////--------------////////////// #define TEL1 "79038599995" //// 1 НАШ НОМЕР УПРАВЛЕНИЯ #define TEL2 "79201234567" //// 2 НАШ НОМЕР УПРАВЛЕНИЯ #define TEL3 "79021234567" //// 3 НАШ НОМЕР УПРАВЛЕНИЯ ////////////--------------////////////// void setup() { Serial.begin(9600); mySerial.begin(9600); pinMode(2, OUTPUT); // ЭТО РЕЛЕ digitalWrite(2, LOW); // ПОДТЯЖКА ПОРТА HIGH mySerial.println("ATE0"); //ОТКЛ ЭХО delay(300); mySerial.println("AT+IPR=9600;"); delay(300); } void loop() { digitalWrite(13, HIGH);// ИНДИКАЦИЯ СВЯЗИ СИМ800 И МИКРОК. mySerial.println("AT"); // РЕГИСТАЦИЯ СЕТИ if (millis() - timing > 500) { // Вместо 10000 подставьте нужное вам значение паузы if ( mySerial.find("OK")) // ОТВЕТ ОК { Serial.println("SOEDINENIE OK"); digitalWrite(13, LOW); }// МИГАЕМ ВСЕ ОК else { Serial.println("SOEDINENIE NO"); digitalWrite(13, HIGH); // ЕСЛИ НЕ НАШЛИ ГОРИМ } timing = millis(); } /////////////ИЩЕМ ЗВОНОК///////////// if (mySerial.find("CLIP:")) // если нашли RING { Serial.println("RING!"); delay(200); mySerial.println("AT+CLIP=1"); // ВКЛ ОПРЕДЕЛИТЕЛЬ НОМЕРА delay(300); while (1) // в цикле { if (mySerial.find(TEL1)||(TEL2)||(TEL3)) { // ищим номер телефона, если нашли { digitalWrite(2, !digitalRead(2)); // инвертируем A1 delay(500); Serial.println("INVERSIA RELE"); //////////////////////////////////////// delay(500); if ( digitalRead(2) == HIGH) //ЕСЛИ РЕЛЕ ВКЛ LOW { mySerial.println("AT+CHUP;"); // сбрасываем вызов delay(400); Serial.println("VKL RELE"); } else { Serial.println("OTKL RELE"); delay(6000); mySerial.println("AT+CHUP;"); // сбрасываем вызов delay(500); } if (mySerial.find("CLIP:")) break; } } else { // иначе mySerial.println("AT"); // спрашиваем состояние модема delay(200); if (mySerial.find("OK")) break; // и если он в "готовности", выходим из цикла } // если звонок в процессе, возвращает +CPAS: 3 } // и крутимся дальше mySerial.println("AT+CHUP;"); // сбрасываем вызов delay(200); } } Как быть - не знаю, помогите пожалуйста.
×
×
  • Создать...