Arduino Помогите с кодом пожалуйста

Alliance
Offline
Зарегистрирован: 20.01.2016

на ацп имеем напряжение от 4 до 5в.как только она падает до 1в выполняем код

вот исходный код , помогите исправить недочеты.

 

int a = A4; 

int ledPin = 13; 

void setup() { 





void loop() 



if(analogRead(a) < 250) // если на 4 АЦП меньше одного вольта примерно 



digitalWrite(ledPin, HIGH); // зажигаем диод 

return; // больше ни на что ниже не реагируем 



// на это не реагируем, если зажгли диод выше 

digitalWrite(13, LOW); // не зажигаем диод 

}

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Alliance пишет:

// на это не реагируем, если зажгли диод выше 

digitalWrite(13, LOW); // не зажигаем диод 

}

Откуда следует, что не реагируем? Гасим диод нахрен при следующем входе в loop() после увеличения напряжения.

И не забудьте установить режим OUTPUT для пина на котором диод. В setup это надо сделать.

Alliance
Offline
Зарегистрирован: 20.01.2016

digitalWrite(13, LOW); // не зажигаем диод 

т.е  эта строчка вообще не нужна ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, нужна, если Вам нужно гасить диод, когда напряжение повысится.

Alliance
Offline
Зарегистрирован: 20.01.2016

ЕвгенийП пишет:

Ну, нужна, если Вам нужно гасить диод, когда напряжение повысится.

проверю и отпишусь

Alliance
Offline
Зарегистрирован: 20.01.2016

Alliance пишет:

ЕвгенийП пишет:

Ну, нужна, если Вам нужно гасить диод, когда напряжение повысится.

проверю и отпишусь

а как сделать чтобы при повторном измерение, код не выполнялся.

т.е я контак размыкаю, и опять подаю 5в и программа не реагирует.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Простите, не понял вопроса. Давайте так:

1. Вы выложите совй текущий код (только правильно, как вот здесь написано)
2. и опишете как оно у Вас работает. Только чётко: делаю то-то- получаю то-то, затем делаю это-то - получаю это-то
3. и напишете как бы Вы хотели чтобы оно было также чётко: делаю то-то- получаю то-то ...

Alliance
Offline
Зарегистрирован: 20.01.2016
int a = A4; 
int ledPin = 13; 
void setup() { 
pinMode(a, INPUT); 
pinMode(ledPin, OUTPUT); 

} 

void loop() { 
if (analogRead(a) > 250) { 
digitalWrite(ledPin, HIGH); 
return; 
} 
digitalWrite(ledPin, LOW); 

}

ЕвгенийП пишет:

Простите, не понял вопроса. Давайте так:

1. Вы выложите совй текущий код (только правильно, как вот здесь написано)
2. и опишете как оно у Вас работает. Только чётко: делаю то-то- получаю то-то, затем делаю это-то - получаю это-то
3. и напишете как бы Вы хотели чтобы оно было также чётко: делаю то-то- получаю то-то ...

Alliance
Offline
Зарегистрирован: 20.01.2016

ЕвгенийП пишет:

Простите, не понял вопроса. Давайте так:

1. Вы выложите совй текущий код (только правильно, как вот здесь написано)
2. и опишете как оно у Вас работает. Только чётко: делаю то-то- получаю то-то, затем делаю это-то - получаю это-то
3. и напишете как бы Вы хотели чтобы оно было также чётко: делаю то-то- получаю то-то ...

т.е замыкаю ацп4 с 5вольтами, диод 13 загорает.и продолжает гореть. при следующей этой манипуляции ничего не должно происходить. как горел так и горит.

Alliance
Offline
Зарегистрирован: 20.01.2016

Alliance пишет:

ЕвгенийП пишет:

Простите, не понял вопроса. Давайте так:

1. Вы выложите совй текущий код (только правильно, как вот здесь написано)
2. и опишете как оно у Вас работает. Только чётко: делаю то-то- получаю то-то, затем делаю это-то - получаю это-то
3. и напишете как бы Вы хотели чтобы оно было также чётко: делаю то-то- получаю то-то ...

т.е замыкаю ацп4 с 5вольтами, диод 13 загорает.и продолжает гореть. при следующей этой манипуляции ничего не должно происходить. как горел так и горит.

а у меня при след замыкании на 5в опять загорается диод и при размыкании тухнет.

Tails_MP
Tails_MP аватар
Offline
Зарегистрирован: 11.11.2015

Создай переменную, прибавь к ней 1 при первом замыканий, и не сбрасывай ее. поставь что бы условие работало только когда переменная равна 0. Получится как ты хочешь.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Alliance пишет:

а у меня при след замыкании на 5в опять загорается диод и при размыкании тухнет.

Ну, всё правильно, у Вас именно так и написано. Смотрите свой код:

заходим в loop(), 
в строке 10 проверяем больше там, чем 1.2 вольта.
если больше, то зажигаем светодиод и выходи (строки 11 и 12)
а если не больше, то продолжаем выполняться и выполняем строку 14 - гасим светодиод.

Т.е. работает в точности так, как написано в програме.

Если Вам надо, чтобы после зажигания идода больше вообще ничего не делалось, то либо сделайте, как советует Tails_MP, либо, ещё проще, поставьте после 9 строки проверку горит - не горит и если горит, выходите из loop() сразу. ЧТо-то типа:

if (digitalRead(ledPin)) return;

 

Alliance
Offline
Зарегистрирован: 20.01.2016

ЕвгенийП пишет:

Alliance пишет:

а у меня при след замыкании на 5в опять загорается диод и при размыкании тухнет.

Ну, всё правильно, у Вас именно так и написано. Смотрите свой код:

заходим в loop(), 
в строке 10 проверяем больше там, чем 1.2 вольта.
если больше, то зажигаем светодиод и выходи (строки 11 и 12)
а если не больше, то продолжаем выполняться и выполняем строку 14 - гасим светодиод.

Т.е. работает в точности так, как написано в програме.

Если Вам надо, чтобы после зажигания идода больше вообще ничего не делалось, то либо сделайте, как советует Tails_MP, либо, ещё проще, поставьте после 9 строки проверку горит - не горит и если горит, выходите из loop() сразу. ЧТо-то типа:

if (digitalRead(ledPin)) return;

 

спасибо попробую отпишусь!!!

SOCHINEC
Offline
Зарегистрирован: 01.05.2016
#define fadePin 10 //пин управления MOSFET транзистором
int calibrationTime = 30; //Время калибровки датчика (10-60 сек. по даташиту)
int pirPin = 2;  //пин подключения управляющего сигнала PIR датчика
int light;       //переменная для хранения состояния света (вкл/выкл)
void setup(){
  Serial.begin(9600);
  pinMode(pirPin, INPUT);  //настриваем 2 пин как вход для сигналов с датчика
  pinMode(fadePin, OUTPUT);// 10 пин на выход, для управления транзистором
  light = 0;     //устанавливаем переменную для первого включения света
  
  Serial.print("Calibrating"); //время датчику на калибровку
  for(int i = 0; i < calibrationTime; i++)
   {
    Serial.print(".");
    delay(1000);
  }
  Serial.println(" done");
  Serial.println("SENSOR ACTIVE");
  delay(50);

}

void loop(){

   if(digitalRead(pirPin) == HIGH )  //если сигнал с датчика высокого уровня(т.е. есть движение)
   {
     if(light == 0)   //и если свет не был включен
     {
       for(int i=0; i<=255; i++)  //то плавно включаем свет
       {
       analogWrite(fadePin, i); 
       delay(30);   //каждые 30мс увеличение на 1
       }
      delay(60000); //пауза на максимальном свечении
       light = 1; //и передаем значение переменной, что свет включен
     }
   } 
   else  //иначе
   {
     if(light == 1) //если свет включен
     {
       for(int i=255; i>=0; i--)//плавно гасим его
       {
       analogWrite(fadePin, i);
       delay(30);
       } 
       light = 0; //и передаем значение переменной, что свет выключен
     }
   }
}

Здравствуйте! Может кто поможет или подскажет куда обратится за пощью! В программировании я вообще 0, можно сказать даже с - ). написал (собрал) вот такой код; (работает))))

вот теперь как вписать сюда еще оставшиеся ШИМ порты Arduino Nano и добавить еще один датчик движения!?

Хочу добиться что то типо как здесь https://www.youtube.com/watch?v=eBius-KsbDU
SOCHINEC
Offline
Зарегистрирован: 01.05.2016

Этот вопрос снят, вроде разобрался! Вот что то не разберусь как от сюда его удалить)))