Вопрос по Шилду LCD

Тема в разделе "Arduino & Shields", создана пользователем ямук, 10 фев 2016.

  1. ямук

    ямук Нерд

    Здравствуйте!
    http://www.chipdip.ru/product/shield-lcd16x2/
    Подскажите как дернуть на этом шилде состояние кнопок т.е. при нажатии кнопки 1 переменная R меняется.

    СКЕТЧ СТАНДАРТНЫЙ такой
    #include <LCD16x2.h>
    #include <Wire.h>

    LCD16x2 lcd;

    int buttons;

    void setup(){
    Wire.begin();

    lcd.lcdClear();
    lcd.lcdGoToXY(2,1);
    lcd.lcdWrite("BUT1:");
    lcd.lcdGoToXY(10,1);
    lcd.lcdWrite("BUT2:");
    lcd.lcdGoToXY(2,2);
    lcd.lcdWrite("BUT3:");
    lcd.lcdGoToXY(10,2);
    lcd.lcdWrite("BUT4:");
    }
    void loop(){
    buttons = lcd.readButtons();
    lcd.lcdGoToXY(7,1);
    if(buttons & 0x01)
    lcd.lcdWrite("0");
    else
    lcd.lcdWrite("1");

    lcd.lcdGoToXY(15,1);
    if(buttons & 0x02)
    lcd.lcdWrite("0");
    else
    lcd.lcdWrite("1");

    lcd.lcdGoToXY(7,2);
    if(buttons & 0x04)
    lcd.lcdWrite("0");
    else
    lcd.lcdWrite("1");

    lcd.lcdGoToXY(15,2);
    if(buttons & 0x08)
    lcd.lcdWrite("0");
    else
    lcd.lcdWrite("1");

    delay(100);

    }

    И хотел уточнить если подать на VIN контакт 9-12 вольт не загнется ли Дуня(ИСКРА)?
     
    Последнее редактирование: 10 фев 2016
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    там же в архиве есть пример кода именно для Arduino: LCDandButtons.ino
     
  3. ямук

    ямук Нерд

    Я вам Buttons_And_LCD скетч и скинул но как узнать какое значение на кнопке. то есть по фрагменту лсд печатает в 7/1
    если button = 0х001 то "1" если перевернутое то "0" а какое нулевое состояние ?
    {buttons = lcd.readButtons();
    lcd.lcdGoToXY(7,1);
    if(buttons & 0x01)
    lcd.lcdWrite("0");
    else
    lcd.lcdWrite("1");}

    СТРОГО НЕ СУДИТЕ ТОЛЬКО РАЗБИРАЮСЬ!!!
     
  4. vvr

    vvr Инженерище

    посмотрите что там в библиотеке написано
     
  5. ямук

    ямук Нерд

    ))) хоть что искать? )))) Сардуино неделю ковыряюсь. прием пеедатч научился, часы запустил в пинципе не сложно но с этой библ ломаю голову.
    Заранее спасибо.
     
  6. vvr

    vvr Инженерище

    я с таким шилдом не связывался, у меня его нет
    с библиотекой не работал и не разбирался
    то что вы ковыряетесь неделю с дуней не о чём не говорит - или ждите что кто то с этим же уже сталкивался, или хочет просто так поковыряться или сами изучайте
    по другому никак
     
    Limoney нравится это.
  7. Tomasina

    Tomasina Сушитель лампочек Модератор

    вот нифига не понятно что имелось в виду.
    Там же четко прописано: если нажата кнопка 1, то... , если нажата кнопка 2, то... , то есть примерно так:
    Код (C++):
    #include <LCD16x2.h>
    #include <Wire.h>
    LCD16x2 lcd;
    int buttons;
    int x = 0;
    int y = 0;

    void setup(){
      Wire.begin();
      lcd.lcdClear();

      lcd.lcdGoToXY(2,1);
      lcd.lcdWrite("X = ");

      lcd.lcdGoToXY(10,1);
      lcd.lcdWrite("Y = ");
    }

    void loop(){
      buttons = lcd.readButtons();

      lcd.lcdGoToXY(7,1);
      if(buttons & 0x01)
      {
      }
      else
      {
        x = x + 1;
        lcd.lcdWrite(x);
      }

      lcd.lcdGoToXY(15,1);
      if(buttons & 0x02)
      {
      }
      else
      {
        y = y + 1;
        lcd.lcdWrite(y);
      }

      delay(100);

    }
     
     
    Limoney нравится это.
  8. ямук

    ямук Нерд

    Неделю это означает что опыта нет, а не то что прогресса нет. Я и изучаю сам просто мозг вскипел оригинальный скетч я переделал а по состоянию кнопок затык. Вот и спрашиваю.
    Спасибо за ответ.
     
  9. ямук

    ямук Нерд

    Спасибо попробую.
     
  10. Limoney

    Limoney Гик

    Описание
    http://lib.chipdip.ru/153/DOC001153686.pdf
    1.4 GET_BUT (0×05)
    Состояние четырех кнопок возвращает функция lcd.readButtons как значение из диапазона от 0 до 16. Полученное значение соответствует коду нажатых и отжатых кнопок.
    При этом последовательность нажатия 4 кнопок может быть любая, как одно нажатие кнопки, так и несколько кнопок нажатых одновременно. К каждой кнопки присвоен свой разряд в коде нажатия кнопок. Нажатие кнопки изменяет соответствующий разряд с «1» на «0», а отжатая кнопка изменяет соответствующий разряд с «0» на «1», формируя код состояния для всех кнопок.

    Пример: код 0×05 → 00000101 показывает, что нажаты 2 и 4 кнопки, а кнопки 1 и 3 отжаты.

    button1 → 1 → OFF
    button2 → 0 → ON
    button3 → 1 → OFF
    button4 → 0 → ON


    Код (C++):
    #include <LCD16x2.h>
    #include <Wire.h>
    LCD16x2 lcd;

    int buttons;

    void setup(){
      Wire.begin();

      lcd.lcdClear();
     
      lcd.lcdGoToXY(2,1);
      lcd.lcdWrite("BUT1:");
     
      lcd.lcdGoToXY(10,1);
      lcd.lcdWrite("BUT2:");
     
      lcd.lcdGoToXY(2,2);
      lcd.lcdWrite("BUT3:");
     
      lcd.lcdGoToXY(10,2);
      lcd.lcdWrite("BUT4:");
    }
    void loop(){
     
      buttons = lcd.readButtons();
     
      lcd.lcdGoToXY(7,1);
      if(buttons & 0x01)    // кнопка 1
        lcd.lcdWrite("0");
      else
        lcd.lcdWrite("1");
       
      lcd.lcdGoToXY(15,1);
      if(buttons & 0x02)    // кнопка 2
        lcd.lcdWrite("0");
      else
        lcd.lcdWrite("1");
       
      lcd.lcdGoToXY(7,2);
      if(buttons & 0x04)    // кнопка 3
        lcd.lcdWrite("0");
      else
        lcd.lcdWrite("1");
       
      lcd.lcdGoToXY(15,2);
      if(buttons & 0x08)    // кнопка 4
        lcd.lcdWrite("0");
      else
        lcd.lcdWrite("1");
       
      delay(100);
    }
     
     
  11. ямук

    ямук Нерд