Помогите с кодом товарищи!

Alextuning
Offline
Зарегистрирован: 25.06.2012

Здравствуйте дорогие форумчане!

Если честно, я в тупике! Я новичек в программировании, думаю тупик этим объясняется :) По замыслу код должен делать следующее: когда происходит смена состояния с LOW на HIGH и наоборот на 7 ноге ардуины она должна моргнуть светодиодом.. В реале будет стоять концевик на двери и лампа моргающая при открытии и закрытии. Кажется все просто, но как решить не знаю. 

Выручайте люди добрые!!

ourlive
Offline
Зарегистрирован: 26.05.2012

ех.. чтоб я так жил.. ставим МК чтоб лампочкой мигать.. а вообще ТЗ не грамотно составили. Нужно один раз мигнуть при смене состояния концевика, мигать в состоянии открытой двери и т.д. ?

Alextuning
Offline
Зарегистрирован: 25.06.2012

на самом деле это одна из функций. По ТЗ:

Мигнуть надо один раз при смене состояния. При открытой двери лампа выключена. При закрытой двери лампа так же выключена.

Tamer
Tamer аватар
Offline
Зарегистрирован: 24.06.2012

Храним предыдущее состояние концевика, сравиванием с текущим, если отличается, зажигаем лампу, задержку ставим, гасим лампу,  перезаписываем предыдущее состояние на новое

ourlive
Offline
Зарегистрирован: 26.05.2012

// создаём переменные

переменная типа бит состояние_концевика_было=1;

переменная типа бит состояние_концевика_щас=0; //ноль тут чтоб разок мигнуть на старте, для теста

функция установки() {

режимПина(13,выход);

режимПина(1,вход);

}

функция бесконечная_круговерть() {

состояние_концевика_щас=цифрупрочитать(1);

если (состояние_концевика_щас<>состояние_концевика_было) {

состояние_концевика_было=состояние_концевика_щас;

цифрузаписать(13, HIGH); //зажечь

рауза(100); //подождать

цифрузаписать(13, LOW); /погасить

}

}

 

 

//как то так вот

Alextuning
Offline
Зарегистрирован: 25.06.2012

И в самом деле спасибо, Tamer, все работает! digitalWrite(inPin, HIGH); - включает подтягивающий к +5 встроенный резистор 20кОм для исключения влияния помех. Иначе самопроизвольно моргает. Управляется землей.

Кому интересно код ниже.

int ledPin = 13;
int inPin = 14;
int DoorOld = 0;
int DoorNew = 0;
 
void setup()
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  pinMode(inPin, INPUT);
  digitalWrite(inPin, HIGH);
}
 
void loop()
{
  DoorNew = digitalRead(inPin);
  if (DoorOld != DoorNew)
  {
    digitalWrite(ledPin, HIGH);
    DoorOld = DoorNew;
    delay(500);
    digitalWrite(ledPin, LOW);
    Serial.println(DoorNew);
  }
delay(500);
}

 

Alextuning
Offline
Зарегистрирован: 25.06.2012

 ourlive, паралельно писАли :)