«Я пытаюсь создать программу, в которой у меня есть 6 режимов, управляемых с помощью одной кнопки, проблема в том, что после процедуры SOS процедура продолжается вечно и не соответствует кнопке нажмите до тех пор, пока я не вернусь к последнему S SOS. Ниже приведена программа, любезно объясняющая, как я могу выйти из подпрограммы нажатием кнопки.Arduino button and led program
Во-вторых, эта программа может быть преобразована в .hexfile ? для PIC12 микроконтроллеров? С уважением, Фавад»
// Uses button presses to switch an LED between off, dim, medium, high brightness & SOS.
// constants for this sketch
const int buttonPin = 2; // pushbutton pin
const int led = 9; // LED pin
int dit = 500; //MORSE CODE dit
int dah = dit*3; //MORSE CODE dah
int blankTime = 100; // GAP IN BETWEEN DIT AND DAH
// variables for this sketch
int ledMode = 1; // variable for recording button presses
int ledState = 6;
void setup()
{
// initialize the output pins:
pinMode(led, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}
void loop()
{
// check if the pushbutton is pressed.
if (digitalRead(buttonPin) == HIGH)
{ delay(100);
// if it is, count a press
ledMode = ledMode + 1;
// if we've counted to an invalid mode
if (ledMode == 6)
{delay(100);
// reset to mode 1
ledMode = 1;
}
}
// Detect the current mode and set the LED appropriately
if (ledMode == 1)
{
//Mode 1 - LED is off
analogWrite(led, 0);
}
else if (ledMode == 2)
{
//Mode 2 - LED is dim
analogWrite(led, 64);
delay(100);
}
else if (ledMode == 3)
{
//Mode 3 - LED is medium
analogWrite(led, 128);
delay(100);
}
else if(ledMode==4){
//Mode 4 - LED is bright
analogWrite(led, 255);
delay(100);
}
else if(ledMode==5)
{
//Mode 5 -MORSE CODE
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(dit); // wait
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(blankTime); // wait
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(dit); // wait
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(blankTime); // wait
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(dit); // wait
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(blankTime); // wait
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(dah); // wait
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(blankTime); // wait
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(dah); // wait
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(blankTime); // wait
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(dah); // wait
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(blankTime); // wait
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(dit); // wait
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(blankTime); // wait
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(dit); // wait
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(blankTime); // wait
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(dit); // wait
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(blankTime); } // wait
if(ledState==6){
return;}
//return ;
}
Нет ваше предложение не работает ... это может быть сделано как базисов случае? – Fawad
проверит его снова! –
можно решить? – Fawad