Arduino UNO + LCD дисплей

Motto
Offline
Зарегистрирован: 05.06.2014

Угораздило купить такую же штуку. За 320 руб. на Ибее.

Ardoino UNO с SainSmart 1602 LCD Keypad Shield, на котором экран 16х2 и 5 кнопок - Select, Left, Right, Up, Down.

С примерами тоже разобраться и запустить не смог.

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

Там аналоговый вход А0 подтянут к +5В через резюк 2К, а кнопки дают землю на А0. Правая напрямую, остальные через резисторы.

Соответственно, если кнопки не нажаты, на входе А0 будет значение 1023.

При нажатии кнопки Right, которая замыкает землю на пин А0, на входе А0 будет 0.

Остальные кнопки будут давать значения по возрастающей. Самая последняя дает значение 700 с чем то.

Т.к. значения на А0 напрямую зависят от напряжения, которое может быть от 4,4 до 4,8В, нужно предусматривать допуски по значениям.

Ну или для любителей преодолевать трудности - вход Aref перевести в режим external и подать ровно 5В со стабилизатора напруги. :)

Кнопки на шилде двойные, используются оба контакта, замучался с дребезгом контатов бороться.

Хочу попробовать бросить проводок с кнопок на цифровой пин D2 или D3 и повесить обработчик кнопок на прерывание  по срезу сигнала. Странно, что китайцам самим не пришла в голову такая идея.

По прерыванию от таймера кнопки опрашивать некошерно, производительность падает.

 

Качеством шилда не очень доволен.

Кнопки тугие.

На плате только дырки, гребёнок в комплекте нет, пришлось докупить и паять самому.

Есть свободные пины с D11 по D14, так они вообще не выведены, дырок в плате нет. Только припаивать провода соплями прямо к ножкам шилда.

Как игрушка годится.

Для серьезного использования нужно допиливать и допаивать.

kobalt
Offline
Зарегистрирован: 12.08.2015

Arduino LCD KeyPad Shield  (двухстрочный экран с кнопками)

http://www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)

нашел здесь вполне вменяемый код. по крайней мере отрабатывает нажатия кнопок... и показывает, что было нажато на экране..

//Sample using LiquidCrystal library
#include <LiquidCrystal.h>

/*******************************************************

This program will test the LCD panel and the buttons
Mark Bramwell, July 2010

********************************************************/

// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// define some values used by the panel and buttons
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

// read the buttons
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // read the value from the sensor 
 // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
 // we add approx 50 to those values and check to see if we are close
 if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
 // For V1.1 us this threshold
 if (adc_key_in < 50)   return btnRIGHT;  
 if (adc_key_in < 250)  return btnUP; 
 if (adc_key_in < 450)  return btnDOWN; 
 if (adc_key_in < 650)  return btnLEFT; 
 if (adc_key_in < 850)  return btnSELECT;  

 // For V1.0 comment the other threshold and use the one below:
/*
 if (adc_key_in < 50)   return btnRIGHT;  
 if (adc_key_in < 195)  return btnUP; 
 if (adc_key_in < 380)  return btnDOWN; 
 if (adc_key_in < 555)  return btnLEFT; 
 if (adc_key_in < 790)  return btnSELECT;   
*/


 return btnNONE;  // when all others fail, return this...
}

void setup()
{
 lcd.begin(16, 2);              // start the library
 lcd.setCursor(0,0);
 lcd.print("Push the buttons"); // print a simple message
}
 
void loop()
{
 lcd.setCursor(9,1);            // move cursor to second line "1" and 9 spaces over
 lcd.print(millis()/1000);      // display seconds elapsed since power-up


 lcd.setCursor(0,1);            // move to the begining of the second line
 lcd_key = read_LCD_buttons();  // read the buttons

 switch (lcd_key)               // depending on which button was pushed, we perform an action
 {
   case btnRIGHT:
     {
     lcd.print("RIGHT ");
     break;
     }
   case btnLEFT:
     {
     lcd.print("LEFT   ");
     break;
     }
   case btnUP:
     {
     lcd.print("UP    ");
     break;
     }
   case btnDOWN:
     {
     lcd.print("DOWN  ");
     break;
     }
   case btnSELECT:
     {
     lcd.print("SELECT");
     break;
     }
     case btnNONE:
     {
     lcd.print("NONE  ");
     break;
     }
 }

}

 

Varabayba
Offline
Зарегистрирован: 27.02.2016

Парни, дико извиняюсь, токо не банте, я хороший

Может кто возьмет заказ на эту железку?  

Если подробно - есть Ардуино Уно и к ней LCD Keypad Shild 1602 + драйвер шагового двигателя A4988 + nema17 (шаговый двигатель)

нужно следущее - простенькая прога, вращаяющая двигатель и  выводящая на экран скорость вращения двигателя + воможность управлять скоростью 

кнопками вверх вниз 

шаг скорости - десятая оборота. 

все 

Стыдно просить - но реально нету времени разбираться с шилдом. 

Помогите за деньги в разумных пределах, а? 

pbx
Offline
Зарегистрирован: 19.02.2016
avatort
Offline
Зарегистрирован: 21.06.2017

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

DIVGENY
Offline
Зарегистрирован: 23.08.2016

del