Forum: Mikrocontroller und Digitale Elektronik Arduino Taster über Widerstände


von marc (Gast)


Lesenswert?

Hallo,
Habe ein SainSmart Display 1602 wie lese ich da am besten die Taster aus
oder wie kann ich das beispiel Projekt umschreiben damit nachdem die 
Taster ausgelesen wurden das eigentliche programm kommen kann.






/*
  The circuit:
 * LCD RS pin to digital pin 8
 * LCD Enable pin to digital pin 9
 * LCD D4 pin to digital pin 4
 * LCD D5 pin to digital pin 5
 * LCD D6 pin to digital pin 6
 * LCD D7 pin to digital pin 7
 * LCD BL pin to digital pin 10
 * KEY pin to analogl pin 0
 */

#include <LiquidCrystal.h>
#include <Keys.h>
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);

char msgs[5][16] = {"Right Key OK ",
                    "Up Key OK    ",
                    "Down Key OK  ",
                    "Left Key OK  ",
                    "Select Key OK" };

int adc_key_val[5] ={50, 200, 400, 600, 800 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;
void setup()

{
  lcd.clear();
  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  lcd.print("ADC key testing");
  Serial.begin(9600);
}

void loop()
{
  adc_key_in = analogRead(0);    // read the value from the sensor
  key = get_key(adc_key_in);  // convert into key press

  if (key != oldkey)   // if keypress is detected
   {
    delay(50);  // wait for debounce time
    adc_key_in = analogRead(0);    // read the value from the sensor
    key = get_key(adc_key_in);    // convert into key press
    if (key != oldkey)
    {
      lcd.setCursor(0, 1);
      oldkey = key;
      if (key >=0){
       int Button=key;
           Serial.print(Button);
      }
    }
  }
 delay(100);
}


 // Convert ADC value to key number
int get_key(unsigned int input)
{
    int k;

    for (k = 0; k < NUM_KEYS; k++)
    {
      if (input < adc_key_val[k])
 {
            return k;
        }
   }

    if (k >= NUM_KEYS)k = -1;  // No valid key pressed

 return k;

von lll (Gast)


Lesenswert?

marc schrieb:
> adc_key_in = analogRead(0);    // read the value from the sensor
>   key = get_key(adc_key_in);  // convert into key press

Da hast Du doch schon Deine Funktionen die wohl in key.h definiert sind.
Dann folgt die Prüfung auf neuen Wert und das entprellen.
Was verstehst Du nicht ?

von marc (Gast)


Lesenswert?

Ja das problem ist wie kann ich aus dieser code eine .h datei machen den 
wenn ich hinter diesen code ein programm setzt. dann passiert nichts 
mehr das ich ja mit return k zurück zum wert k gehe.

von marc (Gast)


Lesenswert?

die keys.h gibt es nicht ab ich vergessen raus zu löschen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.