Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| elektronik:arduino [2012/04/07 07:13] – volkerp | 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: | ||
| - | { | ||
| - | | ||
| - | | ||
| - | } | ||
| - | } | ||
| - | |||
| - | } | ||
| - | </ | ||