Датчик

vlad45
Offline
Зарегистрирован: 12.01.2015

Всем привет помощь нужна я новичек в ардуино хочу сделать два ик датчика барьера в дальнейшем будет передоваться по смс какой датчик сработал. Проблема в том что я не могу программы объединить

Алексей Н
Offline
Зарегистрирован: 02.01.2016

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

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

Алексей Н пишет:

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

Совершенноо верно!

Алексей Н пишет:

В противном случае есть очень большая вероятность, что Вас отправят в платные услуги.

И правильно сделают! :)

 

vlad45
Offline
Зарегистрирован: 12.01.2015
#include <Bounce.h>
 
 
#define BUTTON 2
#define LED 13
 
// Instantiate a Bounce object with a 5 millisecond debounce time
Bounce bouncer = Bounce( BUTTON,5 ); 
 
void setup() {
  pinMode(BUTTON,INPUT);
  pinMode(LED,OUTPUT);
}
 
void loop() {
 // Update the debouncer
  bouncer.update ( );
 
 // Get the update value
 int value = bouncer.read();
 
 // Turn on or off the LED
 if ( value == HIGH) {
   digitalWrite(LED, HIGH );
 } else {
    digitalWrite(LED, LOW );
 }
 
}
#include <Bounce.h>
#define BUTTON 2
#define LED 13
 
int ledValue = LOW;
 
 
 
vlad45
Offline
Зарегистрирован: 12.01.2015

вот этот код нужно дублировать в несколько что бы можно было подключить несколько датчиков ик-барьер

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

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...

Это не придирка. В таком виде а) легче читать и б) можно ссылаться на номера строк в обсуждении. Сделайте, пожалуйста.

Алексей Н
Offline
Зарегистрирован: 02.01.2016

Хммм... повторю, что я всего лишь новичок, но мне этот код кажется странным. Насколько я знаю библиотека Bounce используется чтобы подавить дребезг кнопок. И как это связано с ИК-датчиками не очень понятно.

Ну и в будущем приводите код в правильный вид, как советуют старшие товарищи.

vlad45
Offline
Зарегистрирован: 12.01.2015
// constants won't change. They're used here to 
// set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);     
}

void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(ledPin, LOW); 
  }
}

 

vlad45
Offline
Зарегистрирован: 12.01.2015

вот код и мне его нужно сделать в несколько одинаковых сам пробовал совмещать появляются ошибки 

 

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

Так покажите, что пробовали, какие ошибки. Покажите свой рабочий код и скопипсатите сообщения об ошибках.

vlad45
Offline
Зарегистрирован: 12.01.2015

сейчас я скинул рабочую программу для кнопки она одна мне нужно сделать несколько дублей этой програмиы 

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

А не проще ли вместо всей лабуды в строках 17-29 написать одну единственную строчку

digitalWrite(ledPin, digitalRead(buttonPin)); 

и заодно выбросить нафиг строки 6 и 7?

vlad45
Offline
Зарегистрирован: 12.01.2015

я просто не могу понять как делать дубли программ что бы к примеру стоит у меня один ик датчик мне нужно их 3-4 штуки подключить как вот как мне создать программы для этих 3-4 датчиков 

vlad45
Offline
Зарегистрирован: 12.01.2015

в первые вижу что можно такой маленькой строчкой обойтись 

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

vlad45 пишет:

сейчас я скинул рабочую программу для кнопки она одна мне нужно сделать несколько дублей этой програмиы 

Влад, если нужно - делай.

Ты пришёл за помощью потому, что

vlad45 пишет:

сам пробовал совмещать появляются ошибки 

Так вот, покажи что ты пробовал и какие ошибки появляются.
vlad45
Offline
Зарегистрирован: 12.01.2015
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin
const int buttonPin1 = 3;     // the number of the pushbutton pin
const int ledPin1 =  12;      // the number of the LED pin
// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);     
}
{
  // initialize the LED pin as an output:
  pinMode(ledPin1, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin1, INPUT);     
}
void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(ledPin1, LOW); 
  }
    // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin1);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(ledPin1, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(ledPin1, LOW); 
  }
}

 

vlad45
Offline
Зарегистрирован: 12.01.2015

я делал вот так и загарается ошибка 

 
Button:42: error: expected unqualified-id before '{' token
vlad45
Offline
Зарегистрирован: 12.01.2015

Button:42: error: expected unqualified-id before '{' token

 

nik182
Offline
Зарегистрирован: 04.05.2015

Прочитай зачем нужны фигурные скобки. Зачем нужна точка с запятой. Любой учебник по СИ. Конкретно здесь ошибка означает отсутствие перед фигурной скобкой какого либо названия либо оператора. Подсказка -подводи курсор к скобке - парная подсветится.  

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

vlad45 пишет:

я делал вот так и загарается ошибка 

 
Button:42: error: expected unqualified-id before '{' token

Это точно то скетч и точно то сообщение об ошибке? Я вижу ошибку в строке 14, но никак не в 42. Вы там на кой-то чёрт закрыли фигурную скобку (закончили функцию) и тут же открыли новую. Вот он и не понял Вашего манёвра - что это новая скобка означает. Только это не 42-ая строка. Давайте Вы будете точно выкладывать.

vlad45
Offline
Зарегистрирован: 12.01.2015

как программа пишет ошибки я так и выкладываю

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

vlad45 пишет:

как программа пишет ошибки я так и выкладываю

Тогда копипастите их полностью, а не кусочно.

Ну, эту то исправили? Есть что-то новенькое?

vlad45
Offline
Зарегистрирован: 12.01.2015

const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin
const int buttonPin1 = 3;     // the number of the pushbutton pin
const int ledPin1 =  12;      // the number of the LED pin
// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);     
}
  // initialize the LED pin as an output:
  pinMode( ledPin1, OUTPUT);     
  // initialize the pushbutton pin as an input: 
  pinMode(buttonPin1, INPUT);     
}
void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
}
  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(ledPin1, LOW); 
  }
    // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin1);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(ledPin1, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(ledPin1, LOW); 
  }
}

 

vlad45
Offline
Зарегистрирован: 12.01.2015
Button:16: error: expected constructor, destructor, or type conversion before '(' token
Button:18: error: expected constructor, destructor, or type conversion before '(' token
Button:19: error: expected declaration before '}' token
 
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Дык, у Вас было две скобки. В строка 13 и 14. А удалили Вы только одну. Какое-то половинчатое решение. Удаляйте и вторую.

Вы совсем не понимаете что там написано?

vlad45
Offline
Зарегистрирован: 12.01.2015

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

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

Так вторую скобку убал?

В скетче из поста 15 убери нахрен ОБЕ строки 13 и 14!

vlad45
Offline
Зарегистрирован: 12.01.2015

да убрал проверил программу все хорошо только образовалась другая проблема собрал схему получается что программа 2 и 13 не работает строка 1и2 а 3и4 работает 

vlad45
Offline
Зарегистрирован: 12.01.2015

на 1и2 строке светодиод постоянно горит 

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

vlad45 пишет:

да убрал проверил программу все хорошо только образовалась другая проблема собрал схему получается что программа 2 и 13 не работает строка 1и2 а 3и4 работает 

Я этого не понял. Что такое программа 2 и 13? ЧТо за строка 1 и 2. Приведите текущую версию скетча и объясните толком что именно не работает, а что работает.

vlad45
Offline
Зарегистрирован: 12.01.2015
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin
const int buttonPin1 = 3;     // the number of the pushbutton pin
const int ledPin1 =  12;      // the number of the LED pin
// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);     

  // initialize the LED pin as an output:
  pinMode(ledPin1, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin1, INPUT);     
}
void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(ledPin1, LOW); 
  }
    // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin1);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin1, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(ledPin1, LOW); 
  }
}

 

vlad45
Offline
Зарегистрирован: 12.01.2015

ЭТА ПРОГРАММА РАБОТАЕТ ТОЛЬКО КОГДА Я ПОДКЛЮЧАЮ КНОПКУ НА КОНТАКТ 3 А ДИОД НА 12 ПРОГРАММА РАБОТАЕТ ТАК КАК МНЕ НУЖНО А КОГДА Я ПОДКЛЮЧАЮ КНОПКУ НА 2 И ДИОД НА 13 ТО ОН ГОРИТ ПОСТОЯННО НА КНОПКУ НЕ ОТКЛИКАЕТСЯ 

vlad45
Offline
Зарегистрирован: 12.01.2015

ВСЕ Я РАЗОБРАЛСЯ ПОЧЕМУ ОН ГОРЕЛ В 31 СТРОКЕ ОШИБКА БЫЛА СПАСИБО БОЛЬШОЕ ЗА ПОМОЩЬ ЕСЛИ ЧТО ЕЩЕ МОГУ ОБРАТИТЬСЯ 

vlad45
Offline
Зарегистрирован: 12.01.2015

сейчас столкнулся с новой проблемой с блютусом 

int val;
int LED = 13;
int val1;
int LED1 = 12;

void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
Serial.begin(9600);
pinMode(LED1, OUTPUT);
}

void loop()
{
if (Serial.available())
if (Serial.available())
{
val = Serial.read();
// При символе "W" включаем светодиод
if (val == 'W')
val1 = Serial.read();
// При символе "W" включаем светодиод
if (val1 == 'q')
{
digitalWrite(LED, HIGH);
digitalWrite(LED1, HIGH);
}
// При символе "S" выключаем светодиод
if ( val == 'S')
if ( val1 == 'a')
{
digitalWrite(LED, LOW);
digitalWrite(LED1, LOW);
}
}
}

 

vlad45
Offline
Зарегистрирован: 12.01.2015

почему то не работает

 

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

Строки 33-34 не выполняются никогда, т.к. там стоят два условия, противоречащих друг другу (в строках 30 и 31)

vlad45
Offline
Зарегистрирован: 12.01.2015

строка 30 31 там идет обозначение двух команд тоесть буква "s" выключает одну программу буква "а" выключает другую программу 

струки 33 34 их что можно вообще удалить 

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

Ради Бога простите. В 30 val, а в 31 val1 - а мне что-то показалось, что там одна и та же переменная. Простите.

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

Влад, а Вы логику своей программы сами понимаете. Я вот расставил её "лесенкой", посмотрите

int val;
int LED = 13;
int val1;
int LED1 = 12;

void setup()
{
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
  pinMode(LED1, OUTPUT);
}

void loop()
{
  if (Serial.available())
    if (Serial.available())
    {
      val = Serial.read();
      // При символе "W" включаем светодиод
      if (val == 'W')
        val1 = Serial.read();
      // При символе "W" включаем светодиод
      if (val1 == 'q')
      {
        digitalWrite(LED, HIGH);
        digitalWrite(LED1, HIGH);
      }
      // При символе "S" выключаем светодиод
      if ( val == 'S')
        if ( val1 == 'a')
        {
          digitalWrite(LED, LOW);
          digitalWrite(LED1, LOW);
        }
    }
}

Вы понимаете что она делает. Вот просто ведите пальцем по строкам.

И, кстати, зачем дважды проверять available?

vlad45
Offline
Зарегистрирован: 12.01.2015

я просто пытаюсь объединить две программы вот и написал available а что оно проверяет

 

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

Ну, вот знаете, я ребёнку всегда советую, "сядь и напиши логику программы словами". Вы можете логику своей программы написать словами? Сделайте это.

vlad45
Offline
Зарегистрирован: 12.01.2015
01 int val;
02 int LED = 13;
03 int val1;
04 int LED1 = 12;

 с 1-4 строки подключение портов   

05  
06 void setup()
07 {
08   Serial.begin(9600);
09   pinMode(LED, OUTPUT);
10   Serial.begin(9600);
11   pinMode(LED1, OUTPUT);
12 }
13  

с 8-11 выходи на диоды

14 void loop()
15 {
16   if (Serial.available())
17     if (Serial.available())
18     {
19       val = Serial.read();
20       // При символе "W" включаем светодиод
21       if (val == 'W')

 

с19-21 при нажатии клавиши включается диод

22         val1 = Serial.read();
23       // При символе "W" включаем светодиод
24       if (val1 == 'q')
25       {

 

с22-25 при нажатии клавиши включается диод

26         digitalWrite(LED, HIGH);
27         digitalWrite(LED1, HIGH);

 

26 27 сигнал высокий включается 

28       }
29       // При символе "S" выключаем светодиод
30       if ( val == 'S')

 

30 выключение диода 

31         if ( val1 == 'a')

 

31 выключение диода

32         {
33           digitalWrite(LED, LOW);
34           digitalWrite(LED1, LOW);

 

33 34 сигнал низкий

35         }
36     }
37 }

 

vlad45
Offline
Зарегистрирован: 12.01.2015

конечно не знаю правильно расписал или нет но я вот так вижу программу

 

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

Нет, мне (вернее Вам) не это надо.

Надо написать словами: Типа такого

1. Читаем состяние пина 4
   если HIGH то устанавливаем пин 5 в LOW
   иначе устанавливает пин 6 в LOW

....

Только писать не по данной программе, а забыв про неё. просто написать что Вам нужно! А потом уже о программе думать.

 

vlad45
Offline
Зарегистрирован: 12.01.2015

что то не понял 

 

vlad45
Offline
Зарегистрирован: 12.01.2015

сейчас я подключаю блютуз 

мне  нужно так же размножить код я вроде все сделал ошибок не выдает но не  работает как только я убираю строки 22-25 программма работает востанавливаю строки 22-25 перестает работать

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

vlad45 пишет:

что то не понял 

А чего тут не понимать? Прежде, чем писать программу, просто словами распишите, что именно Вы хотите сделать. Словами, но строго и точно. Тогда и программа легко напишется.

vlad45
Offline
Зарегистрирован: 12.01.2015

я дуб в этом только только начинаю чуть чуть понимать программы и то лажу за помощью в библиотеку

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

vlad45 пишет:

и то лажу за помощью в библиотеку

А кто не лазит в различные справочники и собственные шпаргалки?

Так вот именно потому, что Вы с программами не особо "на ты" - Вам очень важно, сначала написать на бумаге что именно Вы хотите сделать - чётко и тчоно. Потом с программой будет намного легче. Сделайте это.

vlad45
Offline
Зарегистрирован: 12.01.2015

я просто не могу понять что и как нужно написать 

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

Значит, Вы не понимаете, что Вы хотите сделать. написать нужно по пунктам чётко и строго что именно Вы собираетесь делать.