arduino leonardo + sim900 shield + lcd 1602 = Fail
- Войдите на сайт для отправки комментариев
Всем привет, столкнулся с проблемой
1)На UNO и Leonardo по отдельности работает дисплей 1602 с ним проблем нет
2)нашел код амперки и приконнектил gprs shield sim900, он тоже хорошо пошел (без дисплея т.е., leonardo + sim shield)
3)начал дружить это дело вместе, получается треш малость, а именно
не идет питание на сим шилд(внешнее тоже не помогает)
Думаю дело в ножках(7,8,9) так как нашел пример сей реализации, поменял ноги для экрана :
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); -->LiquidCrystal lcd(12, 10, 4, 5, 6, 7);
т.е. переставил пины просто с 8 на 12 и 9 на 10, тоже не помогает, изображение есть, питание у сим шилда нет, не пойму что не так делаю, неделю вооюю вообще не втыкаю, ни уно ни леонардо никак не хотят бутербродом таким вместе дружить. Ниже код сего безобразия:
//ARDUINO/LEONARDO #include <Wire.h> #include <LiquidCrystal.h> // библиотека для работы с GPRS устройством #include <GPRS_Shield_Arduino.h> // Setting the LCD shields pins //LiquidCrystal lcd(8, 9, 4, 5, 6, 7); LiquidCrystal lcd(12, 10, 4, 5, 6, 7); // создаём объект класса GPRS и передаём в него объект Serial1 GPRS gprs(Serial1); // можно указать дополнительные параметры — пины PK и ST // по умолчанию: PK = 2, ST = 3 // GPRS gprs(Serial1, 2, 3); // длина сообщения #define MESSAGE_LENGTH 160 // номер сообщения в памяти сим-карты int messageIndex = 0; // текст сообщения char message[MESSAGE_LENGTH]; // номер, с которого пришло сообщение char phone[16]; // дата отправки сообщения char datetime[24]; void setup() { // Initializes and clears the LCD screen lcd.begin(16, 2); Serial1.begin(9600); // открываем Serial-соединение с GPRS Shield /* while (!Serial1) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Message:"); lcd.setCursor(0, 1); lcd.print("Serial init (!)"); } Serial1.begin(9600); */ lcd.clear(); lcd.setCursor(0, 0); lcd.print("Message:"); lcd.setCursor(0, 1); lcd.print("Serial init OK"); // включаем GPRS шилд gprs.powerOn(); // проверяем есть ли связь с GPRS устройством while (!gprs.init()) { // если связи нет, ждём 1 секунду // и выводим сообщение об ошибке // процесс повторяется в цикле // пока не появится ответ от GPRS устройства delay(1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Message:"); lcd.setCursor(0, 1); lcd.print("gprs init (!)"); } lcd.clear(); lcd.setCursor(0, 0); lcd.print("Message:"); lcd.setCursor(0, 1); lcd.print("gprs init OK"); delay(1000); // выводим сообщение об удачной инициализации GPRS Shield lcd.clear(); lcd.setCursor(0, 0); lcd.print("Message:"); lcd.setCursor(0, 1); lcd.print("Ready for Use!"); delay(1000); } void loop() { /* // Копируем Serial --> Serial1 if(Serial.available()){ Serial1.write(Serial.read()); } */ // если пришло новое сообщение if (gprs.ifSMSNow()) { // читаем его gprs.readSMS(message, phone, datetime); // выводим номер, с которого пришло смс //Serial.print("From number: "); //Serial.println(phone); // выводим дату, когда пришло смс //Serial.print("Datetime: "); //Serial.println(datetime); // выводим текст сообщения //Serial.print("Recieved Message: "); //Serial.println(message); lcd.setCursor(0, 0); lcd.print("new message:"); lcd.setCursor(0, 1); lcd.print(message); } }
Может кто что подскажет, буду рад )
Тут скорее всего аппаратное что то.
скорее всего.но может я чего то недогоняю, по идее сигнал идет на serial который (0,1) хардверный, далее мы берем софтверный после запуска serial1, и после этого питание отваливается по совести,
пока не знаю как решить, могу и фоток накидать, если поможет, я какие только варианты не пробоавал, пока вообще безз понятия с чего продолжать
Правильно ли я понял, что: Леонардо - это обосрамс без sim900 шилда и экрана 1602?
Нет, леонардо мощная штука и по сравнению с уно имеет ряд преимуществ, но дело не в этом, а в том что при соединении сей конструкции на пинах, так как там два шилда, возникает ошибка
Именно что экран даёт картинку, а питание на сим нет,
если при запуске при инициализации serial передернуть питание шилда сим(а за сим стоит serial1) и включить его(да, так оно отключается), то сама ардуино перезапускается ибо коротыш возникает и все дропается
Могу и торую версию кода скинуть чуть позже, главное решение найти что я не так делаю
Правильно ли я понял, что: Леонардо - это обосрамс без sim900 шилда и экрана 1602?
Леонардо можно использовать как usb устройство(а-ля клава или прочию приколюхи) в отличие от uno в чистом виде, также леонардо имеет usb интерфейс что упрощает взаимодейстьвие с ней, банально кабель от зарядки и вперед
Но прошивается она через раз будто а то и через 50, своеобразная хреновину, зато сериал портов больше чем на ардуинке, вещь интересная
Кстати на сайте амперки, где примеры брал она и указана как совместимая без танцов с бубном, на уно надо замыкание делать чтобы питалось и вообще работало
А нафига тогда такие формулы? Я только шилд и экран в правую часть уравнения перенёс.
Это конечно все хорошо, но лучше по существу помоги человеку проблему решить:)
Простите, я Вам что-то должен? Не припомню.
Да и не умею я такие проблемы по существу решать. Я всё больше по части пофлудить.
Где то при переводе выводов на вывод происходит легкое КЗ - платы не сгорают, но и работать не могут.
Думал над решением, пришел к следующему, не могу понять в чем проблема с питанием
аппаратно нашел что если замкнуть 5V который на вывод и D9 питание постоянно идет на сим шилд, но почему то не включается все равно,
Для того чтобы не перекликались 7,8,9 - 8 и 9 были заменены на 10 и 12 на шилде экранном
7 без джампера не замкнут ничем
я короче вообще хз как с этим бороться
я короче вообще хз как с этим бороться
а если снять шилды и соединить проводами так, чтобы пины не пересекались и не замыкало?
Я вообще эти шилды недолюбливаю - это для детей, кмк
По идее так и сделал, так проще было с контактами шалить в последствии