5
« -: Август 13, 2013, 01:34:14 am »
Здравейте на всички,
Аз съм напълно нов в програмирането и ардуино но е много готино.
Като начало изпълних няколко примера от книжките за запознанство и програмиране с ардуино и всичко е ок.
Сега обаче имам въпрос:
Защо ардуино изпълнява кода по последователността по която е написан?(ОК логично е да го изпълнява така защото така го чете)
Ето един пример:
/* 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-а до краяа на кода и чак тогава светва постоянно.
Много ще съм благодарен ако някой ми обясни.
Поздрави