Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
elektronik:arduino [2011/06/16 14:13] – angelegt volkerp | elektronik:arduino [2013/06/05 09:53] – angelegt admin | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Arduino ====== | ====== Arduino ====== | ||
+ | |||
+ | ===== Arduino Duemilanove ===== | ||
+ | |||
+ | |||
+ | Man kaufe bei ebay einen Arduino Duemilanove 2009 - Nachbau. (April 2011, EUR 15,99 aus Hongkong) | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | ===== DFRobot LCD keypad Shield ===== | ||
+ | |||
+ | 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: | ||
+ | { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||