LCD Keypad shield

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
didasz
Újonc
Újonc
Hozzászólások: 11
Csatlakozott: 2017. január 28. szombat, 11:47

LCD Keypad shield

Hozzászólás Szerző: didasz »

Sziasztok,

Az LCD Keypad shield-el vannak problémáim, kezdő vagyok így valószínű egyszerű a megoldás csak én nem jövök rá.
Az lenne a nagy kérdésem, hogy miért nem működik a 12es digitális pinre kötött nyomógom miközben a shield a A0 analóg bemeneten a nyomógombokat használja.
Egy mérőberendezést szeretnék csinálni ahol az LCD shield gombjaival tudom beállítani a kívánt hosszt a nyomógomb pedig egy merőkerék minden körbefordulásakor levonna egyet a beállított értékből
A két dolog külön külön működig de egy programon belül nem.

a segítségeteket előre is köszönöm
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: LCD Keypad shield

Hozzászólás Szerző: Robert »

Ha külön.külön megy - akkor a programodban van hiba.
A gombra tettél felhúzóellenállás? Vagy a belsőt használod? És fel is húzod?
A bemenetet hogy olvasod?

Azért programkóddal könnyebb lenne :) ...
http://www.tavir.hu - a gazda :)
didasz
Újonc
Újonc
Hozzászólások: 11
Csatlakozott: 2017. január 28. szombat, 11:47

Re: LCD Keypad shield

Hozzászólás Szerző: didasz »

A mikrókapcsolóra tetem egy ellenállást ahogy a tanfolyamodon tanultam :-)
a program a következő:

Kód: Egész kijelölése

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int lcd_key     = 0;
int lcd_gombok  = 0;

int szamlalo     = 0;
int szamlalo_jel = 0;

int vissza_szamlalo       = 0;
int vissza_szamlalo_jel   = 0;
int vissza_szamlalo_pin   = 12;
int vissza_szamlalo_gomb  = 0;

int rele_pin    = 13;

void setup()
{
  
  pinMode(vissza_szamlalo_pin, INPUT);
  pinMode(rele_pin, OUTPUT);

 lcd.begin(16, 2);             
 lcd.setCursor(0,0);
 lcd.print("szamlalo proba");
 delay(3000);
 lcd.clear();
}
 

void loop(){
  
 lcd.setCursor(0,0);
 lcd.print("Le.tek.m.");
 lcd.setCursor(9,0); 
 lcd.print(vissza_szamlalo_jel);      // kiírja a vissza számláló jel állását a képernyőre
 lcd.setCursor(12,0);            
 lcd.print(vissza_szamlalo);      // kiírja a vissza számláló állását a képernyőre
 lcd.setCursor(15,0);            
 lcd.print("m");      

  
 lcd.setCursor(0,1);
 lcd.print("Be.all.m.");
 lcd.setCursor(9,1);         
 lcd.print(szamlalo_jel);      // kiírja a számláló jel állását a képernyőre
 lcd.setCursor(12,1);           
 lcd.print(szamlalo);      // kiírja a számláló állását a képernyőre
 lcd.setCursor(15,1);          
 lcd.print("m");      


  vissza_szamlalo_gomb = digitalRead(12);

     if (vissza_szamlalo_gomb == HIGH ){ // ha meg van nyomva a vissza_számláló kapcsoló akkor hozzáadja a vissza_száláló_jel-et
        delay(50);
           vissza_szamlalo = vissza_szamlalo + vissza_szamlalo_jel;
        delay(50);
           vissza_szamlalo_jel = 0; // miután hozzáadta a vissza_számláló_jel-et 0 lesz a jel értéke hogy ne számoljon folyamatosan
  }
     else{
        delay(10);
           vissza_szamlalo_jel = 1; // ha nincs megnyomva a visszaszámláló kapcsoló akkor a jel értéke 1

     }

 lcd_gombok = analogRead(0);   
 //lcd.setCursor(0,0);            
 //lcd.print(lcd_gombok);      
 
  if (lcd_gombok < 50){ //RIGHT
    szamlalo = szamlalo + szamlalo_jel;
    delay(50);
    szamlalo_jel = 0;
  }
  
  if (lcd_gombok < 195){ //UP
    szamlalo = szamlalo + szamlalo_jel * 10;
    delay(50);
    szamlalo_jel = 0;
  }
  
    if (lcd_gombok < 380){ //DOWN
    szamlalo = szamlalo - szamlalo_jel * 10;
    delay(50);
    szamlalo_jel = 0;
  }
  
    if (lcd_gombok < 555){ //LEFT
    szamlalo = szamlalo - szamlalo_jel;
    delay(50);
    szamlalo_jel = 0;
  }
  

  

 
  if (lcd_gombok > 1010){
    szamlalo_jel = 1;
  }
  

}

Még nincs kész de ennék a nyomógombos dolognál elakadtam.

Még lenne egy relé a 13. Pinre kötve ami egy relét működtetné ami pedig a motort kapcsolná ki - be.
A beállítást követően a "select" gomb indíaná a motort, amint az előre beállított métert eléri a számláló akkor kikapcsolja a motort.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: LCD Keypad shield

Hozzászólás Szerző: Robert »

12-es láb és 5V közé Ellenállás, Láb és GND közé kapcsoló...
http://www.tavir.hu - a gazda :)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: LCD Keypad shield

Hozzászólás Szerző: Robert »

A nyomógombod a láb és az 5V közt van?
Fordított logika kéne!

Ebből gondolom:

Kód: Egész kijelölése

   if (vissza_szamlalo_gomb == HIGH ){ // ha meg van nyomva a vissza_számláló kapcsoló akkor hozzáadja a vissza_száláló_jel-et
http://www.tavir.hu - a gazda :)
didasz
Újonc
Újonc
Hozzászólások: 11
Csatlakozott: 2017. január 28. szombat, 11:47

Re: LCD Keypad shield

Hozzászólás Szerző: didasz »

sikerült,
így már tényleg működik

Köszönöm szépen
Válasz küldése