Celoten opis
Model: CJMCU-122 MPR121 modul kapacitivni zaslon na dotik gumb senzor za zaznavanje gumb tipkovnica Velikost: 48 mm * 78 mm
Opis: MPR121 kapacitivni zaslon tipkovnica uporablja MPR121 in 12 dotik občutljive blazinice, da vam preprost "tipkovnica" s I2C izhod.Odbor ima štiri pritrdilne luknje, ki omogoča, da se uporabljajo kot vhodni sistem v mestu tradicionalnih gumbi.Preverite primer kodo spodaj za enostaven način, da preberete tipkovnico.cjmcu.
Opomba: Ta tipkovnica rezultatov 3.3 V logiko.Če uporabljate odbor, ki sprejema samo 5V logiko, boste zašli v težave.Boste želeli uporabiti logika ravni pretvornik, ali odbor, ki sprejema 3.3 V logiko.
=================================================================== /* MPR121 Tipkovnica Primer Telefon Klicanje Kodo za: Jim Lindblom SparkFun Elektronika ustvarjen na: 1/6/10 licenca: CC-SA 3.0 Obrne MPR121 Sledilna ploščica v telefonsko tipkovnico.Pritiskom tipke se bo tiskanje od 0 do 9, * in #.Strojna oprema: 3.3 V Arduino Pro Mini SDA -> A4 SCL -> A5 IRQ -> D2 nisem bil, ki imajo katero koli srečo s pomočjo Žice.h knjižnici, tako da sem prilagoditi I2C koda iz ATmega328 knjižnico, da bi dobili to delo.Če lahko dobim to delo z Žico.h knjižnici, sem navdušena, da slišati! */ #include "mpr121.h" #include "i2c.h" #define MPR121_R 0xB5// ADD pin temelji #določite MPR121_W 0xB4// Tako naslov je 0x5A #določite PHONE_DIGITS 10 // 10 mest na telefonsko številko // Ujemanja ključnih vhodi z elektroda številke #določite STAR 0 #define SEDMIH 1 #define ŠTIRI 2 #define ENE 3 #določite NIČLO 4 #določite OSMIH 5 #določite PET 6 #določite DVA 7 #določite FUNT 8 #določite DEVET 9 #določite ŠESTIH 10 #opredeli TRI 11 int irqpin = 2; // D2 uint16_t touchstatus; char phoneNumber[PHONE_DIGITS]; void setup() { pinMode(irqpin, PISANJA); digitalWrite(irqpin, VISOKA); Serijsko.začnite(9600); DDRC = 0b00010011; PORTC = 0b00110000; // Pull-ups na I2C vodila i2cInit(); delay(100); mpr121QuickConfig(); } void loop() { getPhoneNumber(); Serijsko.print("\nDialing... "); for (int i=0; i Serijsko.print(phoneNumber[i]); while(1) ; } void getPhoneNumber() { int i = 0; int touchNumber; Serijsko.println("Prosim, Vnesite telefonsko številko..."); while(i { ko(checkInterrupt()) ; touchNumber = 0; touchstatus = mpr121Read(0x01) touchstatus = mpr121Read(0x00); for (int j=0; j { if ((touchstatus & (1 touchNumber++; } if (touchNumber == 1) { if (touchstatus & (1 phoneNumber[i] = '*'; else if (touchstatus & (1 phoneNumber[i] = '7'; else if (touchstatus & (1 phoneNumber[i] = '4'; else if (touchstatus & (1 phoneNumber[i] = '1'; else if (touchstatus & (1 phoneNumber[i] = '0'; else if (touchstatus & (1 phoneNumber[i] = '8'; else if (touchstatus & (1 phoneNumber[i] = '5'; else if (touchstatus & (1 phoneNumber[i] = '2'; else if (touchstatus & (1 phoneNumber[i] = '#'; else if (touchstatus & (1 phoneNumber[i] = '9'; else if (touchstatus & (1 phoneNumber[i] = '6'; else if (touchstatus & (1 phoneNumber[i] = '3'; Serijsko.print(phoneNumber[i]); i++; } else if (touchNumber == 0) ; else Serijsko.println("Le dotaknite se ENEGA gumb!"); } } bajt mpr121Read(uint8_t naslov) { bajt podatkov; i2cSendStart(); i2cWaitForComplete(); i2cSendByte(MPR121_W);// pisanje 0xB4 i2cWaitForComplete(); i2cSendByte(naslov);// pisanje register naslov i2cWaitForComplete(); i2cSendStart(); i2cSendByte(MPR121_R);// pisanje 0xB5 i2cWaitForComplete(); i2cReceiveByte(TRUE); i2cWaitForComplete(); podatki = i2cGetReceivedByte();// Get MSB rezultat i2cWaitForComplete(); i2cSendStop(); cbi(TWCR, TWEN);// Onemogočite TWI sbi(TWCR, TWEN);// Enable TWI vrniti podatkov; } void mpr121Write(nepodpisani char naslov, nepodpisani char podatkov) { i2cSendStart(); i2cWaitForComplete(); i2cSendByte(MPR121_W);// pisanje 0xB4 i2cWaitForComplete(); i2cSendByte(naslov);// pisanje register naslov i2cWaitForComplete(); i2cSendByte(podatki); i2cWaitForComplete(); i2cSendStop(); } void mpr121QuickConfig(nična) { // Oddelka // Ta skupina nadzor za filtriranje, ko podatki > izhodišča.mpr121Write(MHD_R, 0x01); mpr121Write(NHD_R, 0x01); mpr121Write(NCL_R, 0x00); mpr121Write(FDL_R, 0x00); // Oddelek B // Ta skupina nadzor za filtriranje podatkov, ko je mpr121Write(MHD_F, 0x01); mpr121Write(NHD_F, 0x01); mpr121Write(NCL_F, 0xFF); mpr121Write(FDL_F, 0x02); // Oddelek C // Ta skupina določa dotik in sprostitev mejne vrednosti za vsako elektroda mpr121Write(ELE0_T, TOU_THRESH); mpr121Write(ELE0_R, REL_THRESH); mpr121Write(ELE1_T, TOU_THRESH); mpr121Write(ELE1_R, REL_THRESH); mpr121Write(ELE2_T, TOU_THRESH); mpr121Write(ELE2_R, REL_THRESH); mpr121Write(ELE3_T, TOU_THRESH); mpr121Write(ELE3_R, REL_THRESH); mpr121Write(ELE4_T, TOU_THRESH); mpr121Write(ELE4_R, REL_THRESH); mpr121Write(ELE5_T, TOU_THRESH); mpr121Write(ELE5_R, REL_THRESH); mpr121Write(ELE6_T, TOU_THRESH); mpr121Write(ELE6_R, REL_THRESH); mpr121Write(ELE7_T, TOU_THRESH); mpr121Write(ELE7_R, REL_THRESH); mpr121Write(ELE8_T, TOU_THRESH); mpr121Write(ELE8_R, REL_THRESH); mpr121Write(ELE9_T, TOU_THRESH); mpr121Write(ELE9_R, REL_THRESH); mpr121Write(ELE10_T, TOU_THRESH); mpr121Write(ELE10_R, REL_THRESH); mpr121Write(ELE11_T, TOU_THRESH); mpr121Write(ELE11_R, REL_THRESH); // Oddelek D // Nastavite Filter Konfiguracija // Nastavite ESI2 mpr121Write(FIL_CFG, 0x04); // Oddelek E // Elektroda za Konfiguracijo // Enable 6 Elektrode in nastavite zaženi v načinu // Nastavite ELE_CFG, da 0x00, da se vrnete v stanje pripravljenosti mpr121Write(ELE_CFG, 0x0C);// Omogoča, da vse 12 Elektrode //mpr121Write(ELE_CFG, 0x06);// Enable prvih 6 elektrode // Oddelek F // Enable Auto Config in auto Reconfig /*mpr121Write(ATO_CFG0, 0x0B); mpr121Write(ATO_CFGU, 0xC9);// USL = (Vdd-0.7)/vdd*256 = 0xC9 @3.3 V mpr121Write(ATO_CFGL, 0x82);// LSL = 0.65*USL = 0x82 @3.3 V mpr121Write(ATO_CFGT, 0xB5);*/// Target = 0.9*USL = 0xB5 @3.3 V } bajt checkInterrupt(void) { if(digitalRead(irqpin)) return 1; return 0;
Specifikacije
- Združljiv Z: Nova
- Dodatek Za Vrsto: Razširitev Uprave
- Poreklo: Celinska Kitajska
- Blagovna Znamka: EMDSXGO
Komentarji