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

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


Публикации - srmsvetli

Страници: [1]
1
Цитат на: "mivr"
Krasimir е на правилният път трябва ти постоянно............

Явно сме писали по едно и също време,Иначе щях да помисля още преди да пиша.
Сега ми стана още по ясно какво трябва да се случва само да намеря начин да го напиша.
Много благодаря връщам се към размислите.

2
Колега krasimir,
Много ти благодаря за идеята.Пробвах я като самостоятелен код,пробвах и направих леки промени но не успях да я накарам да прави SOS-сигнала и не успях да я накарам да реагира на натискане на бутони.Това най-вероятно е код който да ни уведомява за извършването на действието след него(ако го настроим да мига бързо когато прави нещо или да мига бавно когато се случва друго).Поне аз до този извод стигнах.Поправете ме ако не е така.

Иначе си по играх и направих някои промени по моят код:
 публикувам само част от него по разбираеми причини:
{
  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);            //изчаква
}          
  val=digitalRead(Bb);   //отчитане стоиността на входният пин (8-ми)
  if(val==LOW) .......
....
...
..
.
Накарах го да прави проверка на състоянието на бутона след измигването на всяка буква("S"-"O"-"S")
Сега разбираемо след изпълнението на кода за буква "S" бутона вече не е натиснат ледчето остава да свети постоянно.
Това обаче не решава никак проблема който обсъждаме по горе,само показва че се мъча да стигна до някакво решение.
Остава и още един проблем в този код за който още не съм споменал:
След изтичането на кода има около 2 секунди "размисъл"в който ледчето не свети независимо от позицията на който и да е бутон.
Това е така защото кода свършва и Ардуино започва да го чете отново-НАЛИ?
Поздрави

3
Прочетох няколко пъти написаното от теб и още не мога да хвана точно нишката,в смисъл когато разглеждаме подход 1.Моля подай ми СЛАМКА:
http://arduino.cc/en/Reference/HomePage
Да се помъча сам.

Като цяло:
Цитат
1. Чакаме натискане на бутон 1
2. Бутон 1 е натиснат, светодиодът свети и чакаме натискане на бутон 2

Тук кода няма да се различава(зависи все пак от "сламката")

Цитат
3. Бутон 1 и 2 са натиснати и изчакваме стадий от SOS сигналът*

От тук почва забавлението:
Като за начало в кода написан от мен пише че ако е натиснат бутон2
SOS-а започва да се изпълнява независимо от позицията на бутон1.
Това в този случай не може да се разглежда като грешка-нали е SOS:)
но за да се усложни максимално кода с учебна цел ще трябва да декларираме че когато и двата бутона са натиснати тогава да изпълнява кода.

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

П.П. колко време е необходимо за изучаването на езика за програмиране на Ардуино за един средно схващащ човек?

4
Много съм нещастен да го чуя!Това ще ми попречи в реализацията на следващият проект. :( Само Ардуино ли има този проблем?Проблема в самата платка ли е или може би в чипа(atmega328p-pu)или езика за програмиране?

А по сегашният въпрос:
Ако го накарам да проверява статуса на бутона преди всяко премигване?
Това сигурно ще  бави в изпълнението на SOS-а защото ще трябва да прочита всеки път кода и да проверява дали бутона е натиснат.

5
Здравейте на всички,

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

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

Ето един пример:
/* 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]