Передача нажатия кнопки (с программным удержанием нажатия) по serial

Нет ответов
wenom86
Offline
Зарегистрирован: 04.11.2012
Здравствуйте. Имеется нефиксируемая кнопка и ардуина uno. Если возможно, пожалуйста разьясните, как можно передать фиксируемое значение кнопки (0 или 1) по Serial, 
Что необходимо получить: (Пока кнопка не нажата, в сериал отправляются 0, как только нажали и отпустили, в сериал начинают отправляться 1. Нули начинают поступать в порт, как только повторно нажали кнопку.)
Имеется написаный код для считывания состояния кнопки и отправки напрямую в порт, а так-же код для выполнения одного действия по нажатию кнопки, но совместить эти коды пока не хватает ума:
 
int Knopka1 = 10; //кнопка1 подключена к 10 цифровому контакту 
void setup() {
  Serial.begin(115200);              // скорость передачи данных в мониторе порта = 115200.
  // Инициализируем цифровые входы/выходы с 3 по 11 в режиме входов.
  pinMode(Knopka1, INPUT);           // назначить выводу порт ввода
  digitalWrite(Knopka1, HIGH);       // активируем подтягивающий резистор 20ком к питанию.
}

void loop() 
{
  digitalWrite (Pin2, HIGH);                // активация передачи данных по rs485
  Serial.print('E');                        // метка канала Е
  Serial.println(!digitalRead(Knopka1));    // считывание состояния 10 пина и отправка инвертированного значения в сериал
  Serial.println("------------------END------------------");  //конец передачи. 
  delay(10);

---------------------------------------

int flag=0; 
void setup()    
{ 
    pinMode(13, OUTPUT);             
} 
void loop() 
{      
     if(digitalRead(14)==HIGH&&flag==0)//если кнопка нажата    
     // и перемення flag равна 0 , то ... 
     {         
       digitalWrite(13,!digitalRead(13)); 
       flag=1; 
        //это нужно для того что бы с каждым нажатием кнопки 
        //происходило только одно действие 
        // плюс защита от "дребезга"  100%     
     }      
      if(digitalRead(14)==LOW&&flag==1)//если кнопка НЕ нажата 
     //и переменная flag равна - 1 ,то ... 
     {           
        flag=0;//обнуляем переменную flag 
     } 
}