как сделать чтобы все работало.
- Войдите на сайт для отправки комментариев
Втр, 16/04/2013 - 18:13
есть три скетча, как склеить их вместе чтобы всё работало, только начинаю, но подобного не нашел
#include <dht11.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> /*-----( Declare objects )-----*/ LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 dht11 DHT11; /*-----( Declare Constants, Pin Numbers )-----*/ #define DHT11PIN 2 int i =0; int valueSensor = LOW; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); pinMode(3,INPUT); Serial.begin(9600); //(Remove all 'Serial' commands if not needed) lcd.init(); // initialize the lcd lcd.backlight(); // Print a message to the LCD. //lcd.setCursor(0, 1); lcd.print("Temp Vlagnost"); } void loop() { int chk = DHT11.read(DHT11PIN); Serial.print("Read sensor: "); switch (chk) { case 0: Serial.println("OK"); break; case -1: Serial.println("Checksum error"); break; case -2: Serial.println("Time out error"); break; default: Serial.println("Unknown error"); break; } lcd.setCursor(0, 1); lcd.print("C="); lcd.print((float)DHT11.temperature, 0); Serial.print("Temperature (oC): "); Serial.println((float)DHT11.temperature, 2); lcd.print(" F="); lcd.print(Fahrenheit(DHT11.temperature), 0); Serial.print("Temperature (oF): "); Serial.println(Fahrenheit(DHT11.temperature), 2); lcd.print(" H="); lcd.print((float)DHT11.humidity, 0); lcd.print("%"); Serial.print("Humidity (%): "); Serial.println((float)DHT11.humidity, 2); Serial.print("Temperature (K): "); Serial.println(Kelvin(DHT11.temperature), 2); Serial.print("Dew Point (oC): "); Serial.println(dewPoint(DHT11.temperature, DHT11.humidity)); Serial.print("Dew PointFast (oC): "); Serial.println(dewPointFast(DHT11.temperature, DHT11.humidity)); delay(2000); }/* --(end main loop )-- */ /*-----( Declare User-written Functions )-----*/ // //Celsius to Fahrenheit conversion double Fahrenheit(double celsius) { return 1.8 * celsius + 32; } //Celsius to Kelvin conversion double Kelvin(double celsius) { return celsius + 273.15; } // dewPoint function NOAA // reference: http://wahiduddin.net/calc/density_algorithms.htm double dewPoint(double celsius, double humidity) { double A0= 373.15/(273.15 + celsius); double SUM = -7.90298 * (A0-1); SUM += 5.02808 * log10(A0); SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ; SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ; SUM += log10(1013.246); double VP = pow(10, SUM-3) * humidity; double T = log(VP/0.61078); // temp var return (241.88 * T) / (17.558-T); } // delta max = 0.6544 wrt dewPoint() // 5x faster than dewPoint() // reference: http://en.wikipedia.org/wiki/Dew_point double dewPointFast(double celsius, double humidity) { double a = 17.271; double b = 237.7; double temp = (a * celsius) / (b + celsius) + log(humidity/100); double Td = (b * temp) / (a - temp); return Td; int valueSensor = digitalRead(3); if (valueSensor==HIGH){ Serial.println(i); digitalWrite(13, HIGH); i=i+1; }else{ digitalWrite(13, LOW); i = 0; } delay(1000); }
Мы за вас рады что у вас 3 скейтча, только вот нам видно только один. Понятие "что бы все работало" ну ооочень растяжимое. И здесь в разделе Программирование есть практически все для того "что бы все работало".
может я не правильно выразился но каким образом разделять команды в скетче чтоб всё работало ,
в этом скетче работает только один это дисплей с температурой, а датчик движения нет ,вот я и хочу спросить как разделять чтоб ардуина все поняла что ей делать.
cudla1973, http://button.dekel.ru/ (шутка) :)
cudla1973, http://button.dekel.ru/ (шутка) :)
Какие вы все добрые знающие ,я же не прошу исправить код подскажите что использовать.
Вы понимаете, что никому не ясно что вы хотите, какой еще датчик движения... к сожалению, с таким подходом вам только экстрасенсы с ТНТ могут помочь. Начните с мигания светодиодом просмотрите все ссылки из Программирование и т.д. и т.п. может тогда у вас получится сформулировать вопрос.
Вот попробуйте сами ответить на вопрос, который вы пытаетесь задать - "У меня не едет машина, как сделать что бы ехала?" Какой по вашему должен быть ответ?
Не, надо кнопку что бы все заработало, а не что бы все хорошо.
а вот так ,есть программа работает и есть другая программа которая тоже работает как совместить их в один код или срастить
где про это почитать ?
а вот так ,есть программа работает и есть другая программа которая тоже работает как совместить их в один код или срастить
где про это почитать ?
Здесь - http://arduino.ru/Reference
Я вам еще раз повторяю - мы за вас рады что у вас есть две рабочие программы. Но во-первых нам так и не ясно в чем ваша проблема... возьмите и соедините. А во-вторых нам ваших программ не видно.
Я вам еще раз повторяю - мы за вас рады что у вас есть две рабочие программы. Но во-первых нам так и не ясно в чем ваша проблема... возьмите и соедините. А во-вторых нам ваших программ не видно.
2maksim: У меня закралось подозрение что вас просто тролят. Уж как-то слишком анекдотично "хочу что-бы работало", да еще повторами.
Это аксиома - азы - соглашение о терминах. Для того, что бы объяснить свое затруднение специалистам необходимо стать самому специалистом. Что значит стать самому специалистом. Это значит необходимо изучить суть специальности. Или иметь в самом себе ясное представление о цели, средстве достижения и способах.
Допустим, приезжает в автосервис чел и заявляет: У меня есть три тачки. У одной работает печка, у другой исправна левая дверца, а у третей заводится двигатель, как собрать это в кучу и вжик - поехал? Что ему скажут в сервисе? Попробуйте синтезировать несколько ответов, это не сложно! :)
Когда смотришь как Джереми Блюм вытворяет "всякие крутые штучки" моментально приходит "озарение - блин, да это же как ясный день! Чего тут трудного?!" И верно, ничего. И повторить тоже не трудно. Только вот как соединить? Допустим, звоним Блюму. "Хай, бой! Май трабл ту скетч жойн тугеда". Блюм, парень занятой... И он пошлет... изучать азы, соглашения о терминах... а может назвать свой тариф. Это будет спец серия на DVD. :)
Но! Я знаю как без этого! Причем, быстро, профессионально! Есть раздел форума - Ищу исполнителя. Создаем тему. Описываем красочно желания. В конце спрашиваем - Скока? Ответ буду ждать на - указать где. Это самый короткий и продуктивный вариант.
Иначе... иначе см. первый абзац.
cudla1973, http://button.dekel.ru/ (шутка) :)
:0 :0!!!
Я хочу ЭТО в свой телефон! Скока?!
Собралась стайка ........ и хохочут, сами то разбираетесь ? или сидите здесь да новичков хаите, из всей этой галимотьи один одекватный ответ хотел спасибо сказать не знаю как . а в коде все понятно что там подключено только вторая программа не работает. Отвечать не надо, прикалывайтесь в другом месте.
Собралась стайка ........ и хохочут,
Да, это наша поляна. И мы здесь иногда чудим - когда повод появляется
Задайте себе труд почитать немного посты этого форума и вы увидите, что не только хаянием здесь занимаются. Когда со стороны новичков, кроме пускания пузырей обиды, имеется что-то конструктивное, то и ответы, как правило, тоже конструктивные.
Вам тут уже в ...надцатый раз говорят, что в понятие "не работает" можно вложить очень разные смыслы. Пока вы сами не поймете, чего вы хотите и не скажете об этом внятно-конкретно, в ответ будете получать заряды идЫётских шуточек. Ну что уж тут поделать - ну козлы мы, козлы...
Это, вообще-то наша поляна и мы на ней пасемся. Поэтому правильнее было бы с вашей стороны заявить:
"получу ответ в другом месте".
А по существу.
У вас есть три программы. В этих трех программах выполняемую ими полезную работу можно выделить в отдельные функции. После того, как сделаете это, скопируйте полученные функции в новую программу, в функции loop() которой напишите:
И все - есть 10% уверенности, что заработает.
А не заработает - расскажите о том, что конкретно не работает. Только без пузырей.
Хотя, конечно же заработает. Но не так, как вы ожидали. А как вы ожидали, мы до сих пор и не знаем...
дайте пример чтоб в одном скетче три разных цикла выполнялись, а там я сам разберусь со своим.
Это может быть и так:
или так:
наконец, так:
или совсем просто:
Это может быть любая комбинация из вышеприведенных вариантов, а также еще тьма-тьмущая разных способов.
Вы опять ведете себя как тот перец из бородатого анекдота:
"Уважаемые товарищи ученые, у меня в подвале стук. Объясните, пожалуйста, причину этого стука"
Можете продолжать обижаться, но никто вам о причинах стука в вашем подвале не скажет - до тех пор, пока вы не сможете внятно и конкретно сказать, чего вы добиваетесь.
дайте пример чтоб в одном скетче три разных цикла выполнялись, а там я сам разберусь со своим.
Послушайте, вам уже несколько разных человек, на разные лады сказали одно и тоже - вас не понимают. Не понимают что вы хотите. Возможно вам кажется что "вы дали все что нужно" и все видно из вашего стартового поста. Но... это не так. Воспримите как факт - это не понятно людям. Возможно они тупые, возможно наоборот они видят кучу разных путей которые вам не видны и поэтому "для вас все однозначно сказано", может еще что-то - не важно. Важно что не понятно. А значит уточнение "в пару слов" - тут дело не исправит. А пока не поймут "что вы хотите" - никто вам не поможет. И кроме зубоскальства - ничего не будет. И зубоскальство не по поводу "вы не знаете как напрограмить", а по поводу "неспособности выразить мысль".
Поробуйте зайти с другого конца. Предствте что у вас вообще нет никаких трех скетчей (которые вы упорно не показываете и ТУПО игнорируете указание на это). Попробуйте просто описать какое устройство вы хотите собрать и что оно должно делать.
Можете попробовать объяснить соседу и попросить его написать "как он понял что вы хотели". Может стиль другого/постороннего человека будет более понятным....
А пока, ваши посты больше похоже на троллинг. На то что вы сознательно наводите "тень на плетень". На то что вам никакие скетчи вообще не нужны, и вы просто развлекаетесь тем как все пытаются угадать что вам нужно. Вообщем "включили дурачка".
так вот первый скетч работает и всё на второй скетч ардуино наплевать потому что я неправильно делаю я это уже понял.
наверно вестаки так
И самом первом посте я не увидел вызова функции движения.
Так ещё не пробовал ,попробую .Вот я и хотел спросить как ардуино понимает что процес один закончен начинается второй или оно по очереди выполняет в зависимости от написания 1 потом 2 потом 3 потом опять все сначало и так до бесконечности.
Да поочереди.
Для вызова внеочередных процессов есть прерывания.
оно по очереди выполняет в зависимости от написания 1 потом 2 потом 3 потом опять все сначало и так до бесконечности.
именно так
PS конечно не до бесконечности.... (солнце когда нибудь погаснет)))) шутка
наверно вестаки так
И самом первом посте я не увидел вызова функции движения.
вот получилось
а ты назначил ledPin на выход?
Я вижу что он 12
а на вывод только пин 13
pinMode(13, OUTPUT);
на будущее что бы не путатся, определи пины
ledPinTemperature=12;
и назначай
pinMode(ledPinTemperature, OUTPUT);
я их местами поменял 13 же встроенный а 12 нет вот и когда отлаживал датчик движения я и назначил 13
на датчик движения чтоб видно было рботает или нет ,диоды это для отладки вместо них будет реле точнее блок реле на 12 вольт .
теперь вопрос такой про датчик ds18d20 что здесь нужно писать
вместо dht11,
или опять вопрос не понятен?
просто так поменять не получится, все переменные и библиотеку от dht надо убирать и добавлять чтото прочитав вот эту статью.
ну или сначало попробывать запустить ds18b20 отдельно, а потом совместить ваши скетчи.
ps а на форуме действительно бывает отсылают в гугль, вроде спрашиваешь простые вещи а тебе "вот пришел новичек, иди гугль кури... ну или в таком духе..." мне тоже не понятны некоторые вещи... постепенно доходит... эмоции тут не помогут... задавайте вопросы по другому... хотя на многие вопросы ответы на форуме уже есть... есть еще форум на амперке, там спросите, возможно там другая манера общения и вам она понравится... удачи
Библиотеку я убрал добавил другую датчик работает все хорошо вот только как заставить его включать светодиод. а за статью спасибо ,буду разбираться и кажется понял где собака зарыта.Как все соберу до кучи, выложу здесь может кому пригодится для частного дома с паровым отоплением ,конечно с описанием и подключением что куда .
ну у вас появиласть новая переменная которая и показывает температуру с ds1820, вот вы ее и сравнивайте с +25С и зажигайте светодиод...
Так ещё не пробовал ,попробую .Вот я и хотел спросить как ардуино понимает что процес один закончен начинается второй или оно по очереди выполняет в зависимости от написания 1 потом 2 потом 3 потом опять все сначало и так до бесконечности.
У ардуины, в отличие от большого компа, есть всего один процесс/поток исполнения. Никаких многозадачностей, никаких "одновременностей". Скетч - набор инструкций который выполняется последовательно. Только пошаговое выполнение интсрукций. Когда дошли до конца (конца фунции loop()) - опять начиает выполнять ее с начала.
Есть еще, как говорили выше, "прерывания". Это значит по наступлению какой-нибудь события (сработки таймера, нужно уровня на пине и т.п.) - текущие выполнение скетчка останавливает. запоминается состояни. и управление передается в специальную функцию-обработчик прерывания. Но и в этом случае - одновременности нет. Выполняется обработчик - основной скетч стоит. Закончил - все продолжается с того места где прервалось.
Представте себе что вы однорукий повар на кухне. И вам нужно одновременно и хлеб резать и суп мешать. А рука - одна. Значит мы должны либо "порезать хлеб, а потом мешать суп", либо "двинули ножом, крутнули ложку, двинули ножом, крутнули ложку, двинули ножом...". Если мы руку с ножа на ложку переносим быстро - возникает иллюзия одновременности. Если в этот момент зазвенел будильник (сработал таймер), бросаем все и выключаем духову (выполнили функцию обработки прерывания), после чего продолжили "двинули, крутнули".
Так что в 8-битных мироконтроллерах (ардуине) возможно только "псевдо-одновременность". Если у нас есть несколько задач которые нужно "одновременно" - дробим их на маленькие кусочки, и выполняет по кусочку от каждой задачи на каждом проходе loop(). Следя за тем что-бы ни в одном кусочке не застревать надолго (не используем delay(), длинные/бесконечные циклы и т.п.) - иначе "одновременность" разрушится.