Я начинаю с ардуино, и я пытаюсь создать генератор синусовой волны. Поскольку я недавно обнаружил, что не могу поместить все в основной цикл void, я пытаюсь использовать прерывания. У меня проблема с изменением переменной внутри прерывания (Delay), я не знаю, где ошибка. Вот мой код:переменная прерывания arduino не работает
int sine256[] = { //256 sin values from 0 to 2pi
};
int i = 0;
int sensorPin = 7;
int outputPin = 6;
volatile float Delay = 10000;
void setup()
{
Serial.begin(9600);
pinMode(outputPin, OUTPUT);
pinMode(sensorPin, INPUT);
attachInterrupt(digitalPinToInterrupt(sensorPin), freq, RISING);
}
void loop()
{
analogWrite(6,sine256[i]);
i = i + 1;
if(i == 256){
i = 0;
}
Serial.println(Delay);
delayMicroseconds(Delay);
}
void freq() {
Delay = Delay/2;
}
На вашей 'void setup', измените' pinMode (sensorPin, INPUT); 'to' pinMode (sensorPin, INPUT_PULLUP); '. Среднее значение 'INPUT' не включает ребро« RISING/FALLING ». @nyuhanC – dsgdfg