Показать сообщение отдельно
Старый 22.11.2014, 18:43   #70
ВладимирC
Старший Пользователь
 
Регистрация: 20.08.2007
Возраст: 51
Город: Москва
Регион: 77, 97, 99, 177
Машина: Hyunday Grandeur 3.3
Сообщений: 852
ВладимирC is a glorious beacon of lightВладимирC is a glorious beacon of lightВладимирC is a glorious beacon of lightВладимирC is a glorious beacon of lightВладимирC is a glorious beacon of light
По умолчанию

Друзья помогите понять что к чему в скетче, а то автор прогуливает)). Просто пока снял блочок, не хочется потом опять деинсталировать.
Цитата:
Сообщение от lti1 Посмотреть сообщение
Код:
int analogPin=A0;
int data;
int data1 = 0;
int flag = 0;
unsigned long eventTime = 0;

void setup()
{
Serial.begin(9600);
digitalWrite(analogPin, HIGH);
}

void loop()
{
data=analogRead(analogPin);

if(data>=950 && data1 != 0 && flag <= 1)
 {
  Serial.print("<release:");
  Serial.print(data1);
  Serial.print(">");
  data1 = 0;
  flag = 0;
  delay(10);
 }

if(data>=950)
 {
 eventTime = millis();
 }

if(data<=949 && flag != 13 && millis()-eventTime>=50 && millis()-eventTime<=800)
 {
  flag = 2;
  data1 = data;
 }

if(data>=950 && flag == 2)
 {
  Serial.print("<click:");
  Serial.print(data1);
  Serial.print(">");
  flag = 0;
  delay(10);
 }

if(data<=949 && flag == 2 && millis()-eventTime>800)
 {
  Serial.print("<hold:");
  Serial.print(data); 
  Serial.print(">");
  data1 = data;
  flag = 1;
  delay(10);
 }
}
1. if(data<=949 && flag != 13 && millis()-eventTime>=50 && millis()-eventTime<=800)
{
почему в этой строке flag сравнивается с 13? Ведь мы задаем ему значения 0, 1, или 2.
2. При очень коротком нажатии код кнопки искажается, чтобы задать минимальное время надо поменять "eventTime>=50" на большее?
3. И чисто для понимания, откуда берется в строках подобной этой: "if(data>=950)" значение 950?
ВладимирC вне форума   Ответить с цитированием