Некоторые вопросы по Ардуино

Azzor
Offline
Зарегистрирован: 10.01.2017

Можно ли сделать так, чтобы светодиод  зажигался по нескольким условиям?

К примеру:

К arduino подключен water level sensor и кнопка. Нужно сделать так, чтобы светодиод загорался только тогда, когда на датчике есть вода и нажата кнопка.

Отвечайте, буду рад_))

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

Azzor пишет:

Можно ли сделать так, чтобы светодиод  зажигался по нескольким условиям?

Можно

Azzor пишет:

Отвечайте, буду рад_))

Радуйтесь, я рад, что Вы рады :)))

 

 

Azzor
Offline
Зарегистрирован: 10.01.2017

Хотелось бы поконкретнее узнать, как))

 

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

Чтобы ответить на Ваш вопрос понятно, мне нужно знать:

1. Сколько Вам лет?

2. Каков Ваш уровень в программировании? Нулевой или отрицательный?

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Azzor пишет:

Можно ли сделать так, чтобы светодиод  зажигался по нескольким условиям?

нельзя - я запретил.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Клапауций! Ты хоть что-то РАЗРЕШАТЬ - могешь? ;)

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

Он не по этой части.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Arhat109-2 пишет:

Клапауций! Ты хоть что-то РАЗРЕШАТЬ - могешь? ;)

а, смысл?

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

Похоже, у ТС после запрета все вопросы  отпали :)

Azzor
Offline
Зарегистрирован: 10.01.2017

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

Чтобы ответить на Ваш вопрос понятно, мне нужно знать:

1. Сколько Вам лет?

2. Каков Ваш уровень в программировании? Нулевой или отрицательный?

1.  14

2.  Нулевой)

___________

А если серьезно, то помогите с задачей

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Azzor пишет:

1.  14

2.  Нулевой)

https://youtu.be/NNz45lL8_-Q

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

Ну, если 14, то ладно.

Я так понял, что Вы умете проверить условия по отдельности? Как в Вашем примере: "на датчике есть вода" и "нажата кнопка" .... По отдельности Вы можете проверить эти условия? И зажигать светодиод, когда ОДНО условие верно?

Ну, а дальше есть волшенбные логические операции (почитайте, кстати и не только это, а весь раздел со всеми ссылками - без этого никак!!!). Делаете составное условие. Например:

estVoda && nazhataKnopka // составное условие, верное когда верны ОБА составляющих
estVoda || nazhataKnopka // составное условие, верное когда верно ХОТЯ БЫ ОДНО из составляющих

Вот и все дела. Если с одним условием умеете, то строите составное условие из нескольких, и используете его как одно.

Хотя, Клапауций запретил Вам это, так что, даже не знаю как Вам быть ...

Azzor
Offline
Зарегистрирован: 10.01.2017

Большое спасибо за ссылки) Сам бы не дошел

Будем пытаться теперь...)

Azzor
Offline
Зарегистрирован: 10.01.2017
const int buttonPin = 2;     // номер входа, подключенный к кнопке
const int ledPin =  12;  
int buttonState = 0;
int x;
void setup(){
  pinMode (buttonPin, INPUT);
  pinMode (ledPin, OUTPUT);
  pinMode (A0, INPUT);
  Serial.begin(9600);
}
void loop(){
  x=analogRead(A0);
  buttonState = digitalRead(buttonPin);
  if(x>300 && buttonState == HIGH){digitalWrite(ledPin, HIGH);}
  if(x<300 && buttonState == HIGH){digitalWrite(ledPin, LOW);}
  if(x>300 && buttonState == LOW){digitalWrite(ledPin, LOW);}
}


Чего не так? Вроде должно получиться

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Дребезг кнопки, не? :) Читайте тут в прикрепленных темах про титановые кнопки и лисапеды..

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

Azzor пишет:



Чего не так? Вроде должно получиться

Так пробуйте. Будут проблемы - расскажете. Помните, как Грищенко говорил: "Пробовать надо!"

mims
Offline
Зарегистрирован: 09.01.2017

Вот так лучше:

   if(x>300 && buttonState == HIGH){digitalWrite(ledPin, HIGH);}
   else {digitalWrite(ledPin, LOW);}
}

А дребезг кнопки именно в этом случае некритичен, ИМХО. Просто диод будет с тем же дребезгом разгораться. 

Azzor
Offline
Зарегистрирован: 10.01.2017

Тут кроется проблемка (в моем коде)

Даже при выполнении 2-х условий, диод не зажигается((

Подключено все нормально, с другими схемами работает

GreenLight
Offline
Зарегистрирован: 25.12.2016

а как в коде определяется время для устранения антидребезга? Я не вижу ни millis ни delay! Или может это какой-то "магический" способ, о котором я не слышал :)

mims
Offline
Зарегистрирован: 09.01.2017

Azzor пишет:

Тут кроется проблемка (в моем коде)

Даже при выполнении 2-х условий, диод не зажигается((

Подключено все нормально, с другими схемами работает

Отдельно по каждому условию зажигается? Попробуй так: 8-ю строчку убери совсем, а в 12-й вместо А0 поставь просто 0.

ЗЫ. Схему подключения давай. 

ЗЗЫ. Ардуино-то какая? 

Azzor
Offline
Зарегистрирован: 10.01.2017

1 З.Ы. Не знаю, как дать схему

2 3.Ы Arduino uno

inspiritus
Offline
Зарегистрирован: 17.12.2012

я бы написал, что ledPin = 13;

Тогда Вы легко увидите состояния на встроенном светодиоде.

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

Sega_
Offline
Зарегистрирован: 01.07.2018

Доброго времени суток.
Только начал изучать Arduino, и интересут вопрос.
Дана вот такая программа

#define LED_PIN 9
#define POT_PIN A0

void setup()
{
  pinMode(LED_PIN, OUTPUT);
  pinMode(POT_PIN, INPUT);
}

void loop()
{
  int rotation, brightness;  
  rotation = analogRead(POT_PIN);
  brightness = rotation / 4;
  analogWrite(LED_PIN, brightness);
}

И что произойдет, если из setup() убрать строки

  pinMode(LED_PIN, OUTPUT);
  pinMode(POT_PIN, INPUT);

Расскажите пожалуйста про каждую отдельно, заранее огромное спасибо.

 

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

Sega_ пишет:

Расскажите пожалуйста про каждую отдельно, заранее огромное спасибо.

Да, не вопрос, только код надо было вставлять как положено (прежде чем постить, неплохо было бы ознакомиться с правилами форума).

А так, как Вы вставили, довольствуйтесь вот таким ответом:

1. Если убрать строку №ХЗ, то не поменяется абсолютно ничего, т.к. при включении питания все пины итак установлены в INPUT, да и функции analogRead пофиг на INPUT/OUTPUT.

2. А если удалить строку №ХЗ, то тоже ни хрена не поменяется, т.к. analogWrite пофиг на INPUT/OUTPUT.

Sega_
Offline
Зарегистрирован: 01.07.2018

Спасибо огромное, простите, что не прочитал правила форума, исправлюсь)

Logik
Offline
Зарегистрирован: 05.08.2014

Sega_ пишет:

Спасибо огромное, простите, что не прочитал правила форума, исправлюсь)

Заодно и это http://arduino.ru/Reference почитайте, по всем ссылкам с этой странички. Там и по вашемо вопросу есть, и спасет от недоразумений всяких ;)

Sega_
Offline
Зарегистрирован: 01.07.2018

Спасибо, обязательно изучу)

innka.m
Offline
Зарегистрирован: 19.10.2019

Буду рада, если кто-нибудь поможет разобраться. Делаю кормушку с двумя условиями, с программой более менее понятно, но непонятно с подключением железа. Будет тензодатчик и сервопривод. Последний будет работать по заданному времени, но если на тензодатчик давят, то не будет работать. Только начала заниматься ардуино, поэтому не особо понимаю, как можно их подключить к одному Arduino uno. К тензодатчику планирую купить модуль для тензодатчика (HX711 ацп), а для сервопривода 

RobotDyn NANO V3 ATMEGA328P CH340 MicroUSB

заранее спасибо