0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
1602

1602

  • 厂商:

    ADAFRUIT

  • 封装:

    -

  • 描述:

    CAP TOUCH CAP1188 BREAKOUT BRD

  • 数据手册
  • 价格&库存
1602 数据手册
Adafruit CAP1188 Breakout Created by lady ada https://learn.adafruit.com/adafruit-cap1188-breakout Last updated on 2021-11-15 06:08:30 PM EST ©Adafruit Industries Page 1 of 20 Table of Contents Overview 3 Pinouts 4 • • • • • • 4 4 4 5 5 5 Power pins I2C interface pins SPI inteface pins Other interfacing pins Sensor input pins Sensor output pins Wiring 5 • Wiring for use with I2C • Wiring for use with SPI 5 7 Using with Arduino 7 • • • • • 8 8 10 11 12 Download the library Run Test Sketch I2C with a different address Using with SPI Using the external IRQ Interrupt Python & CircuitPython 14 • • • • • • 14 15 16 17 17 18 CircuitPython Microcontroller Wiring Python Computer Wiring CircuitPython Installation of CAP1188 Library Python Installation of CAP1188 Library CircuitPython & Python Usage Full Example Code Python Docs 19 Downloads 19 • File • Schematic • Fabrication Print 19 19 20 ©Adafruit Industries Page 2 of 20 Overview Add lots of touch sensors to your next microcontroller project with this easy-to-use 8channel capacitive touch sensor breakout board, starring the CAP1188. This chip can handle up to 8 individual touch pads, and has a very nice feature that makes it stand out for us: it will light up the 8 onboard LEDs when the matching touch sensor fires to help you debug your sensor setup. The CAP1188 has support for both I2C and SPI, so it easy to use with any microcontroller. If you are using I2C, you can select one of 5 addresses, for a total of 40 capacitive touch pads on one I2C 2-wire bus. Using this chip is a lot easier than doing the capacitive sensing with analog inputs: it handles all the filtering for you and can be configured for more/less sensitivity. Comes with a fully assembled board, and a stick of 0.1" header so you can plug it into a breadboard. For contacts, we suggest using copper foil, then solder a wire that connects from the foil pad to the breakout. Getting started is a breeze with our Arduino library and tutorial. You'll be up and running in a few minutes, and if you are using another microcontroller, its easy to port our code. ©Adafruit Industries Page 3 of 20 Pinouts The CAP1188 has a lot going on, so much so that we had to make the breakout double-sided! It fits nicely into a breadboard and has the sensors all in a row on one side and if you're using plain i2c you can connect to to the left side only Here's all the pins and what they do! Power pins VIN and GND are power in pins, you can use 3-5VDC so its great for any kind of microcontrollers. There's an on-board 3V regulator as well, the output is available on the 3Vo pin (you can snag up to 150mA) I2C interface pins For I2C, connect to the SCK (i2c clock a.k.a SCL) and SDA (i2c data) pins. These are 5V safe so you can use them with 3V or 5V logic SPI inteface pins If you want to use SPI instead, you'll be using the SCK, MOSI, MISO and CS pins ©Adafruit Industries Page 4 of 20 Other interfacing pins The AD pin is used to select SPI or I2C interface, and if I2C what address to use. See the wiring page for more details The IRQ pin goes low when a pin is touched. We don't use it on our code examples, but if you want to have an interrupt pin used, connect it to this IRQ pin and use activelow triggering. The RST pin is used to reset the chip, either in I2C or SPI mode. It's optional but using it will make the system more reliable so we suggest it. Sensor input pins This is the part you touch - there are 8 individual capacitive sensor pins, called C1 thru C8. On restart the system recalibrates them so don't touch these when powering up! Sensor output pins The L1 thru L8 pins are the LED driver/sensor output pins. The indicators are really useful for debugging your touch sensor system, but you can also use the indicator output pins for triggering some other electronics. Each L pin corresponds to the matching C sensor input. These pins are 3V normally, and drop to 0V when triggered. Wiring Wiring for use with I2C Chances are you'll use this board with the I2C interface pins. I2C is handy because you can have multiple sensors all connected on two I2C pins and share them nicely as long as each one has a unique address. I2C isn't particularly fast but that's fine for a sensor like this one (it's not good for video or audio type data) I2C is really fast to get started, so we suggest that. Connect the VIN pin to 5V and GN D pin to ground. Then connect the SDA pin to your I2C SDA/data line and SCL pin to your I2C SCL/clock line ©Adafruit Industries Page 5 of 20 • On UNO/Duemilanove/etc, SDA == Analog 4, SCL == Analog 5 • On Leonardo/Micro, SDA == Digital 2, SCL == Digital 3 • On Mega/ADK/Due, SDA == Digital 20, SCL == Digital 21 The reset pin is not required for use, but if you can spare a pin, it will make the system a little more rugged - the Arduino will do a hard reset of the CAP1188 on startup, connect RST to any digital I/O pin. In the library example code you can set up that pin in the CAP1188 object creation. If you're using multiple sensors, or you just want to change the I2C address to something else, you can choose from 5 different options - 0x28, 0x29 (default), 0x2A, 0x2B,  and 0x2C The I2C address are selected by connecting a resistor to the AD pin in the lower right: different resistors set a different address. The easiest address to set is 0x28 which is just a wire from AD to the 3Vo pin. If you want to set the I2C address to a different value you'll need to connect a resistor from AD to ground instead of a wire to 3V. The datasheet talks about different resistor values in table 3.1 - but since the breakout board already has a 150K resistor on it, you'll need to use different values so that the parallel resistance comes out right. Here's the values you should use: • Wire connecting AD to 3V -> I2C address 0x28 ©Adafruit Industries Page 6 of 20 • No resistor or wire attached to AD -> I2C address 0x29 • 600K resistor from AD to ground -> I2C address 0x2A • 300K resistor from AD to ground -> I2C address 0x2B • 180K resistor from AD to ground -> I2C address 0x2C Wiring for use with SPI You can put the CAP1188 in SPI mode by powering it up with AD connected to ground. Then the 4 SPI pins are used to communicate instead of I2C. SPI may be preferrable for your project if you have an I2C address collision (which is unlikely given you can choose 5 addresses!) or say if you have an UNO and you want to use the I2C pins for analog input instead of I2C, or if you are porting to a microcontroller that does not have hardware I2C. Either way, SPI is there for you! Connect Vin to 5V and GND to ground, then tie a wire from AD to ground as well. Now connect the SCK, MISO, MOSI, CS and RST pins to your microcontroller. If using an Arduino you can use either the hardware SPI pins which are fixed for each Arduino, or go with software SPI where you select any 5 digital I/O pins Using with Arduino Its super easy to use this sensor board with an Arduino thanks to the great Adafruit library. Once you've installed the library you can connect the sensor board via I2C or SPI to your Arduino, it will work with any kind or flavor. If you're using a different kind of microcontroller, the library is a good reference to help you port the code over. ©Adafruit Industries Page 7 of 20 Download the library First up, we'll download the Arduino library from the Arduino library manager. Open up the Arduino library manager: Search for the Adafruit CAP1188 library and install it We also have a great tutorial on Arduino library installation at: http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use (https:// adafru.it/aYM) Run Test Sketch After you've restarted, you should be able to load up the File->Examples>Adafruit_CAP1188->cap1188test sketch ©Adafruit Industries Page 8 of 20 Wire up the sensor as shown in the Wiring section, for I2C. Connect the GND pin to ground, VIN pin to 5V and connect SDA to your Arduino's SDA pin, SCL to SCL pin • On UNO/Duemilanove/etc, SDA == Analog 4, SCL == Analog 5 • On Leonardo/Micro, SDA == Digital 2, SCL == Digital 3 • On Mega/ADK/Due, SDA == Digital 20, SCL == Digital 21 Upload the sketch and open up the serial console at 9600 baud. You should see that the CAP1188 is found (good!) and then you can touch the C1 thru C8 pads with your fingers to see the touch sensor go off. When you touch a pin, you'll also see the matching LED light up. ©Adafruit Industries Page 9 of 20 I2C with a different address If you're using multiple sensors, or you just want to change the I2C address to something else, you can choose from 5 different options - 0x28, 0x29 (default), 0x2A, ©Adafruit Industries Page 10 of 20 0x2B, 0x2C and 0x2D The I2C address are selected by connecting a resistor to the AD pin in the lower right: different resistors set a different address. The easiest address to set is 0x28 which is just a wire from AD to the 3Vo pin. Now look in the test sketch for the lines if (!cap.begin()) { Serial.println("CAP1188 not found"); while (1); } And change the cap.begin() statement to cap.begin(0x28) to initialize it to use the 0x 28 address. Don't forget to do a full power off of the Arduino & sensor, the sensor only detects the i2c address on power up so you can't change it on the fly! Using with SPI You can also use SPI if you wish. The library supports both hardware SPI (using the 'hardware SPI' port on your arduino) or software/bit-bang SPI, where you can define the pins. In general, these sensors are not very fast so I2C is a good way to interface them but if you wish, SPI is there for you too! For example, if you want to have more than 5 of these connected to one board, that is possible to do with SPI, but the I2C interface on this chip doesn't support that many shared I2C addresses. To enable SPI, be sure to wire for SPI as shown in the Wiring section, and do a power reset of your board so that the chip 'wakes up' in SPI mode ©Adafruit Industries Page 11 of 20 If you're using hardware SPI, check the SPI page for what pins you need to use, sometimes they are only on the ICSP header which makes them trickier to use.  (https ://adafru.it/d5h) To enable the hardware SPI interface, create the Adafruit_CAP1188 object with Adafruit_CAP1188 cap = Adafruit_CAP1188(CAP1188_CS, CAP1188_RESET); If you are using software SPI, you can use any pins that are not already used for some purpose. In that case, create the object with Adafruit_CAP1188 cap = Adafruit_CAP1188(CAP1188_CLK, CAP1188_MISO, CAP1188_MOSI, CAP1188_CS, CAP1188_RESET); Using the external IRQ Interrupt Arduino has some basic ability to attach to pin interrupts, here's an example from Nobody123 of connecting the IRQ pin from the CAP1188 to digital pin #3 on an Uno (Interrupt #1) for tracking touches asynchronously /*************************************************** This is a library for the CAP1188 I2C/SPI 8-chan Capacitive Sensor Designed specifically to work with the CAP1188 sensor from Adafruit ----> https://www.adafruit.com/products/1602 These sensors use I2C/SPI to communicate, 2+ pins are required to interface Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, all text above must be included in any redistribution ****************************************************/ #include <Wire.h> #include <SPI.h> #include <Adafruit_CAP1188.h> // Reset Pin is used for I2C or SPI #define CAP1188_RESET 4 // CS pin is used for software or hardware SPI #define CAP1188_CS 10 // These are defined for software SPI, for hardware SPI, check your // board's SPI pins in the Arduino documentation #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13 volatile byte interrupt = 0; // For I2C, connect SDA to your Arduino's SDA pin, SCL to SCL pin // On UNO/Duemilanove/etc, SDA == Analog 4, SCL == Analog 5 ©Adafruit Industries Page 12 of 20 // On Leonardo/Micro, SDA == Digital 2, SCL == Digital 3 // On Mega/ADK/Due, SDA == Digital 20, SCL == Digital 21 // Use I2C, no reset pin! // Adafruit_CAP1188 cap = Adafruit_CAP1188(); // Or...Use I2C, with reset pin //Adafruit_CAP1188 cap = Adafruit_CAP1188(CAP1188_RESET); // Or... Hardware SPI, CS pin & reset pin Adafruit_CAP1188 cap = Adafruit_CAP1188(CAP1188_CS, CAP1188_RESET); // Or.. Software SPI: clock, miso, mosi, cs, reset //Adafruit_CAP1188 cap = Adafruit_CAP1188(CAP1188_CLK, CAP1188_MISO, CAP1188_MOSI, CAP1188_CS, CAP1188_RESET); void setup() { Serial.begin(9600); Serial.println("CAP1188 test!"); pinMode(3,INPUT); // Raise SPI slave select (SS) pins // Communication begins when you drop the individual select signals to LOW digitalWrite(10,HIGH); // Initialize the sensor, if using i2c you can pass in the i2c address // if (!cap.begin(0x28)) { if (!cap.begin()) { Serial.println("CAP1188 not found"); while (1); } Serial.println("CAP1188 found!"); pinMode(3, INPUT); // Turn off multitouch so only one button pressed at a time cap.writeRegister(0x2A, 0x80); // 0x2A default 0x80 use 0x41 — Set multiple touches back to off cap.writeRegister(0x41, 0x39); // 0x41 default 0x39 use 0x41 — Set "speed up" setting back to off cap.writeRegister(0x72, 0x00); // 0x72 default 0x00 — Sets LED links back to off (default) cap.writeRegister(0x44, 0x41); // 0x44 default 0x40 use 0x41 — Set interrupt on press but not release cap.writeRegister(0x28, 0x00); // 0x28 default 0xFF use 0x00 — Turn off interrupt repeat on button hold EIFR = 1; // clear flag for interrupt 1 attachInterrupt(1, routine_Interrupt_CAP1188, FALLING); } void loop() { // Serial.println(digitalRead(3)); uint8_t touched = cap.touched(); if (touched == 0) { // No touch detected // return; } for (uint8_t i=0; i<8; i++) { if (touched & (1 << i)) { Serial.print("C"); Serial.print(i+1); Serial.print("\t"); } } Serial.println(); delay(50); Serial.print("Interrupt: "); Serial.println(interrupt); } void routine_Interrupt_CAP1188() ©Adafruit Industries { Page 13 of 20 ++interrupt; } Python & CircuitPython It's easy to use the CAP1188 sensor with Python or CircuitPython and the Adafruit CircuitPython CAP1188 (https://adafru.it/CLo) module.  This module allows you to easily write Python code that reads capacitive touch from the sensor. You can use this sensor with any CircuitPython microcontroller board or with a computer that has GPIO and Python thanks to Adafruit_Blinka, our CircuitPython-forPython compatibility library (https://adafru.it/BSN). CircuitPython Microcontroller Wiring First wire up a CAP1188 to your board exactly as shown on the previous pages for Arduino.  You can use either I2C or SPI wiring, although it's recommended to use I2C for simplicity. Here's an example of wiring a Feather M0 to the sensor with I2C: • Board 3V to sensor VIN • Board GND to sensor GND • Board SCK to sensor SCK • Board SDA to sensor SDA And an example of a Feather M0 wired with hardware SPI: ©Adafruit Industries Page 14 of 20 • Board 3V to sensor VIN • Board GND to sensor GND • Board GND to sensor AD • Board SCK to sensor SCK • Board MOSI to sensor MOSI • Board MISO to sensor MISO • Board D5 to sensor CS (or use any other free digital I/O pin) Python Computer Wiring Since there's dozens of Linux computers/boards you can use we will show wiring for Raspberry Pi. For other platforms, please visit the guide for CircuitPython on Linux to see whether your platform is supported (https://adafru.it/BSN).  Here's the Raspberry Pi wired with I2C: • Pi 3V3 to sensor VIN • Pi GND to sensor GND • Pi SCL to sensor SCK • Pi SDA to sensor SDA And an example on the Raspberry Pi wired with SPI: ©Adafruit Industries Page 15 of 20 • Pi 3V3 to sensor VIN • Pi GND to sensor GND • Pi GND to sensor AD • Pi MOSI to sensor MOSI • Pi MISO to sensor MISO • Pi SCLK to sensor SCK • Pi GPIO5 to sensor CS (or use any other free GPIO pin) CircuitPython Installation of CAP1188 Library You'll need to install the Adafruit CircuitPython CAP1188 (https://adafru.it/CLo) library on your CircuitPython board. First make sure you are running the latest version of Adafruit CircuitPython (https:// adafru.it/Amd) for your board. Next you'll need to install the necessary libraries to use the hardware--carefully follow the steps to find and install these libraries from Adafruit's CircuitPython library bundle  (https://adafru.it/uap).  Our CircuitPython starter guide has a great page on how to install the library bundle (https://adafru.it/ABU). For non-express boards like the Trinket M0 or Gemma M0, you'll need to manually install the necessary libraries from the bundle: • adafruit_cap1188 • adafruit_bus_device Before continuing make sure your board's lib folder or root filesystem has the adafrui t_cap1188, and adafruit_bus_device files and folders copied over. Next connect to the board's serial REPL (https://adafru.it/Awz) so you are at the CircuitPython >>> prompt. ©Adafruit Industries Page 16 of 20 Python Installation of CAP1188 Library You'll need to install the Adafruit_Blinka library that provides the CircuitPython support in Python. This may also require enabling I2C on your platform and verifying you are running Python 3. Since each platform is a little different, and Linux changes often, please visit the CircuitPython on Linux guide to get your computer ready (https ://adafru.it/BSN)! Once that's done, from your command line run the following command: • sudo pip3 install adafruit-circuitpython-cap1188 If your default Python is version 3 you may need to run 'pip' instead. Just make sure you aren't trying to use CircuitPython on Python 2.x, it isn't supported! CircuitPython & Python Usage To demonstrate the usage of the sensor we'll initialize it and read capacitive touch from the board's Python REPL. If you're using an I2C connection run the following code to import the necessary modules and initialize the I2C connection with the sensor: import board import busio from adafruit_cap1188.i2c import CAP1188_I2C i2c = busio.I2C(board.SCL, board.SDA) cap = CAP1188_I2C(i2c) Or if you're using a SPI connection run this code instead to setup the SPI connection and sensor: import board import busio import digitalio from adafruit_cap1188.spi import CAP1188_SPI spi = busio.SPI(board.SCK, board.MOSI, board.MISO) cs = digitalio.DigitalInOut(board.D5) cap = CAP1188_SPI(spi, cs) ©Adafruit Industries Page 17 of 20 Now you're ready to read capacitive touch from the sensor using any of these properties: • value - Whether the pin is being touched or not. • raw_value - The raw touch measurement. For example, to print when pin 1 is touched: while True: if cap[1].value: print("Pin 1 touched!") Or, to print when any pin is touched: while True: for i in range(1, 9): if cap[i].value: print("Pin {} touched!".format(i)) That's all there is to using CAP1188 with CircuitPython! Full Example Code # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries # SPDX-License-Identifier: MIT import board from adafruit_cap1188.i2c import CAP1188_I2C i2c = board.I2C() # uses board.SCL and board.SDA cap = CAP1188_I2C(i2c) ©Adafruit Industries Page 18 of 20 # # # # # # SPI setup from digitalio import DigitalInOut, Direction from adafruit_cap1188.spi import CAP1188_SPI spi = board.SPI() cs = DigitalInOut(board.D5) cap = CAP1188_SPI(spi, cs) while True: for i in range(1, 9): if cap[i].value: print("Pin {} touched!".format(i)) Python Docs Python Docs (https://adafru.it/CLp) Downloads File • The CAP1188 Datasheet has lots of details about this chip (https://adafru.it/d5i) • EagleCAD PCB files on GitHub (https://adafru.it/ruE) • Fritzing object in Adafruit Fritzing library (https://adafru.it/aP3) Schematic ©Adafruit Industries Page 19 of 20 Fabrication Print ©Adafruit Industries Page 20 of 20

很抱歉,暂时无法提供与“1602”相匹配的价格&库存,您可以联系我们找货

免费人工找货