Я пишу программу Arduino для управления мини-пушкой для косплея друга. Мне нужно написать программу, чтобы при нажатии кнопки двигатель увеличивался с 0 до заданного значения (сейчас давайте скажем «analogWrite (output_pin, 200);»), а затем l oop на этих оборотах, пока кнопка не будет отпущена , в этот момент он должен вернуться к нулю.
Когда я пытаюсь ввести линейное изменение в oop, код не заканчивается sh. I
Мне нужно что-то подобное в коде c ++ для кнопки Arduino. (Я пробовал похожие вещи, используя функцию «задержки», но безрезультатно)
motorspeed = 0
if buttonpress == True:
buttonheld = True
for i in range (0,10):
delay(1)
motorspeed =+ 20
if buttonpress == False:
motorspeed = 0
if buttonheld == True:
motorspeed = 200
if buttonpress == False:
for i in range(0,10):
delay(1)
motorspeed =- 20
else:
#shut off motor
#Play error sound
Вот текущий код, который запускает двигатель только на одной скорости, когда кнопка удерживается нажатой.
const int button1 =4;
int BUTTONstate1 = 0;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(9, OUTPUT);
pinMode(button1, INPUT);
}
void loop()
{
//set button to read
BUTTONstate1 = digitalRead(button1);
//if button is pressed
if (BUTTONstate1 == HIGH)
{
//run current through motor
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
//set speed
//Rampup
analogWrite(9,200);
}
else
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
}
}
Вот виртуальная среда для схемы
https://www.tinkercad.com/things/cLOBc9JJuTz-copy-of-dayloncircuitrefinecode/editel?sharecode=b6cqTLlNqUCCN09-mQ_zykp5sMnXx6KLt_KNqlXJmcs