| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Код за Arduino + ultrasonic sensor + relay http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=12747 |
Страница 1 от 2 |
| Автор: | importante [ Сря Мар 05, 2014 3:28 pm ] | |||||||||
| Заглавие: | Код за Arduino + ultrasonic sensor + relay | |||||||||
Здравейте!Наскоро си купих Arduino Uno R3, а контролер Atmega328.Подкарах първата схемка, която е за мигане на светодиод, и сега закупих един ултразвуков сензор HC-SR04 и искам да включвам чрез него реле, когато засече обект примерно на 50 см.Някой може ли да ми помогне с кода понеже съм твърде бос да го направя сам Разбрах че на пин trigg се пуска импулс с продължителност 10 мили секунди, след което на пин Echo получавам импулс с продължителност равна на разстоянието измерено от сензора.Аз не искам да измервам разстояние или да включва различни неща в зависимост от разстоянието, само да задейства реленце на от около 50см.Разбрах и че е нужна схема да управлява релето, понеже на ардуино платката силата на тока е около 40mA.От много ровене по търсачките и къде ли не това научих.Ако може някой ако е правил нещо подобно да ми помогне, или да промениме вече някой готов код. Дали с този код няма да стане, ако се промени, но не знам къде в него е обозначена дистанцията
|
||||||||||
| Автор: | ToHu [ Сря Мар 05, 2014 11:06 pm ] |
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay |
Не съм го чел много детйално, но на пръв поглед изглежда да стане .. то който и кода да преработиш ще стане Значи Serial.println("Out of range"); те това не ти трябва. digitalWrite(led,HIGH); // When the Red condition is met, the Green LED should turn off digitalWrite(led2,LOW); те ти на, два пина бутат тъкмо изобщо ето това if (distance >= 200 || distance <= 0){ Serial.println("Out of range"); } else { Serial.print(distance); Serial.println(" cm"); } не ти трябва, делея след него ще определя колко често ще мериш. В кода позлват някакви явно библиотечни функции и нямам идея дали се ползват правилно, има в предвид pulseIn() ... |
|
| Автор: | importante [ Чет Мар 06, 2014 12:52 pm ] |
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay |
Предполагам да е сантиметри, за изписване на екрана е дадено ''sm'' Предполагах че може да е мм или микрометри, щом времето е на милисекунди, а не секунди. Ще пробвам да променя това онова и дано не го изгоря |
|
| Автор: | Cekins [ Чет Мар 06, 2014 1:50 pm ] |
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay |
Е в сантиметри ще е, сметни си сам ако искаш Скоростта на звука е около 343 м/с това прави 0.343 милиметра за микросекунда |
|
| Автор: | importante [ Пет Мар 07, 2014 12:40 pm ] |
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay |
Да в сантиметри е..и стана като промених само от 4 на 40.Обаче имам още няколко въпроса. 1. Ако сбъркам нещо и изгоря чипа, после трябва ли да е пак atmega328, или мога да сложа и atmega8 поради по-лесното и намиране и по ниска цена? 2. После трябва да кача и bootloader, това как да го направя и от къде да го заредя? Прочетох (ако не съм се заблудил, понеже превеждам с преводачката от английски), че разликата между atmega8 и 16 е в честотата, съответно 8Mhz i 16Mhz, където на по-висока честота работи и с по-ниски напрежения, и разхода на енергия е по-малък, съответно увеличаваме живота на батериите.Но аз все пак да попитам, защото едно чета, друго може да разбера, а съм нов в областта. |
|
| Автор: | importante [ Пон Мар 10, 2014 5:59 pm ] |
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay |
http://www.youtube.com/watch?v=2NTSBa9e ... e=youtu.be , ето клипче как работи при мен сензора! Сега остава да науча как да сложа повече сензори.Мога ли няколко такива кода да заредя един след друг като програма и да ги налея в контролера?В смисъл да определя пиновете общо още в началото, после общо да определя и кои са входове и изходи.Общо взето всички кодове които намирам изпозват едни и същи изводи на чипа.Нямам представа когато сложа още един сензор, кои от пиновете да задам към него и кои пинове да управляват реле. |
|
| Автор: | ToHu [ Пон Мар 10, 2014 6:23 pm ] |
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay |
Ами принципно можеш ... но лично аз не бих го направил така, времената са достатъчно големи за да можеш да стартираш всички едновременно и след това да ги получващ на прекъсване, а дори и на полиране. Една идея, не обработвай веднага ако не гониш малко време за реакция, идеята ми е че можеш да пингнеш всички датчици, да изчакаш да получиш ехо от всички или да ти мене някакъв таймоут, и чак след това да обработиш. Въпреки че ако просто превключваш изход няма голям смисъл, самото превключване отнема пренебрежимо малко време. |
|
| Автор: | importante [ Вто Мар 18, 2014 2:32 am ] | |||||||||
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay | |||||||||
Здравейте отново! Рових се из нета, четох книги, четях мнения и общо взето не съм спирал да мисля за това, но накрая написах един код, сигурен съм че няма да е функциониращ от раз, но вярвам че ще ми помогнете да си намеря грешките и да го ''оживя'' Идеята е 3 ултразвукови сензора да управляват по двойка светодиоди.Имаме 3 сензора и общо 6 светодиода.Два от сензорите палят съответната за тях двойка светодиоди при засечен обект на разстояние от 10 см.Другият сензор от своя страна пали останалите 2 светодиода при засечен обект на разстояние от 20 до 50 см. Идеята ми е сензора да гаси светодиодите при по малко от 20 см, но ако се отдалечи обекта над 50 см, пак да ги загаси. Ето и кода:
|
||||||||||
| Автор: | Реконструктор [ Сря Мар 19, 2014 1:53 am ] |
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay |
Опитай се да не ползваш плаваща аритметика. |
|
| Автор: | importante [ Сря Мар 19, 2014 10:21 am ] | |||||||||
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay | |||||||||
Пуснах кода на Arduino програмката, и изчиствах грешки според програмата, но накрая ми даде ''error: expected `}' at end of input '' на delay(500); } Нали си има къдрава скобка на края, не знам какво ми иска?
|
||||||||||
| Автор: | stefan63 [ Сря Мар 19, 2014 10:41 am ] |
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay |
void loop() { //L1 long duration, distance; digitalWrite(trigPin1, LOW); delayMicroseconds(2); digitalWrite(trigPin1, HIGH); delayMicroseconds(10); digitalWrite(trigPin1, LOW); duration = pulseIn(echoPin1, HIGH); distance = (duration/2) / 29.1; if (distance < 10) { //L2 digitalWrite(led1,HIGH); digitalWrite(led2,HIGH); } //R1 else { //L3 digitalWrite(led1,LOW); digitalWrite(led2,LOW); }//R2 {//L4 long duration, distance; digitalWrite(trigPin2, LOW); delayMicroseconds(2); digitalWrite(trigPin2, HIGH); delayMicroseconds(10); digitalWrite(trigPin2, LOW); duration = pulseIn(echoPin2, HIGH); distance = (duration/2) / 29.1; if (distance < 10) {//L5 digitalWrite(led3,HIGH); digitalWrite(led4,HIGH); }//R3 else {//L6 digitalWrite(led3,LOW); digitalWrite(led4,LOW); } //R4 {//L7 long duration, distance; digitalWrite(trigPin3, LOW); delayMicroseconds(2); digitalWrite(trigPin3, HIGH); delayMicroseconds(10); digitalWrite(trigPin3, LOW); duration = pulseIn(echoPin3, HIGH); distance = (duration/2) / 29.1; if (distance > 20) {//L8 digitalWrite(led5,HIGH); digitalWrite(led6,HIGH); }//R5 else if (distance >= 20distance < 50) {//L9 digitalWrite(led5,LOW); digitalWrite(led6,LOW); }//R6 delay(500); }//R7 Броят на левите и броят на десните скоби трябва да е равен. Липсват ти и ";" предполагам . |
|
| Автор: | importante [ Сря Мар 19, 2014 9:00 pm ] | |||||||||||||||||||||||||||
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay | |||||||||||||||||||||||||||
Изчетох книжката в сайта на Ардуйно, на български която е няколко пъти! http://playground.arduino.cc/Bulgarian/Rykovodstva#.UynY56h_uwU На страница 20 е обяснено за if, else функцията, конкретно:
Според моите нужди стана така:
По този начин се надявам да стане.При засечен обект на 40 см да включи светодиодите, но обекта приближи ли до и под 20 см да ги изключи.Съответно това ще са релета с подходящата електроника, но кода започна със светодиоди и така си и остана.Няма значение. Схема, по която мога да включа реле примерно това: ![]() Все още не мога да пробвам дали реално ще работи кода, понеже частите още не са ми пристигнали, а и явно ще се забавят. Щом пристигнат ще го пробвам и дано стане.Надявам се да се получи.Благодаря много на всички за помощта! Ето сега как ми е кода:
|
||||||||||||||||||||||||||||
| Автор: | stefan63 [ Сря Мар 19, 2014 9:25 pm ] |
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay |
Чел си ,но май не си разбрал.Потърси нещо на български за Си и прочети "съставен оператор", "compound statement" или както там се казва. В кода ти има излишни отварящи и затварящи скоби - не пречат. Научи се да ги ползваш в IF/ELSE. void loop() { long duration, distance; digitalWrite(trigPin1, LOW); delayMicroseconds(2); digitalWrite(trigPin1, HIGH); delayMicroseconds(10); digitalWrite(trigPin1, LOW); duration = pulseIn(echoPin1, HIGH); distance = (duration/2) / 29.1; if (distance < 10) { digitalWrite(led1,HIGH);digitalWrite(led2,HIGH);} else {digitalWrite(led1,LOW);digitalWrite(led2,LOW);} //-------------------------- { long duration, distance; //тук не дава ли грешка "ВЕЧЕ Е ДЕКЛАРИРАНО!!!" digitalWrite(trigPin2, LOW); delayMicroseconds(2); digitalWrite(trigPin2, HIGH); delayMicroseconds(10); digitalWrite(trigPin2, LOW); duration = pulseIn(echoPin2, HIGH); distance = (duration/2) / 29.1; if (distance < 10) { digitalWrite(led3,HIGH); digitalWrite(led4,HIGH); } else digitalWrite(led3,LOW); digitalWrite(led4,LOW); // ???? винаги светва ????? } //----------------- { long duration, distance; //тук не дава ли грешка "ВЕЧЕ Е ДЕКЛАРИРАНО!!!" digitalWrite(trigPin3, LOW); delayMicroseconds(2); digitalWrite(trigPin3, HIGH); delayMicroseconds(10); digitalWrite(trigPin3, LOW); duration = pulseIn(echoPin3, HIGH); distance = (duration/2) / 29.1; if (distance < 40 ) { digitalWrite(led5,HIGH); digitalWrite(led6,HIGH); } else if (distance < 20 ) digitalWrite(led5,LOW); digitalWrite(led6,LOW); //????винаги в нула???? } //--------------------- delay(500); } |
|
| Автор: | importante [ Сря Мар 19, 2014 10:13 pm ] |
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay |
Не ми дава че вече е декларирано, а ми дава грешка когато го махна.Не е винаги нула, понеже не си погледнал кода ми в края и не винаги светва, при твоя код е така.. Знам, че кода може да стане много по функционален и затова публикувам всяка промяна. |
|
| Автор: | stefan63 [ Сря Мар 19, 2014 11:10 pm ] |
| Заглавие: | Re: Код за Arduino + ultrasonic sensor + relay |
Мисля , че се сещам защо ти иска да декларираш повторно, ама мене Си ми е чужд. Тука няма мой код - все си е твоят, само съм изтрил и добавил някои шпации и синволи за нов ред. |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|