Arduino & I2CLCD & LCD_button 5
I2CLCD-E2 LCD-vezérlő + 5 gombos billentyűzet - használata
Sziasztok!
Remélem téved ide valaki, tekintve, hogy 2010-es a téma.
Egy AVR-Aurdino/uno alaplapon, WizNetShield és ahhoz I2C buszon csatlakozó (a fenti címben) E2 az LCD-vel és az 5 gombos panellel alkotja az összeállítást.
A gombok kezelésénél elakadtam. Az LCD-t tudom a sajat lib-vel I2C-n keresztűl kezelni. Viszont az 5 gombos panelhez nem találtam minta programot, vagy leírást.
Tudna valaki segíteni?
Köszönöm,
Ákos
Remélem téved ide valaki, tekintve, hogy 2010-es a téma.
Egy AVR-Aurdino/uno alaplapon, WizNetShield és ahhoz I2C buszon csatlakozó (a fenti címben) E2 az LCD-vel és az 5 gombos panellel alkotja az összeállítást.
A gombok kezelésénél elakadtam. Az LCD-t tudom a sajat lib-vel I2C-n keresztűl kezelni. Viszont az 5 gombos panelhez nem találtam minta programot, vagy leírást.
Tudna valaki segíteni?
Köszönöm,
Ákos
Kód: Egész kijelölése
'********************************************************************
'* Program nev: Duino-Mini-i2c_lcd.bas *
'* Board : AVR-Duino MiniBoard v1 *
'* Fordito : BASCOM AVR, (V.1.11.9.8) *
'* Datum : 2011-07-12 *
'* Honlap : http://avr.tavir.hu *
'* *
'* Irta : Cseh Róbert *
'********************************************************************
'--- Alapadatok ---
$crystal = 16000000 'Sebesseg
$regfile = "M168def.dat" 'Chip
$baud = 9600
$swstack = 64
$hwstack = 64
$framesize = 64
Dim Temp1b As Byte
Dim Temp2b As Byte
Dim Temp3b As Byte
Speaker Alias Portb.2
Config Speaker = Output 'Hangszoro
Reset Speaker
'configure the used port pin for I2C
Config I2cdelay = 5 ' default slow mode:5
Config Sda = Portc.4
Config Scl = Portc.5
Waitms 50
I2cinit
'I2C_LCD
$lib "#lcd_i2c-bl_mcpduo.lib" 'MCP23017(40)+MCP23008(4E)
Const _i2c_lcd_address_w40 = &B01000000 'MCP23017
Const _i2c_lcd_address_w4e = &B01001110 'MCP23008
Const _i2c_lcd_bl = 0 'Backlight yes/no
Config Lcd = 16 * 2
Const Iocon = &B00001100
Const Iodirki = 0
Const Iodirbe = 255
Dim I2c_lcd_b As Byte
Const Bit_rs = 4
Const Bit_e = 7
Const Bit_bl = 6
Const I2c_lcd_bl = 0 'hattervilagitas
Gosub Csipog1
Initlcd
Cls
Initlcd
Cls
Lcd "TavIR"
Waitms 500
For Temp1b = 1 To 40
Shiftlcd Left
Waitms 100
Next Temp1
Wait 1
'I2C_lcd_gomb
'Inputhex "MCP23017 - LCD address (hex):" , Temp1b
Do
I2cinit
Initlcd
'Temp1b = &B01000000
'I2C_lcd_gomb
Ujra:
I2cstart
I2cwbyte _i2c_lcd_address_w40
I2cwbyte &H12
I2cstop
I2cstart
Temp1b = _i2c_lcd_address_w40 + 1
I2cwbyte Temp1b
I2crbyte Temp2b , Nack
I2cstop
Waitms 10 'prell kivedese
I2cstart
I2cwbyte _i2c_lcd_address_w40
I2cwbyte &H12
I2cstop
I2cstart
I2cwbyte Temp1b
I2crbyte Temp3b , Nack
I2cstop
If Temp3b <> Temp2b Then
Temp3b = 0
Else
If Temp3b <> 0 Then Gosub Csipog1
End If
If Temp3b = 0 Then Goto Ujra
Cls
Lcd "Gomb:" ; Bin(temp3b)
Print "Gomb : " ; Bin(temp3b) ; " : ";
If Temp3b = &B00001000 Then Print "1"
If Temp3b = &B00100000 Then Print "2"
If Temp3b = &B00000001 Then Print "3"
If Temp3b = &B00000010 Then Print "4"
If Temp3b = &B10000000 Then Print "5"
If Temp3b = &B11000000 Then Print "5M"
Loop
End 'end program
Csipog2:
Sound Speaker , 100 , 700 'make some noice
Sound Speaker , 100 , 900 'make some noice
Csipog1:
Sound Speaker , 100 , 700 'make some noice
Return
valahol fenn van még....
most itt is:)
A hozzászólást 1 alkalommal szerkesztették, utoljára Robert 2012. február 4. szombat, 6:47-kor.
Szia Róbert!
Köszönöm. Kipróbáltam amit küldtél és működik. Sőt közben megtaláltam a tőled vásárolt CD-n az avr-duino-all2.bas-ban is a Prog33: címkénél.
Viszont ez azt csinálja, hogy egy hurokban folyamatosan lekérdez. Azt hogyan tudom megoldani, hogy megszakításként egy szubrutin induljon, ha egy gomb lenyomódik és ott kapjam meg valahogy a gomb kódját?
Köszi
Ákos
Köszönöm. Kipróbáltam amit küldtél és működik. Sőt közben megtaláltam a tőled vásárolt CD-n az avr-duino-all2.bas-ban is a Prog33: címkénél.
Viszont ez azt csinálja, hogy egy hurokban folyamatosan lekérdez. Azt hogyan tudom megoldani, hogy megszakításként egy szubrutin induljon, ha egy gomb lenyomódik és ott kapjam meg valahogy a gomb kódját?
Köszi
Ákos
Ezzel próbáltam vezérlő panelen lévő MCP23017-en beállítani, hogy megszakítást generáljon. Ha jól láttam az i2c_lcd-hez készíett LIB-edből, akkor a gomb a B porton van, igaz?
Viszont nem generál megszakítást.
Ezt a rutint az általad i2c LCD kezeléshez adott lib inicializálása után hívom.
A Kbd_w értéke ezzel azonos :
Const _i2c_lcd_address_w40 = &B01000000 'MCP23017
Akár 1, akár 0-t írok INTCONB-be, akkor sem megy.
Viszont nem generál megszakítást.
Ezt a rutint az általad i2c LCD kezeléshez adott lib inicializálása után hívom.
A Kbd_w értéke ezzel azonos :
Const _i2c_lcd_address_w40 = &B01000000 'MCP23017
Akár 1, akár 0-t írok INTCONB-be, akkor sem megy.
Kód: Egész kijelölése
'------------------------------------------------------------------------------
' 5 gombos panel INT alapú kezelésének inicializálása
'------------------------------------------------------------------------------
Sub I2c_kbd_init
'A GPIOB alapértelmezett értéke, ehhez fogja hasonlítani a változást
I2cstart
I2cwbyte Kbd_w
I2cwbyte &H07 'DEFVALB
I2cwbyte 255
I2cstop
'GPIOB megszakításvezérlésének beállítása
'0->A láb előző állapotával hasonlítja össze
'1->A DEFVALB regiszterben megadott értékkel hasonlítja össze
I2cstart
I2cwbyte Kbd_w
I2cwbyte &H09 'INTCONB
I2cwbyte 0
I2cstop
'Engedélyezzük a nyomógomboknak a megszakítást
I2cstart
I2cwbyte Kbd_w
I2cwbyte &H05 'GPINTENB
I2cwbyte 255
I2cstop
End Sub
Háttérvilágítás
Sziasztok!
A háttérvilágítását az LCD-nek a programban, menet közben szeretném ki-be kapcsolni. Van erre valakinek valamilyen ötlete? (a lib-nek ugye konstansként kell megadni)
A háttérvilágítását az LCD-nek a programban, menet közben szeretném ki-be kapcsolni. Van erre valakinek valamilyen ötlete? (a lib-nek ugye konstansként kell megadni)
Sikerült ebben a témában eredményre jutnia valakinek?
Nekem még olyan bajom is van, hogy ha rákötöm az 5 gombos kis panelt az LCD vezérlő panelra, akkor a B port bemenetei bizonytalanok. Időnként egyik másik be-be billen. Ezt még ki lehet védeni ugye a fentebb is írt kóddal, de szerintem a megszakításnál is gondot jelentene.
Találkozott valaki ilyen problémával?
aaszabo írta:Ezzel próbáltam vezérlő panelen lévő MCP23017-en beállítani, hogy megszakítást generáljon........
Nekem még olyan bajom is van, hogy ha rákötöm az 5 gombos kis panelt az LCD vezérlő panelra, akkor a B port bemenetei bizonytalanok. Időnként egyik másik be-be billen. Ezt még ki lehet védeni ugye a fentebb is írt kóddal, de szerintem a megszakításnál is gondot jelentene.
Találkozott valaki ilyen problémával?
Bascom-AVR alatt:
Este felrakom (ill talán fenn is van) a file cserebere alatt. I2C LCD néven.
Kód: Egész kijelölése
const hatter= '0 v. 1
.
'kiirorutinban
'kiirando adat _temp1
temp1.hatterbit = hatter
' kiirorutin a 2 félszammal (nibble)
Nagyon köszi előre is!
Robert írta:Bascom-AVR alatt:
Este felrakom (ill talán fenn is van) a file cserebere alatt. I2C LCD néven.Kód: Egész kijelölése
const hatter= '0 v. 1 . 'kiirorutinban 'kiirando adat _temp1 temp1.hatterbit = hatter ' kiirorutin a 2 félszammal (nibble)