Мигание светодиода по событию

beetleart
Offline
Зарегистрирован: 10.07.2014
Привет, набросал код работает он странно .
 
Все нечего но когда нажимаю в терминале 3 , светодиод начинает мигать и из это состояния его уже не вывести в чём может быть дело .
 
Алгоритм
 
1 - горит
 
2 - не горит
 
3 - мигает
 
 
 
 
#define BaudRate 9600
#define LEDPin    13
int state=0;
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by
 
void setup()
{
  pinMode(LEDPin, OUTPUT);
  // serial communication
  Serial.begin(BaudRate);
 
}
void loop()
{
     //read from serial port getting information from VS 2013
     state = Serial.read();
     //verify incomingOption
     switch(state){
 
        case '1':
          // Turn ON LED
          digitalWrite(LEDPin, HIGH);
          Serial.println("Led On");
          break;
 
        case '0':
          // Turn OFF LED
          digitalWrite(LEDPin, LOW);
          Serial.println("Led OFF");
          break;
 
          case '3':
          // Turn OFF LED
          Serial.println("BLINK");
while(1)
          //for (int i=0; i<10; ++i)
            {
  digitalWrite(LEDPin,HIGH);      
 delay(300); 
 digitalWrite(LEDPin,LOW);  
 delay(300);
            }
   
          break;
 
          }
          
     }
 
 
 
 
 
     
    
 
 
__Alexander
Offline
Зарегистрирован: 24.10.2012

дело в while

beetleart
Offline
Зарегистрирован: 10.07.2014

__Alexander пишет:

дело в while

А что можно придумать я уже незнаю даже как 

__Alexander
Offline
Зарегистрирован: 24.10.2012

убрать while

beetleart
Offline
Зарегистрирован: 10.07.2014

__Alexander пишет:

убрать while

Круто но без него не работает вообще 

__Alexander
Offline
Зарегистрирован: 24.10.2012

понятное дело. вы перед чтением байта проверяйте есть ли он там. available.

beetleart
Offline
Зарегистрирован: 10.07.2014

__Alexander пишет:

понятное дело. вы перед чтением байта проверяйте есть ли он там. available.

 

Напишите пожалуйста как оно должно быть , я что-то уже завис

__Alexander
Offline
Зарегистрирован: 24.10.2012
 if (Serial.available())
state = Serial.read();

 

 

зы. быстро зависаете... что дальше будет. ))

beetleart
Offline
Зарегистрирован: 10.07.2014

__Alexander пишет:

 if (Serial.available())
state = Serial.read();

не работает , все тоже самое теперь в порт сыпит постоянно LED ON

а нужно считать из С++ это значение что-бы вывести его в приложения .

 

 

зы. быстро зависаете... что дальше будет. ))

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Вам надо вынести моргание/горение/тушение светика за свитч. В кейсах только определять условие по которому будет "работать" светик.

Хотя о чем это я????

beetleart
Offline
Зарегистрирован: 10.07.2014

JollyBiber пишет:

Вам надо вынести моргание/горение/тушение светика за свитч. В кейсах только определять условие по которому будет "работать" светик.

 

Можно пример , как это должно быть я подправлю остальное все 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Это второй шаг :)

У меня создается впечатление что Вы не совсем понимаете как работает while.

В Вашем условии в переводе на русский написано

пока(еденица это еденица) моргай светиком.

А еденица у нас всегда еденица )))

сохраните значение в переменную и в конце loop-a моргайте/зажигайте/тушите по этой переменной