最終更新 1 month ago

racerxdl's Avatar Lucas Teske revised this gist 6 years ago. Go to revision

1 file changed, 59 insertions

touch_test3.ino(file created)

@@ -0,0 +1,59 @@
1 + #include <SPI.h>
2 +
3 + #define SCK D5
4 + #define MISO D6
5 + #define CS D8
6 + #define MOSI D7
7 +
8 +
9 + void setup() {
10 + Serial.begin(115200);
11 + Serial.println("OK");
12 +
13 + pinMode(SCK, OUTPUT);
14 + pinMode(CS, OUTPUT);
15 + pinMode(MOSI, OUTPUT);
16 + pinMode(MISO, INPUT);
17 +
18 + digitalWrite(CS, HIGH);
19 +
20 + SPI.pins(SCK, MISO, MOSI, CS);
21 + SPI.begin();
22 + }
23 +
24 + void loop() {
25 + digitalWrite(CS, LOW);
26 + uint8_t data = SPI.transfer(0xFF); // Always transfer full 1 bits
27 + digitalWrite(CS, HIGH);
28 +
29 + uint8_t flag = data & 0x80; // Get the 7th bit
30 + data &= 0x7F; // Reset it, so we have only the pure value in data
31 +
32 + if (data != 0x7F) {
33 + // We have some data, not all 1's
34 + if (flag) { // Buttons
35 + Serial.print("BUTTONS: ");
36 + switch (data) {
37 + case 0:
38 + Serial.println("RIGHT");
39 + break
40 + case 1:
41 + Serial.println("POWER");
42 + break
43 + case 2:
44 + Serial.println("LEFT");
45 + break
46 + }
47 + } else { // Slider
48 + Serial.print("SLIDER: ");
49 + // MAX is 54 and MIN is 1 so:
50 + uint16_t v = (uint16_t)data;
51 + v -= 1; // MIN
52 + v *= 100; // Percent
53 + v /= (54 - 1); // MAX - MIN
54 + Serial.print(v);
55 + Serial.println("%");
56 + }
57 + }
58 + delay(100);
59 + }
Newer Older