Покажи участието

От тук може да видиш всички публикации на този потребител.


Теми - srmsvetli

Страници: [1]
1
Здравейте на всички,

Аз съм напълно нов в програмирането и ардуино но е много готино.
Като начало изпълних няколко примера от книжките за запознанство и програмиране с ардуино и всичко е ок.

Сега обаче имам въпрос:
Защо ардуино изпълнява кода по последователността по която е написан?(ОК логично е да го изпълнява така защото така го чете)

Ето един пример:
/* SOS-ФЕНЕРЧЕ
*
*  1бр.-ЛЕД ДИОД
*  2бр.-ON/OFF КЛЮЧЕТА
*  2бр.-РЕЗИСТОРИ   //МОЖЕ И 1бр.-ПОТЕНЦИОНЕТЪР
*
*/

int LED=13;              //декларираме че ледчето ще е на 13 ти пин
int Ba=4;                //декларираме вход от бутона Ba на 4 ми пин
int Bb=8;                //декларираме вход от бутона Bb на 8 ти пин
int val=0;               //променлива отчитаща статуса на 7-ми и 4-ти пинове
                         //intval Връща стойността на дадена променлива като цяло число

void setup()             //след тази команда следва да декларираме пиновете
{
  pinMode(LED,OUTPUT);   //декларираме диода като изход
  pinMode(Ba,INPUT);     //декларираме бутона Ba като вход
  pinMode(Bb,INPUT);     //декларираме бутона Bb като вход
}

void loop()              //след тази команда следва да
                         //опишем алгоритъма на действие
{
  val=digitalRead(Ba);   //отчитане стоиността на входният пин (4-ти)
  if(val==HIGH)          //ако Ba==HIGH бутонът не е натиснат
{
  digitalWrite(LED,LOW); //ледчето не свети
}
if(val==LOW)             //ако Ba==LOW бутонът е натиснат
{
  digitalWrite(LED,HIGH);//ледчето свети
}
{
  val=digitalRead(Bb);   //отчитане стоиността на входният пин (8-ми)
  if(val==LOW)           //ако Bb==LOW бутонът е натиснат
  {
  digitalWrite(LED,HIGH);//ледчето свети
  delay(200);            //изчаква
  digitalWrite(LED,LOW); //ледчето не свети
  delay(200);            //изчаква        
  digitalWrite(LED,HIGH);//ледчето свети
  delay(200);            //изчаква          
  digitalWrite(LED,LOW); //ледчето не свети
  delay(200);            //изчаква
  digitalWrite(LED,HIGH);//ледчето свети
  delay(200);            //изчаква          
  digitalWrite(LED,LOW); //ледчето не свети
  delay(500);            //изчаква
 
  digitalWrite(LED,HIGH);//ледчето свети
  delay(500);            //изчаква            
  digitalWrite(LED,LOW); //ледчето не свети
  delay(500);            //изчаква          
  digitalWrite(LED,HIGH);//ледчето свети
  delay(500);            //изчаква            
  digitalWrite(LED,LOW); //ледчето не свети
  delay(500);            //изчаква
  digitalWrite(LED,HIGH);//ледчето свети
  delay(500);            //изчаква            
  digitalWrite(LED,LOW); //ледчето не свети
  delay(500);            //изчаква
 
  digitalWrite(LED,HIGH);//ледчето свети
  delay(200);            //изчаква            
  digitalWrite(LED,LOW); //ледчето не свети
  delay(200);            //изчаква          
  digitalWrite(LED,HIGH);//ледчето свети
  delay(200);            //изчаква            
  digitalWrite(LED,LOW); //ледчето не свети
  delay(200);            //изчаква
  digitalWrite(LED,HIGH);//ледчето свети
  delay(200);            //изчаква            
  digitalWrite(LED,LOW); //ледчето не свети
  delay(2000);           //изчаква
  }
}
}

Кода си го измислих аз докато си играех с Ардуино.
След натискане на бутон Ba диода светва и когато натисна и бутон Bb
започва да изпълнява SOS сигналът,но когато пуснем бутон Bb диода продължава да изпълнява SOS-а до краяа на кода и чак тогава светва постоянно.

Много ще съм благодарен ако някой ми обясни.
Поздрави

Страници: [1]