是否可以假冒Arduino IDE认为微控制器具有额外的引脚?

问题描述

出于不允许我解释的原因,我的一位客户想要创建仅在软件中存在的“假引脚”,并欺骗Arduino IDE将原始数据从真实引脚发送到人工创建的引脚。最终结果是任何人都可以使用该引脚,就好像它是真正的引脚一样-假设您在ESP32的pin11上连接了一个按钮,然后可以通过pin102读取该按钮的状态。 Pin102是伪造的Pin,只是复制了Pin11的输入。

我已经读了一些书,但这已经超出了我的脑海。我开始探索的一种途径是为Arduino IDE创建自定义ESP32板。使用this instructable中的信息,我找到了一个带有.h文件的ESP32变体文件夹,其中列出了ESP32的所有引脚。我将其复制到一个新文件夹,并将数字引脚号从40更改为42,将模拟引脚号从16更改为18。然后我将伪造的引脚列为40-43(请参见下文)。经验告诉我,这太容易了,狗屎从来没有那么简单。至少我在朝着正确的方向看吗?

#ifndef Pins_Arduino_h
#define Pins_Arduino_h

#include <stdint.h>

#define EXTERNAL_NUM_INTERRUPTS 16
#define NUM_DIGITAL_PINS        42
#define NUM_ANALOG_INPUTS       18

#define analogInputToDigitalPin(p)  (((p)<22)?(esp32_adc2gpio[(p)]):-1)
#define digitalPinToInterrupt(p)    (((p)<42)?(p):-1)
#define digitalPinHasPWM(p)         (p < 34)

static const uint8_t TX = 1;
static const uint8_t RX = 3;

static const uint8_t SDA = 21;
static const uint8_t SCL = 22;

static const uint8_t SS    = 5;
static const uint8_t MOSI  = 23;
static const uint8_t MISO  = 19;
static const uint8_t SCK   = 18;

static const uint8_t A0 = 36;
static const uint8_t A3 = 39;
static const uint8_t A4 = 32;
static const uint8_t A5 = 33;
static const uint8_t A6 = 34;
static const uint8_t A7 = 35;
static const uint8_t A10 = 4;
static const uint8_t A11 = 0;
static const uint8_t A12 = 2;
static const uint8_t A13 = 15;
static const uint8_t A14 = 13;
static const uint8_t A15 = 12;
static const uint8_t A16 = 14;
static const uint8_t A17 = 27;
static const uint8_t A18 = 25;
static const uint8_t A19 = 26;

static const uint8_t A20 = 40;
static const uint8_t A21 = 41;

static const uint8_t T0 = 4;
static const uint8_t T1 = 0;
static const uint8_t T2 = 2;
static const uint8_t T3 = 15;
static const uint8_t T4 = 13;
static const uint8_t T5 = 12;
static const uint8_t T6 = 14;
static const uint8_t T7 = 27;
static const uint8_t T8 = 33;
static const uint8_t T9 = 32;

static const uint8_t T10 = 42;
static const uint8_t T11 = 43;

static const uint8_t DAC1 = 25;
static const uint8_t DAC2 = 26;

#endif /* Pins_Arduino_h */

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...