Здравствуйте! 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 вольт не загнется ли Дуня(ИСКРА)?
Я вам 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");} СТРОГО НЕ СУДИТЕ ТОЛЬКО РАЗБИРАЮСЬ!!!
))) хоть что искать? )))) Сардуино неделю ковыряюсь. прием пеедатч научился, часы запустил в пинципе не сложно но с этой библ ломаю голову. Заранее спасибо.
я с таким шилдом не связывался, у меня его нет с библиотекой не работал и не разбирался то что вы ковыряетесь неделю с дуней не о чём не говорит - или ждите что кто то с этим же уже сталкивался, или хочет просто так поковыряться или сами изучайте по другому никак
вот нифига не понятно что имелось в виду. Там же четко прописано: если нажата кнопка 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); }
Неделю это означает что опыта нет, а не то что прогресса нет. Я и изучаю сам просто мозг вскипел оригинальный скетч я переделал а по состоянию кнопок затык. Вот и спрашиваю. Спасибо за ответ.
Описание 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); }