Датчик
- Войдите на сайт для отправки комментариев
Пт, 22/07/2016 - 21:01
Всем привет помощь нужна я новичек в ардуино хочу сделать два ик датчика барьера в дальнейшем будет передоваться по смс какой датчик сработал. Проблема в том что я не могу программы объединить
Я тоже новичок, поэтому по существу не могу ответить. Но зная здешние нравы, могу дать совет. Выкладывайте код, который у Вас есть и уже задавайте конкретные вопросы, что именно не работает и не получается. В противном случае есть очень большая вероятность, что Вас отправят в платные услуги.
Выкладывайте код, который у Вас есть и уже задавайте конкретные вопросы, что именно не работает и не получается.
Совершенноо верно!
В противном случае есть очень большая вероятность, что Вас отправят в платные услуги.
И правильно сделают! :)
вот этот код нужно дублировать в несколько что бы можно было подключить несколько датчиков ик-барьер
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
Это не придирка. В таком виде а) легче читать и б) можно ссылаться на номера строк в обсуждении. Сделайте, пожалуйста.
Хммм... повторю, что я всего лишь новичок, но мне этот код кажется странным. Насколько я знаю библиотека Bounce используется чтобы подавить дребезг кнопок. И как это связано с ИК-датчиками не очень понятно.
Ну и в будущем приводите код в правильный вид, как советуют старшие товарищи.
// 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); } }вот код и мне его нужно сделать в несколько одинаковых сам пробовал совмещать появляются ошибки
Так покажите, что пробовали, какие ошибки. Покажите свой рабочий код и скопипсатите сообщения об ошибках.
сейчас я скинул рабочую программу для кнопки она одна мне нужно сделать несколько дублей этой програмиы
А не проще ли вместо всей лабуды в строках 17-29 написать одну единственную строчку
и заодно выбросить нафиг строки 6 и 7?
я просто не могу понять как делать дубли программ что бы к примеру стоит у меня один ик датчик мне нужно их 3-4 штуки подключить как вот как мне создать программы для этих 3-4 датчиков
в первые вижу что можно такой маленькой строчкой обойтись
сейчас я скинул рабочую программу для кнопки она одна мне нужно сделать несколько дублей этой програмиы
Влад, если нужно - делай.
Ты пришёл за помощью потому, что
сам пробовал совмещать появляются ошибки
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); } }я делал вот так и загарается ошибка
Button:42: error: expected unqualified-id before '{' tokenПрочитай зачем нужны фигурные скобки. Зачем нужна точка с запятой. Любой учебник по СИ. Конкретно здесь ошибка означает отсутствие перед фигурной скобкой какого либо названия либо оператора. Подсказка -подводи курсор к скобке - парная подсветится.
я делал вот так и загарается ошибка
Это точно то скетч и точно то сообщение об ошибке? Я вижу ошибку в строке 14, но никак не в 42. Вы там на кой-то чёрт закрыли фигурную скобку (закончили функцию) и тут же открыли новую. Вот он и не понял Вашего манёвра - что это новая скобка означает. Только это не 42-ая строка. Давайте Вы будете точно выкладывать.
как программа пишет ошибки я так и выкладываю
как программа пишет ошибки я так и выкладываю
Тогда копипастите их полностью, а не кусочно.
Ну, эту то исправили? Есть что-то новенькое?
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); } }Дык, у Вас было две скобки. В строка 13 и 14. А удалили Вы только одну. Какое-то половинчатое решение. Удаляйте и вторую.
Вы совсем не понимаете что там написано?
я понял что одна программа закончилась началась новая и скобка открылась но почему вылазит ошибка
Так вторую скобку убал?
В скетче из поста 15 убери нахрен ОБЕ строки 13 и 14!
да убрал проверил программу все хорошо только образовалась другая проблема собрал схему получается что программа 2 и 13 не работает строка 1и2 а 3и4 работает
на 1и2 строке светодиод постоянно горит
да убрал проверил программу все хорошо только образовалась другая проблема собрал схему получается что программа 2 и 13 не работает строка 1и2 а 3и4 работает
Я этого не понял. Что такое программа 2 и 13? ЧТо за строка 1 и 2. Приведите текущую версию скетча и объясните толком что именно не работает, а что работает.
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); } }ЭТА ПРОГРАММА РАБОТАЕТ ТОЛЬКО КОГДА Я ПОДКЛЮЧАЮ КНОПКУ НА КОНТАКТ 3 А ДИОД НА 12 ПРОГРАММА РАБОТАЕТ ТАК КАК МНЕ НУЖНО А КОГДА Я ПОДКЛЮЧАЮ КНОПКУ НА 2 И ДИОД НА 13 ТО ОН ГОРИТ ПОСТОЯННО НА КНОПКУ НЕ ОТКЛИКАЕТСЯ
ВСЕ Я РАЗОБРАЛСЯ ПОЧЕМУ ОН ГОРЕЛ В 31 СТРОКЕ ОШИБКА БЫЛА СПАСИБО БОЛЬШОЕ ЗА ПОМОЩЬ ЕСЛИ ЧТО ЕЩЕ МОГУ ОБРАТИТЬСЯ
сейчас столкнулся с новой проблемой с блютусом
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); } } }почему то не работает
Строки 33-34 не выполняются никогда, т.к. там стоят два условия, противоречащих друг другу (в строках 30 и 31)
строка 30 31 там идет обозначение двух команд тоесть буква "s" выключает одну программу буква "а" выключает другую программу
струки 33 34 их что можно вообще удалить
Ради Бога простите. В 30 val, а в 31 val1 - а мне что-то показалось, что там одна и та же переменная. Простите.
Влад, а Вы логику своей программы сами понимаете. Я вот расставил её "лесенкой", посмотрите
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?
я просто пытаюсь объединить две программы вот и написал available а что оно проверяет
Ну, вот знаете, я ребёнку всегда советую, "сядь и напиши логику программы словами". Вы можете логику своей программы написать словами? Сделайте это.
01intval;02intLED = 13;03intval1;04intLED1 = 12;с 1-4 строки подключение портов
0506voidsetup()07{08Serial.begin(9600);09pinMode(LED, OUTPUT);10Serial.begin(9600);11pinMode(LED1, OUTPUT);12}13с 8-11 выходи на диоды
14voidloop()15{16if(Serial.available())17if(Serial.available())18{19val =Serial.read();20// При символе "W" включаем светодиод21if(val =='W')с19-21 при нажатии клавиши включается диод
22val1 =Serial.read();23// При символе "W" включаем светодиод24if(val1 =='q')25{с22-25 при нажатии клавиши включается диод
26digitalWrite(LED, HIGH);27digitalWrite(LED1, HIGH);26 27 сигнал высокий включается
28}29// При символе "S" выключаем светодиод30if( val =='S')30 выключение диода
31if( val1 =='a')31 выключение диода
32{33digitalWrite(LED, LOW);34digitalWrite(LED1, LOW);33 34 сигнал низкий
35}36}37}конечно не знаю правильно расписал или нет но я вот так вижу программу
Нет, мне (вернее Вам) не это надо.
Надо написать словами: Типа такого
1. Читаем состяние пина 4
если HIGH то устанавливаем пин 5 в LOW
иначе устанавливает пин 6 в LOW
....
Только писать не по данной программе, а забыв про неё. просто написать что Вам нужно! А потом уже о программе думать.
что то не понял
сейчас я подключаю блютуз
мне нужно так же размножить код я вроде все сделал ошибок не выдает но не работает как только я убираю строки 22-25 программма работает востанавливаю строки 22-25 перестает работать
что то не понял
А чего тут не понимать? Прежде, чем писать программу, просто словами распишите, что именно Вы хотите сделать. Словами, но строго и точно. Тогда и программа легко напишется.
я дуб в этом только только начинаю чуть чуть понимать программы и то лажу за помощью в библиотеку
и то лажу за помощью в библиотеку
А кто не лазит в различные справочники и собственные шпаргалки?
Так вот именно потому, что Вы с программами не особо "на ты" - Вам очень важно, сначала написать на бумаге что именно Вы хотите сделать - чётко и тчоно. Потом с программой будет намного легче. Сделайте это.
я просто не могу понять что и как нужно написать
Значит, Вы не понимаете, что Вы хотите сделать. написать нужно по пунктам чётко и строго что именно Вы собираетесь делать.