Помогите совсем новичку.

barbadeya
Offline
Зарегистрирован: 31.03.2015

Извиняюсь что с глупыми вопросами лезу.

Сегодня первый день как купил Ардуину Уно.

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

Но не смог найти в наличии датчик температуры и купил пару диодов =) чтобы попробовать.

И тут же в ступор впал.

Пытался написать примерно такое.

Если Диод1 горит то второй не горит если первый погас то второй загорелся.

Но по какой то невероятной причине (кривые руки и элементарное незнание програмирования), выходит что у меня либо оба горят, либо один горит, загорается второй потом первый мегает а второй горит ну и тд, в общем выходит все кроме того что нужно=) 

Ну и в результате я вообще запутался. Если не  сложно скиньте пример скетча который бы по очереди ключал диод и и уже основываясь на первом диоде, зажигал второй.

Я уже даже тут запутался что пишу) но вроде изложил верно) 

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

Ааа по какой причине первый светик меняет своё состояние ?

все это железо предназначено для выдачи управляющих воздействий на исполнительные устройства  в зависимости от комплекса входящей информации от органов управления и датчиков. Между первым и вторым Ваш алгоритм.

типа ...

Включить первый, проверить состояние первого, если оно такое, то Это, а если Не такое , то То. 

Выключить первый , проверить состояние первого, если оно такое , то Это, если Не такое, то То

Если на слэнге крутых программеров это if.

только вот это неинтересно. Вместо первого светика сделайте кнопку. Тогда в зависимости от состояния кнопки у явас будет менять состояние светик. А это уже УПРАВЛЕНИЕ. Светик пользуйте из блинка - 13й. Кнопку повесьте на какойнить вход, от входа на минус(землю) с подтяжкой. 

Смотрите раздел программирование на сайте arduino.ru и примеры, факи.

barbadeya
Offline
Зарегистрирован: 31.03.2015
int pin1 = 13;
int pin2 = 12;
 
void setup() 
{
pinMode (pin1, OUTPUT);
pinMode (pin2, OUTPUT);
 
}
 
void loop() 
{
 digitalWrite(pin1, HIGH);
 delay(100);
 digitalWrite(pin1, LOW);
 delay(100);
 if(pin1==HIGH);
 else digitalWrite(pin2, HIGH);
 delay(100);
 digitalWrite(pin2, LOW);
 delay(100);
}
 
 
Разобрался, сделал вот так, но есть чувство что это порнуха и так не должно быть.
Хоть результат и устраивает.
barbadeya
Offline
Зарегистрирован: 31.03.2015

И все равно я не могу причины почему до этого не получалось было типа 

void loop() 
{
 digitalWrite(pin1, HIGH);
 delay(1000);
 digitalWrite(pin1, LOW);
 delay(1000);
 if(pin1==HIGH);
 else digitalWrite(pin2, low);
 if
 digitalWrite(pin1, LOW);
 else digitalWrite(pin2, HIGH);
}
Примерно так, но почему то при таком раскладе у меня загорался 2й светодиод и мигал первый.
inspiritus
Offline
Зарегистрирован: 17.12.2012

barbadeya пишет:

int pin1 = 13;
int pin2 = 12;
 
void setup() 
{
pinMode (pin1, OUTPUT);
pinMode (pin2, OUTPUT);
 
}
 
void loop() 
{
 digitalWrite(pin1, HIGH);
 delay(100);
 digitalWrite(pin1, LOW);
 delay(100);
 if(pin1==HIGH);
 else digitalWrite(pin2, HIGH);
 delay(100);
 digitalWrite(pin2, LOW);
 delay(100);
}
 
 
Разобрался, сделал вот так, но есть чувство что это порнуха и так не должно быть.
Хоть результат и устраивает.

Вы написали

включить пин1 подождать и выключить его.

если пин1 включен ( далее ничего не делать)

в противном случае( то есть , если оно выключено) послать пин2 включено.подождать и выключить.

начать сначала.

мне кажется это не та логика, которую можно назвать логикой.

для начала пошагово напишите, что Вы хотите , чтобы оно делало.

Marlen S
Offline
Зарегистрирован: 13.01.2015

barbadeya пишет:

Извиняюсь что с глупыми вопросами лезу.

Сегодня первый день как купил Ардуину Уно.

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

Но не смог найти в наличии датчик температуры и купил пару диодов =) чтобы попробовать.

И тут же в ступор впал.

Пытался написать примерно такое.

Если Диод1 горит то второй не горит если первый погас то второй загорелся.

Но по какой то невероятной причине (кривые руки и элементарное незнание програмирования), выходит что у меня либо оба горят, либо один горит, загорается второй потом первый мегает а второй горит ну и тд, в общем выходит все кроме того что нужно=) 

Ну и в результате я вообще запутался. Если не  сложно скиньте пример скетча который бы по очереди ключал диод и и уже основываясь на первом диоде, зажигал второй.

Я уже даже тут запутался что пишу) но вроде изложил верно) 

 

Простите, Вы имели ввиду что-то типо этого? 


const int ledPin1 =  13;      
const int ledPin2 =  12;

boolean ledState_1 = LOW;            
boolean ledState_2 = LOW; 
 

unsigned long previousMillis = 0;        
const long interval = 1000;           // здесь укажите свою задержку

void setup() 
{
  pinMode(ledPin1, OUTPUT);     
  pinMode(ledPin2, OUTPUT);
  digitalWrite(ledPin1, LOW);  
  digitalWrite(ledPin2, LOW);  
}

void loop()
{
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis >= interval)
  {
    previousMillis = currentMillis;   

    if (ledState_1 == LOW)
    {
      ledState_1 = HIGH;
    }
    else
    {
      ledState_1 = LOW;
    }

    digitalWrite(ledPin1, ledState_1);

    if (ledState_1 == HIGH)
    {
      ledState_2 = LOW;
    }
    else
    {
      ledState_2 = HIGH;
    }

    digitalWrite(ledPin2, ledState_2);
  }
}