feat: 全量同步 254 个常用的 Arduino 扩展库文件
This commit is contained in:
185
arduino-libs/arduino-cli/libraries/TTP229/TTP229.cpp
Normal file
185
arduino-libs/arduino-cli/libraries/TTP229/TTP229.cpp
Normal file
@@ -0,0 +1,185 @@
|
||||
/*********************************** LICENCE **********************************\
|
||||
| Copyright (c) 2014, A.E. TEC |
|
||||
| All rights reserved. |
|
||||
| |
|
||||
| Redistribution and use in source and binary forms, with or without |
|
||||
| modification, are permitted provided that the following conditions are met: |
|
||||
| |
|
||||
| * Redistributions of source code must retain the above copyright notice, |
|
||||
| this list of conditions and the following disclaimer. |
|
||||
| * Redistributions in binary form must reproduce the above copyright notice, |
|
||||
| this list of conditions and the following disclaimer in the documentation |
|
||||
| and/or other materials provided with the distribution. |
|
||||
| |
|
||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
||||
| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
||||
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
||||
| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
|
||||
| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
|
||||
| CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
|
||||
| SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
|
||||
| INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
|
||||
| CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
||||
| ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
||||
| POSSIBILITY OF SUCH DAMAGE. |
|
||||
\******************************************************************************/
|
||||
/************************************ USES ************************************\
|
||||
| This library designed to communicate with the TTP229 chip from an Arduino |
|
||||
| |
|
||||
| It works with a TTP229 (16-Channel Digital Touch Capacitive Switch Sensor) |
|
||||
| using the 2-wires serial interface protocol - only 2 arduino pins. |
|
||||
\******************************************************************************/
|
||||
/*********************************** CIRCUIT **********************************\
|
||||
| General: |
|
||||
| * TTP229 VCC to pin VCC |
|
||||
| * TTP229 GND to pin GND |
|
||||
| * TTP229 SCL to any pin you choose... |
|
||||
| * TTP229 SDO to any pin you choose... |
|
||||
| |
|
||||
| 16 Buttons Mode (else 8 Buttons Mode): |
|
||||
| * TTP229 TP2 to GND via 1 Megohm resistor! |
|
||||
| # Must use the ReadKey16, GetKeys16... else use the ReadKey8, GetKeys8... |
|
||||
| |
|
||||
| Multi Keys Mode (else Single key Mode): |
|
||||
| * TTP229 TP3 to GND via 1 Megohm resistor! |
|
||||
| * TTP229 TP4 to GND via 1 Megohm resistor! |
|
||||
| |
|
||||
| 64Hz Sampling Rate (else 8Hz Sampling Rate): |
|
||||
| * TTP229 TP5 to GND via 1 Megohm resistor! |
|
||||
| |
|
||||
| 2ms Wake Up Rate (else 4ms Wake Up Rate): |
|
||||
| * TTP229 TP6 to GND via 1 Megohm resistor! |
|
||||
| |
|
||||
| 60sec Key On Timeout (else No Key On Timeout): |
|
||||
| * TTP229 TP7 to GND via 1 Megohm resistor! |
|
||||
| |
|
||||
| Important: |
|
||||
| * Must reconnect the TTP229 power so the mode changes will take effect |
|
||||
| * The 1 Megohm resistors already exist on some TTP229 modules |
|
||||
\******************************************************************************/
|
||||
|
||||
#if ARDUINO >= 100
|
||||
#include "Arduino.h"
|
||||
#else
|
||||
#include "WProgram.h"
|
||||
#endif
|
||||
|
||||
#include "TTP229.h"
|
||||
|
||||
TTP229::TTP229(uint8_t sclPin, uint8_t sdoPin)
|
||||
{
|
||||
_sclPin = sclPin;
|
||||
_sdoPin = sdoPin;
|
||||
|
||||
pinMode(_sclPin , OUTPUT);
|
||||
pinMode(_sdoPin , INPUT);
|
||||
|
||||
digitalWrite(_sclPin, HIGH);
|
||||
}
|
||||
|
||||
uint8_t TTP229::ReadKey8()
|
||||
{
|
||||
WaitForTouch();
|
||||
Key8();
|
||||
return _key8;
|
||||
}
|
||||
uint8_t TTP229::GetKey8()
|
||||
{
|
||||
if (IsTouch()) Key8();
|
||||
return _key8;
|
||||
}
|
||||
uint8_t TTP229::ReadKeys8()
|
||||
{
|
||||
WaitForTouch();
|
||||
Keys8();
|
||||
return _keys8;
|
||||
}
|
||||
uint8_t TTP229::GetKeys8()
|
||||
{
|
||||
if (IsTouch()) Keys8();
|
||||
return _keys8;
|
||||
}
|
||||
uint8_t TTP229::ReadKey16()
|
||||
{
|
||||
WaitForTouch();
|
||||
Key16();
|
||||
return _key16;
|
||||
}
|
||||
uint8_t TTP229::GetKey16()
|
||||
{
|
||||
if (IsTouch()) Key16();
|
||||
return _key16;
|
||||
}
|
||||
uint16_t TTP229::ReadKeys16()
|
||||
{
|
||||
WaitForTouch();
|
||||
Keys16();
|
||||
return _keys16;
|
||||
}
|
||||
uint16_t TTP229::GetKeys16()
|
||||
{
|
||||
if (IsTouch()) Keys16();
|
||||
return _keys16;
|
||||
}
|
||||
|
||||
void TTP229::Key8()
|
||||
{
|
||||
_key8 = 0;
|
||||
for (uint8_t i = 0; i < 8; i++)
|
||||
if (GetBit()) _key8 = i + 1;
|
||||
delay(2); // Tout
|
||||
}
|
||||
void TTP229::Keys8()
|
||||
{
|
||||
_keys8 = 0;
|
||||
for (uint8_t i = 0; i < 8; i++)
|
||||
if (GetBit()) _keys8 |= 1 << i;
|
||||
delay(2); // Tout
|
||||
}
|
||||
void TTP229::Key16()
|
||||
{
|
||||
_key16 = 0;
|
||||
for (uint8_t i = 0; i < 16; i++)
|
||||
if (GetBit()) _key16 = i + 1;
|
||||
delay(2); // Tout
|
||||
}
|
||||
void TTP229::Keys16()
|
||||
{
|
||||
_keys16 = 0;
|
||||
for (uint8_t i = 0; i < 16; i++)
|
||||
if (GetBit()) _keys16 |= 1 << i;
|
||||
delay(2); // Tout
|
||||
}
|
||||
|
||||
bool TTP229::GetBit()
|
||||
{
|
||||
digitalWrite(_sclPin, LOW);
|
||||
delayMicroseconds(2); // 500KHz
|
||||
bool retVal = !digitalRead(_sdoPin);
|
||||
digitalWrite(_sclPin, HIGH);
|
||||
delayMicroseconds(2); // 500KHz
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool TTP229::IsTouch()
|
||||
{
|
||||
uint16_t timeout = 5000; // 50ms timeout
|
||||
while (digitalRead(_sdoPin)) // DV LOW
|
||||
{
|
||||
if (--timeout == 0) return false;
|
||||
delayMicroseconds(10);
|
||||
}
|
||||
while (!digitalRead(_sdoPin)) // DV HIGH
|
||||
{
|
||||
if (--timeout == 0) return false;
|
||||
delayMicroseconds(10);
|
||||
}
|
||||
delayMicroseconds(10); // Tw
|
||||
return true;
|
||||
}
|
||||
void TTP229::WaitForTouch()
|
||||
{
|
||||
while (digitalRead(_sdoPin)); // DV LOW
|
||||
while (!digitalRead(_sdoPin)); // DV HIGH
|
||||
delayMicroseconds(10); // Tw
|
||||
}
|
||||
102
arduino-libs/arduino-cli/libraries/TTP229/TTP229.h
Normal file
102
arduino-libs/arduino-cli/libraries/TTP229/TTP229.h
Normal file
@@ -0,0 +1,102 @@
|
||||
/*********************************** LICENCE **********************************\
|
||||
| Copyright (c) 2014, A.E. TEC |
|
||||
| All rights reserved. |
|
||||
| |
|
||||
| Redistribution and use in source and binary forms, with or without |
|
||||
| modification, are permitted provided that the following conditions are met: |
|
||||
| |
|
||||
| * Redistributions of source code must retain the above copyright notice, |
|
||||
| this list of conditions and the following disclaimer. |
|
||||
| * Redistributions in binary form must reproduce the above copyright notice, |
|
||||
| this list of conditions and the following disclaimer in the documentation |
|
||||
| and/or other materials provided with the distribution. |
|
||||
| |
|
||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
||||
| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
||||
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
||||
| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
|
||||
| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
|
||||
| CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
|
||||
| SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
|
||||
| INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
|
||||
| CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
||||
| ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
||||
| POSSIBILITY OF SUCH DAMAGE. |
|
||||
\******************************************************************************/
|
||||
/************************************ USES ************************************\
|
||||
| This library designed to communicate with the TTP229 chip from an Arduino |
|
||||
| |
|
||||
| It works with a TTP229 (16-Channel Digital Touch Capacitive Switch Sensor) |
|
||||
| using the 2-wires serial interface protocol - only 2 arduino pins. |
|
||||
\******************************************************************************/
|
||||
/*********************************** CIRCUIT **********************************\
|
||||
| General: |
|
||||
| * TTP229 VCC to pin VCC |
|
||||
| * TTP229 GND to pin GND |
|
||||
| * TTP229 SCL to any pin you choose... |
|
||||
| * TTP229 SDO to any pin you choose... |
|
||||
| |
|
||||
| 16 Buttons Mode (else 8 Buttons Mode): |
|
||||
| * TTP229 TP2 to GND via 1 Megohm resistor! |
|
||||
| # Must use the ReadKey16, GetKeys16... else use the ReadKey8, GetKeys8... |
|
||||
| |
|
||||
| Multi Keys Mode (else Single key Mode): |
|
||||
| * TTP229 TP3 to GND via 1 Megohm resistor! |
|
||||
| * TTP229 TP4 to GND via 1 Megohm resistor! |
|
||||
| |
|
||||
| 64Hz Sampling Rate (else 8Hz Sampling Rate): |
|
||||
| * TTP229 TP5 to GND via 1 Megohm resistor! |
|
||||
| |
|
||||
| 2ms Wake Up Rate (else 4ms Wake Up Rate): |
|
||||
| * TTP229 TP6 to GND via 1 Megohm resistor! |
|
||||
| |
|
||||
| 60sec Key On Timeout (else No Key On Timeout): |
|
||||
| * TTP229 TP7 to GND via 1 Megohm resistor! |
|
||||
| |
|
||||
| Important: |
|
||||
| * Must reconnect the TTP229 power so the mode changes will take effect |
|
||||
| * The 1 Megohm resistors already exist on some TTP229 modules |
|
||||
\******************************************************************************/
|
||||
|
||||
#if ARDUINO >= 100
|
||||
#include "Arduino.h"
|
||||
#else
|
||||
#include "WProgram.h"
|
||||
#endif
|
||||
|
||||
#ifndef TTP229_h
|
||||
#define TTP229_h
|
||||
|
||||
class TTP229
|
||||
{
|
||||
public:
|
||||
TTP229(uint8_t sclPin, uint8_t sdoPin);
|
||||
uint8_t
|
||||
ReadKey8(),
|
||||
GetKey8(),
|
||||
ReadKeys8(),
|
||||
GetKeys8(),
|
||||
ReadKey16(),
|
||||
GetKey16();
|
||||
uint16_t
|
||||
ReadKeys16(),
|
||||
GetKeys16();
|
||||
private:
|
||||
void
|
||||
WaitForTouch(),
|
||||
Key8(),
|
||||
Keys8(),
|
||||
Key16(),
|
||||
Keys16();
|
||||
bool
|
||||
IsTouch(),
|
||||
GetBit();
|
||||
|
||||
uint8_t _sclPin, _sdoPin;
|
||||
uint8_t _key8, _keys8, _key16;
|
||||
uint16_t _keys16;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user