Не могу понять что я написал!
- Войдите на сайт для отправки комментариев
Пт, 28/02/2020 - 20:27
Здравствуйте. Химичил с аналоговыми кнопками и вот что нахимичил(Ардуино при этом ни как не реагирует ни на кнопки ни на пресутствие реле!):
#define PIN_RELAYONE 3
#define PIN_RELAYTWO 4
#define PIN_RELAYTREE 5
#define PIN_RELAYFOR 6
#define PIN_DIODONE 7
#define PIN_DIODTWO 8
#define PIN_DIODTREE 9
#define PIN_DIODFOR 10
#define PIN_DIODFIVE 11
#define PIN_DIODSIX 12
int count_1 = 0;
int button_old_1 = 1;
int count_2 = 0;
int button_old_2 = 1;
int count_3 = 0;
int button_old_3 = 1;
int count_4 = 0;
int button_old_4 = 1;
int state_1 = 0;
int state_2 = 0;
int state_3 = 0;
void setup() {
Serial.begin(9600);
pinMode(PIN_RELAYONE, OUTPUT);
pinMode(PIN_RELAYTWO, OUTPUT);
pinMode(PIN_RELAYTREE, OUTPUT);
pinMode(PIN_RELAYFOR, OUTPUT);
digitalWrite(PIN_RELAYONE, HIGH);
digitalWrite(PIN_RELAYTWO, HIGH);
digitalWrite(PIN_RELAYTREE, HIGH);
digitalWrite(PIN_RELAYFOR, HIGH);
digitalWrite(PIN_DIODONE, LOW);
digitalWrite(PIN_DIODTWO, LOW);
digitalWrite(PIN_DIODTREE, LOW);
digitalWrite(PIN_DIODFOR, LOW);
digitalWrite(PIN_DIODFIVE, LOW);
digitalWrite(PIN_DIODSIX, LOW);
int analogread = 1000;
}
void loop() {
if ((analogRead(A1) < 300)&&(button_old_1==1))
{
count_1 = count_1 + 1;
if (count_1 == 1)
{ digitalWrite(PIN_DIODONE, HIGH);
digitalWrite(PIN_RELAYONE, LOW);
digitalWrite(PIN_RELAYTWO, LOW);
digitalWrite(PIN_RELAYTREE, LOW);
delay(2500);
digitalWrite(PIN_RELAYTREE, HIGH);
delay(2500);
digitalWrite(PIN_RELAYTREE, LOW);
state_1 = 1;
state_2 = 1;
}
if (count_1 == 2)
{
digitalWrite(PIN_RELAYONE, HIGH);
digitalWrite(PIN_RELAYTREE, HIGH);
count_1 = 0;
state_1 = 0;
digitalWrite(PIN_DIODONE, LOW);
}
}
button_old_1 = 1;
delay(10);
if ((analogRead(A2) < 300)&&(button_old_2==1))
{
count_2 = count_2 + 1;
if (count_2 == 1)
{
if (state_2 == 0)
{
digitalWrite(PIN_RELAYTWO, LOW);
state_2 = 1;
digitalWrite(PIN_DIODTWO, HIGH);
}
else if(state_2 == 1)
{
digitalWrite(PIN_RELAYTWO, HIGH);
state_2 = 0;
digitalWrite(PIN_DIODTWO, LOW);
}
}
if (count_2 == 2)
{
if (state_2 == 0)
{
digitalWrite(PIN_RELAYTWO, LOW);
state_2 = 1;
digitalWrite(PIN_DIODTWO, HIGH);
}
else if(state_2 == 1)
{
digitalWrite(PIN_RELAYTWO, HIGH);
state_2 = 0;
digitalWrite(PIN_DIODTWO, LOW);
}
count_2 = 0;
}
}
button_old_2 = 1;
delay(10);
if ((analogRead(A3) < 300)&&(button_old_3==1))
{
count_3 = count_3 + 1;
if (state_3 <= 4 && state_1 == 1)
{
state_3 = state_3 + 1;
count_3 = 0;
}
else if (state_3 >= 4 && state_1 == 1)
{
state_3 = 4;
count_3 = 0;
}
else
{
state_3 = 0;
}
}
button_old_3 = 1;
delay(10);
if ((analogRead(A4) < 300)&&(button_old_4==1))
{
count_4 = count_4 + 1;
if (state_3 > 0 && state_1 == 1)
{
state_3 = state_3 - 1;
count_4 = 0;
}
else if (state_3 < 0 && state_1 == 1)
{
state_3 = 0;
count_4 = 0;
}
else
{
state_3 = 0;
}
}
button_old_4 = 1;
delay(10);
if (state_3 == 1)
{
digitalWrite(PIN_DIODTREE, HIGH);
digitalWrite(PIN_DIODFOR, LOW);
digitalWrite(PIN_DIODFIVE, LOW);
digitalWrite(PIN_DIODSIX, LOW);
digitalWrite(PIN_RELAYTREE, LOW);
delay(2500);
digitalWrite(PIN_RELAYTREE, HIGH);
delay(2500);
digitalWrite(PIN_RELAYTREE, LOW);
}
else if (state_3 == 2)
{
digitalWrite(PIN_DIODTREE, HIGH);
digitalWrite(PIN_DIODFOR, HIGH);
digitalWrite(PIN_DIODFIVE, LOW);
digitalWrite(PIN_DIODSIX, LOW);
digitalWrite(PIN_RELAYTREE, LOW);
delay(5000);
digitalWrite(PIN_RELAYTREE, HIGH);
delay(2500);
digitalWrite(PIN_RELAYTREE, LOW);
}
else if (state_3 == 3)
{
digitalWrite(PIN_DIODTREE, HIGH);
digitalWrite(PIN_DIODFOR, HIGH);
digitalWrite(PIN_DIODFIVE, HIGH);
digitalWrite(PIN_DIODSIX, LOW);
digitalWrite(PIN_RELAYTREE, LOW);
delay(7000);
digitalWrite(PIN_RELAYTREE, HIGH);
delay(2500);
digitalWrite(PIN_RELAYTREE, LOW);
}
else if (state_3 == 4)
{
digitalWrite(PIN_DIODTREE, HIGH);
digitalWrite(PIN_DIODFOR, HIGH);
digitalWrite(PIN_DIODFIVE, HIGH);
digitalWrite(PIN_DIODSIX, HIGH);
digitalWrite(PIN_RELAYTREE, LOW);
}
else if (state_3 == 0)
{
digitalWrite(PIN_RELAYTREE, HIGH);
digitalWrite(PIN_DIODFOR, LOW);
digitalWrite(PIN_DIODFIVE, LOW);
digitalWrite(PIN_DIODSIX, LOW);
digitalWrite(PIN_DIODTREE, LOW);
}
if (state_1 == 0)
{
digitalWrite(PIN_RELAYTREE, HIGH);
}
}
Да-с, херню-с Вы, батенька, какую то написали. И даже без комментариев. Совсем херня-с.
Может нормальным языком (русским) расскажете, а чего хотели-то?
Видимо что то связанное с подсчетом нажатий. Но по моему ну грамотно использована функция подсчета. Не совсем пойму например к чему там int analogread? Опиши подробнее пж..
Кнопки подключены к а налоговым входам. Хочу иметь подсчет количества нажатии. И в связи с этим управлять реле и светодиодами.
В принципе, плевать куда полключены, важен алгоритм. Вы его четко себе представляете? Типа:
Я нажал на кнопку А
Счетчик увеличился на 1
Если счетчик превысил 7, то счетчик равен 1
.........
Если счетчик равен 1, то ....
Если счетчик равен 2, то ....
и т.д.
на аналоговом пине нажатие тактовой кнопки надо фиксировать её отжатием (через флаги), вопрос если кнопка отжата, как фиксируете её отжатие? схему клавиатуры в студию