Вс янв 15, 2023 13:21:29
#include <SPI.h>
#include <Arduino.h>
#include <HardwareSerial.h>
#define T_IRQ 35
#define IRQ_TURN_ON_BITS 0x80
#define X_BITS 0x90
#define Y_BITS 0xD0
#define Z1_BITS 0xB0
#define Z2_BITS 0xC0
#define DUMMY_BITS 0x00
#define SPI_SETTING SPISettings(12000000, MSBFIRST, SPI_MODE0)
bool isTouching = false;
void falling() {
isTouching = true;
}
void setup() {
Serial.begin(115200);
pinMode(SS, OUTPUT);
SPI.begin();
SPI.beginTransaction(SPI_SETTING);
digitalWrite(SS, LOW);
SPI.transfer(IRQ_TURN_ON_BITS);
digitalWrite(SS, HIGH);
SPI.endTransaction();
pinMode(T_IRQ, INPUT);
attachInterrupt(digitalPinToInterrupt(T_IRQ), falling, FALLING);
}
void loop() {
if (isTouching) {
SPI.beginTransaction(SPI_SETTING);
digitalWrite(SS, LOW);
SPI.transfer(Z1_BITS);
int16_t z1 = SPI.transfer16(X_BITS);
int16_t x = SPI.transfer16(Y_BITS);
int16_t y = SPI.transfer16(DUMMY_BITS);
Serial.printf("Z1: %d\tX: %d\tY: %d\n", z1, x, y);
SPI.transfer(IRQ_TURN_ON_BITS);
digitalWrite(SS, HIGH);
SPI.endTransaction();
}
delay(500);
}