Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
elektronik:arduino [2013/06/05 09:53] – angelegt admin | elektronik:arduino [2015/04/16 18:51] (aktuell) – volkerp | ||
---|---|---|---|
Zeile 9: | Zeile 9: | ||
- | ===== DFRobot LCD keypad Shield | + | ===== meine Uhr ===== |
- | Und ein DFRobot LCD keypad Shield (Mai 2011, US $17,75 aus Hongkong) | ||
{{: | {{: | ||
- | |||
- | Unterlagen, Schaltplan, Beispielcode: | ||
- | |||
- | http:// | ||
- | |||
- | etwas in Deutsch: | ||
- | |||
- | http:// | ||
- | |||
- | ^ Arduino Pin ^ LCD-Pin ^ | ||
- | | Analog 0 | Taste (Up, Down, Left, Right, Select) | | ||
- | | Digital 4 | DB 4 | | ||
- | | Digital 5 | DB 5 | | ||
- | | Digital 6 | DB 6 | | ||
- | | Digital 7 | DB 7 | | ||
- | | Digital 8 | RS (Command or Data) | | ||
- | | Digital 9 | Enable | | ||
- | | Digital 10 | Hintergrundbeleuchtung | | ||
- | |||
- | Neben einer normalen 2x16-LCD-Anzeige mit Hintergrundbeleuchtung gibt es 5 Tasten, die interessanterweise nicht einzeln auf Digitalports gehen, sondern nur über einen einzigen Analogport abgefragt werden: Die Tasten liefern über einen Widerstands-Spannungsteilerkette unterschiedliche Spannungswerte. | ||
- | |||
- | Die LCD-Anzeige kann über die Standard-Arduino-Bibliothek **LiquidCrystal** angesteuert werden. Initilaisierung | ||
- | |||
- | LiquidCrystal lcd(8, | ||
- | |||
- | Die Tasten werden so abgefragt: | ||
- | |||
- | < | ||
- | //Sample using LiquidCrystal library | ||
- | #include < | ||
- | |||
- | / | ||
- | |||
- | 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 | ||
- | int adc_key_in | ||
- | #define btnRIGHT | ||
- | #define btnUP 1 | ||
- | #define btnDOWN | ||
- | #define btnLEFT | ||
- | #define btnSELECT 4 | ||
- | #define btnNONE | ||
- | |||
- | // read the buttons | ||
- | int read_LCD_buttons() | ||
- | { | ||
- | | ||
- | // 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 | ||
- | if (adc_key_in < 50) | ||
- | 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; | ||
- | | ||
- | } | ||
- | |||
- | void setup() | ||
- | { | ||
- | | ||
- | | ||
- | | ||
- | } | ||
- | |||
- | void loop() | ||
- | { | ||
- | | ||
- | | ||
- | |||
- | |||
- | | ||
- | | ||
- | |||
- | | ||
- | { | ||
- | case btnRIGHT: | ||
- | { | ||
- | | ||
- | | ||
- | } | ||
- | case btnLEFT: | ||
- | { | ||
- | | ||
- | | ||
- | } | ||
- | case btnUP: | ||
- | { | ||
- | | ||
- | | ||
- | } | ||
- | case btnDOWN: | ||
- | { | ||
- | | ||
- | | ||
- | } | ||
- | case btnSELECT: | ||
- | { | ||
- | | ||
- | | ||
- | } | ||
- | case btnNONE: | ||
- | { | ||
- | | ||
- | | ||
- | } | ||
- | } | ||
- | |||
- | } | ||
- | </ | ||