Arduino Помогите с кодом пожалуйста
- Войдите на сайт для отправки комментариев
Втр, 09/02/2016 - 16:56
на ацп имеем напряжение от 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); // не зажигаем диод
}
// на это не реагируем, если зажгли диод выше
digitalWrite(13, LOW); // не зажигаем диод
}
Откуда следует, что не реагируем? Гасим диод нахрен при следующем входе в loop() после увеличения напряжения.
И не забудьте установить режим OUTPUT для пина на котором диод. В setup это надо сделать.
digitalWrite(13, LOW); // не зажигаем диод
т.е эта строчка вообще не нужна ?
Ну, нужна, если Вам нужно гасить диод, когда напряжение повысится.
Ну, нужна, если Вам нужно гасить диод, когда напряжение повысится.
проверю и отпишусь
Ну, нужна, если Вам нужно гасить диод, когда напряжение повысится.
проверю и отпишусь
а как сделать чтобы при повторном измерение, код не выполнялся.
т.е я контак размыкаю, и опять подаю 5в и программа не реагирует.
Простите, не понял вопроса. Давайте так:
1. Вы выложите совй текущий код (только правильно, как вот здесь написано)
2. и опишете как оно у Вас работает. Только чётко: делаю то-то- получаю то-то, затем делаю это-то - получаю это-то
3. и напишете как бы Вы хотели чтобы оно было также чётко: делаю то-то- получаю то-то ...
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. и напишете как бы Вы хотели чтобы оно было также чётко: делаю то-то- получаю то-то ...
Простите, не понял вопроса. Давайте так:
1. Вы выложите совй текущий код (только правильно, как вот здесь написано)
2. и опишете как оно у Вас работает. Только чётко: делаю то-то- получаю то-то, затем делаю это-то - получаю это-то
3. и напишете как бы Вы хотели чтобы оно было также чётко: делаю то-то- получаю то-то ...
т.е замыкаю ацп4 с 5вольтами, диод 13 загорает.и продолжает гореть. при следующей этой манипуляции ничего не должно происходить. как горел так и горит.
Простите, не понял вопроса. Давайте так:
1. Вы выложите совй текущий код (только правильно, как вот здесь написано)
2. и опишете как оно у Вас работает. Только чётко: делаю то-то- получаю то-то, затем делаю это-то - получаю это-то
3. и напишете как бы Вы хотели чтобы оно было также чётко: делаю то-то- получаю то-то ...
т.е замыкаю ацп4 с 5вольтами, диод 13 загорает.и продолжает гореть. при следующей этой манипуляции ничего не должно происходить. как горел так и горит.
а у меня при след замыкании на 5в опять загорается диод и при размыкании тухнет.
Создай переменную, прибавь к ней 1 при первом замыканий, и не сбрасывай ее. поставь что бы условие работало только когда переменная равна 0. Получится как ты хочешь.
а у меня при след замыкании на 5в опять загорается диод и при размыкании тухнет.
Ну, всё правильно, у Вас именно так и написано. Смотрите свой код:
заходим в loop(),
в строке 10 проверяем больше там, чем 1.2 вольта.
если больше, то зажигаем светодиод и выходи (строки 11 и 12)
а если не больше, то продолжаем выполняться и выполняем строку 14 - гасим светодиод.
Т.е. работает в точности так, как написано в програме.
Если Вам надо, чтобы после зажигания идода больше вообще ничего не делалось, то либо сделайте, как советует Tails_MP, либо, ещё проще, поставьте после 9 строки проверку горит - не горит и если горит, выходите из loop() сразу. ЧТо-то типа:
if (digitalRead(ledPin)) return;
а у меня при след замыкании на 5в опять загорается диод и при размыкании тухнет.
Ну, всё правильно, у Вас именно так и написано. Смотрите свой код:
заходим в loop(),
в строке 10 проверяем больше там, чем 1.2 вольта.
если больше, то зажигаем светодиод и выходи (строки 11 и 12)
а если не больше, то продолжаем выполняться и выполняем строку 14 - гасим светодиод.
Т.е. работает в точности так, как написано в програме.
Если Вам надо, чтобы после зажигания идода больше вообще ничего не делалось, то либо сделайте, как советует Tails_MP, либо, ещё проще, поставьте после 9 строки проверку горит - не горит и если горит, выходите из loop() сразу. ЧТо-то типа:
if (digitalRead(ledPin)) return;
спасибо попробую отпишусь!!!
#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 и добавить еще один датчик движения!?
Этот вопрос снят, вроде разобрался! Вот что то не разберусь как от сюда его удалить)))