Нужна помощь с HC-SR04 и Attiny13
- Войдите на сайт для отправки комментариев
Втр, 26/08/2014 - 08:47
#define T 1 #define E 0 #define led 2 void setup() { pinMode(T, OUTPUT); pinMode(E, INPUT); digitalWrite(E, HIGH); pinMode(led, OUTPUT); } void loop() { if (Ultrasonic(T, E) < 40); { digitalWrite(led, HIGH); delay (100000); } delay(50); } int Ultrasonic(byte Trig_pin, byte Echo_pin) { digitalWrite(Trig_pin, HIGH); delayMicroseconds(10); digitalWrite(Trig_pin, LOW); return pulseIn(Echo_pin, HIGH, 20000)/29.0/2; }
Помогите уместить программу в тиньку
У меня на столе платка готовая прикручена.
А с такой платкой есть шансы? или у вас библиотеки не стандартные?
а она здесь при чем? разговор про тиньку шел а не рациональность
хотя в данном конкретном случае и тиньки достаточно если ничего больше не будет делать или совсем мало чего
а точно ли "return pulseIn(Echo_pin, HIGH, 20000)/58;" равнозначно "return pulseIn(Echo_pin, HIGH, 20000)/29.0/2;"? У меня именно из-за 29.0 резко увеличивался размер скетча
да хз. вы так написали что фиг разберешь, скобок нет. поэтому сначала делить на 29 потом на 2. получаем 58
так это не я писал :) это maksim в теме "Автоматическая подсветка лестницы и ММ5450"
ссылка http://www.arduino.ru/forum/programmirovanie/avtomaticheskaya-podsvetka-lestnitsy-i-mm5450
пост №4
так там памяти было достаточно
это то понятно что памяти достаточно... меня эта точка в чмсле 29 очень смущает... и самое обидное что не пойму её роль
скорее всего чтобы получить максимальную точность, в смысле количество знаков. 25,5 точнее чем 26 например
я так предполагаю
Ясно. С точностью более менее понятно. Новая проблема, написал программку которая по нажатию кнопки пишет значение расстояния в память. Но в памитя почему то одни нули пишутся. Подскажите что не так сделал?
а вы проверяли в ядре для тиньки прописана работа с еепром? есть ли поддержка
хотя сам и отвечу вот что поддерживает ядро
конечно проверил. после загрузки скетча в памяти одни FF после нажатия кнопок появляются нули
интересно. в описании к ядру эта функция не прописана
но ведь содержимое памяти меняется :)
можете сами почитать. функция оказывается работает, но зависима от того кака либа использована если я правильно понял
http://forum.arduino.cc/index.php?PHPSESSID=78gh79m79tmomqi38v4fug4r72&t...
кстати где нашел в ядре запись о еепром?
Изначально то я писал скетч на зажигание светодиода при определенном расстоянии и меня смутило что светодиод ну нивкакую не хотел зажигаться. Дай думаю посмотрю а какие значения выдает датчик, а он оказывается вон что творит. А есть ли способ передать данные в копм через USBISP программатор?
через программатор нет
https://arduino.ru/forum/programmirovanie/attiny13a-101-primenenie (пост 1) тут написано в виде примера использование eeprom
его и используйте, все равно надо узнать что выдает датчик. самое простое тут какой нибудь дисплей подключать со своим контроллером, а то тяжело будет
через программатор нет
Как это нет ??
если только еепром считывать. не совсем удобно, но пока похоже единственный вариант
Блин... ну все перепробовал... на Atmege8 скетч прекрасно работает, сохраняет в память показания расстояния, на тиньке только нули :( Люди добрые, кто работал с данными датчиками на тиньке, подскажите что я деляю не так?
что то мне подсказывает, проблема в этой строчке
как то тинька некооректно ее отрабатывает
а мега корректно?
мега корректно
значит в коде дело
смотрите на какой частоте работает тинька и что прописано в боардс
тинька работает на частоте 1 Мгц, а вот как это связать с кодом пока не знаю...
в board.txt что написано? какая частота?
мега на какой частоте работает?
у тиньки
попробуйте тиньку без делителя запустить
фьюзы 7A FF
и изменить эту строку
attiny13def.build.f_cpu=9600000L
я просто выбрал в списке частоту тиньки 9,6 Мгц
не помогло
повесил светодиод на Echo датчика, свтодиод мигает с яркостью и частотой в зависимости от расстояния объекта до датчика, значит датчик рабочий. не знаю уже где копать
тогда наверно тупо не хвататет оперативки. меняйте типы данных на минимально возможные при которых будет работать int--byte--boolean
digitalwrite меняйте на прямое управление портом
переменные поменял на byte. в скетче оставил только необходимое. размер 750 байт из 1024. реакции нету (
там всего 64 байта оперативки
а у вас флаг стоит int
управляйте портами напрямую
вот что получилось, но все равно не работает. Может где ошибку сделал?
уберите про еепром пока и проверяйте
и посмотрите что делает pulsein
а вообще оно того стоит? цена тиньки около 17 рублей за шт, меги 8 около 25. стоит ли так извращаться?
http://ru.aliexpress.com/item/Free-Shipping-10PCS-TINY13A-ATTINY13A-ATTINY13A-SSU-SOP8-IC/878218636.html
http://ru.aliexpress.com/item/ATMEGA8A-AU-IC-Atmel-MCU-TQFP44-AVR-New-Original-100-Long-term-Supply/835672918.html
к тому же можно нормально программировать uart и через терминал узнать что делается в программе
памяти пинов больше, а размер совсем немного больше
да вот я уже тоже склоняюь к такому же выводу.. задолбался с этой тинькой ) но все равно спасибо огромное за помощь
я тоже в свое время намучался. но когда совпадают пины программатора и шима, это очень неудобно
а когда памяти нехватает или пинов
для мелких задач пойдет
единственно плохо, мегу ждать надо когда придет ( в розницу за 100 и выше руб. неохоа покупать) а тинька уже есть в наличии....
еепром убери и может хватит
еепром убрал, все равно глухо.
Попробовал написать аналогичную программку на Bascomе, данные с датчика пошли но искаженные, пытаюсь выситать коэффициент на который нужно умножать длительность импульса с датчика что бы получить нужные см.
Спасибо огромное! Помогло :)