Здравствуйте. Делаю педаль сцепления, имеется код:
//#include <HID.h>
#include "./src/G27PedalsShifter.h"
#define USE_PEDALS
#if defined(DEBUG)
#define DEBUG_PEDALS true
#endif
#define CLUTCH_PIN 9
#define MIN_CLUTCH 45
#define MAX_CLUTCH 932
// MISC.
#define MAX_AXIS 1023
#define SIGNAL_SETTLE_DELAY 10
// PEDAL CODE
typedef struct pedal {
byte pin;
int min, max, cur, axis;
};
typedef struct pedal Pedal;
void* clutchPedal;
int axisValue(void* in) {
Pedal* input = (Pedal*)in;
int physicalRange = input->max - input->min;
if (physicalRange == 0) {
return 0;
}
int result = map(input->cur, input->min, input->max, 0, MAX_AXIS);
if (result < 0) {
return 0;
}
if (result > MAX_AXIS) {
return MAX_AXIS;
}
return result;
}
void processPedal(void* in) {
Pedal* input = (Pedal*)in;
input->cur = analogRead(input->pin);
#if !defined(STATIC_THRESHOLDS)
// calibrate, we want the highest this pedal has been
input->max = input->cur > input->max ? input->cur : input->max;
// same for lowest, but bottom out at current value rather than 0
input->min = input->min == 0 || input->cur < input->min ? input->cur : input->min;
#endif
input->axis = axisValue(input);
}
void setZAxis(void* in) {
Pedal* input = (Pedal*)in;
G27.setZAxis(input->axis);
}
void waitForSignalToSettle() {
delayMicroseconds(SIGNAL_SETTLE_DELAY);
}
void setup() {
Serial.begin(38400);
#if !defined(DEBUG_PEDALS)
G27.begin(false);
#endif
// pedals
Pedal* clutch = new Pedal();
clutch->pin = CLUTCH_PIN;
#if defined(STATIC_THRESHOLDS)
clutch->min = MIN_CLUTCH;
clutch->max = MAX_CLUTCH;
#endif
clutchPedal = clutch;
}
void loop() {
// pedals
processPedal(clutchPedal);
#if defined(DEBUG_PEDALS)
describePedal("CLUTCH", "Z", clutchPedal);
#elif defined(USE_PEDALS)
setZAxis(clutchPedal);
#endif
#if !defined(DEBUG_PEDALS)
G27.sendState();
#endif
#if defined(DEBUG_PEDALS)
Serial.print("\n----------------------------------------------------------------------------");
delay(500);
#endif
}
Обрезанный мной код взятый отсюда
Схема подключения:
Планирую впилить кнопки но прошу совета по коду и подключению выше. Наверняка где то что то сделал не так. Как можно оптимизировать, уменьшить скетч, убрать лишнее. Так же прошу совета на счет подключения потенциометра на 10 кОм к плате что бы не угробить последнюю в долгосрочной перспективе. Заранее всем спасибо