Форум ModelldepO  

Вернуться   Форум ModelldepO > Моделизм > Электрика и DCC > Arduino
Ответ
 
Опции темы Опции просмотра
Старый 28.08.2016, 18:48   #1
xu56857
Московский модуль
 
Аватар для xu56857
 
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 941
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,980
Поблагодарили 3,306 раз(а) в 637 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (3321)
По умолчанию масштабное измерение скорости

Собрал второй вариант измерялки скорости ПС , про первый вариант можно посмотреть тут:
http://forum.modelldepo.ru/showthrea...031#post278031
Во втором варианте использовал компактную PRO MINI и LCD дисплей, что позволило выдавать больше информации, также была доработана программка, питание через стабилизатор с рельс или от внешнего источника


Arduino код:
//спидометр

#include <LiquidCrystal.h>  // Лобавляем  библиотеку LCD
LiquidCrystal lcd(12115678); // (RS, E, DB4, DB5, DB6, DB7)
unsigned long time;//время срабатывания первого датчика
unsigned long time1;//время срабатывания второго датчика
 
long T;// T=(time1-time)/1000  из милисекунд в секунды
 
float T1;
 
float S1;
 
float S;
void setup()
{
  
lcd.begin(162); 
  
pinMode(3INPUT);//срабатывание датчика слева
  
pinMode(2INPUT);//срабатывание датчика справа
}

void loop()

{

 { if ((
digitalRead(2) == HIGH)  && (digitalRead(3) == HIGH)) 
  
 { 
lcd.setCursor(00); lcd.print("     READY      ");
 
 { 

  if (
digitalRead(3) == LOW)  // условие на опрос левого датчика 3-й порт

  
time millis();  lcd.setCursor(10);   lcd.print("    GO LEFT   ");
     while (
digitalRead(2) == HIGH)// счет времени пока не сработал левый датчик
    
{ }  time1 millis();
     
T=(time1-time); T1=T*0.001S=31.32/T1;
    
    
lcd.clear();lcd.setCursor(10);lcd.print(S);lcd.print(" KM/H");
    
lcd.setCursor(21); lcd.print(T1);lcd.print(" sek"); delay(3000);lcd.clear();}

  else if (
digitalRead(2) == LOW)  // условие на опрос правого датчика 2-й порт
   
    
time millis();  lcd.setCursor(10);   lcd.print("   GO RIGHT ");
    
      while (
digitalRead(3) == HIGH)// счет времени пока не сработал правый датчик
    
{ }  time1 millis();
   
T=(time1-time);  T1=T*0.001S=31.32/T1;
    
lcd.clear();lcd.setCursor(10);lcd.print(S);lcd.print(" KM/H");
    
lcd.setCursor(21); lcd.print(T1);lcd.print(" sek"); delay(3000);lcd.clear();}
 }
 }
else { 
lcd.setCursor(00); lcd.print("     xxxxx     ");delay(1000); }}

Миниатюры:
Нажмите на изображение для увеличения
Название: IMG_1721.jpg
Просмотров: 1480
Размер:	186.2 Кб
ID:	129865
xu56857 вне форума  
Вверх
6 пользователя(ей) сказали cпасибо:
Старый 28.08.2016, 19:15   #2
TTenkov
Пользователь
 
Аватар для TTenkov
 
Регистрация: 28.08.2010
Адрес: Челябинск
Сообщений: 626
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 692
Поблагодарили 813 раз(а) в 346 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: - просто великолепная личность (818)
По умолчанию

По Вашему первому варианту сделал и себе аналогичное устройство (благо, оставались свободные пины на Ардуине, подключенной к макету). Единственное отличие - спрятал датчики в будущие тоннели. И расстояние между ними 120 см, что больше, чем длина самого длинного состава.
TTenkov вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 28.08.2016, 19:22   #3
мистер И.К.С.
Ĩ.Ĉ.Š.ҧрѻҫҭҩ мӥҫҭҿӄѣӤ.Ҟ.Ҫ
 
Аватар для мистер И.К.С.
 
Регистрация: 10.07.2006
Адрес: 13 верста У.Г.Ж.Д. HOe.N.Z? . . G.Oe.HO!
Сообщений: 2,416
Сказал(а) 'не согласен(а)'!: 466
Сказали 'не согласен'! 136 раз(а) в 123 сообщениях
Сказал(а) спасибо: 3,320
Поблагодарили 7,250 раз(а) в 2,856 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (7879)
По умолчанию

Не хватает электросхемы, крупноблочной, что куда подключено.
Какое расстояние между датчиками в миллиметрах? Также желательно указать точки по которым измерять это расстояние. Влияет ли ориентация датчиков (вертикально/горизонтально, тк там два диода) на точность измерения? НЯП цифра 31.32 это и есть коэффициент расстояние из мм в секунды?
Лучше ввести в скетче этот коэффициент (ну или хотя бы формулу по которой можно вычислить эту цифру), если вдруг последователи надумают изменить положение датчиков.
float S1 - не используется нигде.
мистер И.К.С. вне форума  
Вверх
Старый 28.08.2016, 19:55   #4
xu56857
Московский модуль
 
Аватар для xu56857
 
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 941
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,980
Поблагодарили 3,306 раз(а) в 637 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (3321)
По умолчанию

Цитата:
Сообщение от мистер И.К.С. Посмотреть сообщение
цифра 31.32 это и есть коэффициент
как то так : м/с в км/ч (3,6) х 87 масштаб х 0,1 м ( расстояние между датчиками 100мм ) получаем 31,32

Цитата:
Сообщение от мистер И.К.С. Посмотреть сообщение
Влияет ли ориентация датчиков
практически не влияет, датчик срабатывает градусов за 10-15 ( 5-8 мм в сторону), настроены на минимальный порог срабатывания. S1 остался от промежуточных вычислений ))
xu56857 вне форума  
Вверх
Старый 29.08.2016, 16:47   #5
BNSF9399
Местный
 
Аватар для BNSF9399
 
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (2791)
По умолчанию

Цитата:
Сообщение от мистер И.К.С. Посмотреть сообщение
Не хватает электросхемы, крупноблочной, что куда подключено.
Присоединюсь к пожеланию. Комплектующие уже заказал Хочется нормальную измерялку по разумной цене.
Сейчас секундомером пользуюсь.

Нашел в проге "фичу" она по датчику освещенности может запускать и останавливать таймер. Но засечки через круг получаются.
BNSF9399 вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 29.08.2016, 18:00   #6
xu56857
Московский модуль
 
Аватар для xu56857
 
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 941
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,980
Поблагодарили 3,306 раз(а) в 637 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (3321)
По умолчанию

Схемы как таковой нет, паял на "весу" )), спросил у яндекса как подключить дисплей 1602 к ардуине : http://zelectro.cc/LCD1602
и два ИК датчика FC-51, с ними все просто "-", "+" и выходной сигнал.
xu56857 вне форума  
Вверх
Старый 29.08.2016, 23:59   #7
BNSF9399
Местный
 
Аватар для BNSF9399
 
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (2791)
По умолчанию

Цитата:
Сообщение от xu56857 Посмотреть сообщение
дисплей 1602
ага, значит я правильно его вычислил по картинке
Я вообще впервые с ардуиной решил связаться, больно уж заманчиво за 350 рублей сделать спидометр,если будут вопросы можно будет обращаться?
BNSF9399 вне форума  
Вверх
Старый 30.08.2016, 17:00   #8
xu56857
Московский модуль
 
Аватар для xu56857
 
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 941
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,980
Поблагодарили 3,306 раз(а) в 637 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (3321)
По умолчанию

Цитата:
Сообщение от BNSF9399 Посмотреть сообщение
если будут вопросы
да я тоже методом научного тыка ардуину изучаю ))
xu56857 вне форума  
Вверх
Старый 30.08.2016, 23:19   #9
BNSF9399
Местный
 
Аватар для BNSF9399
 
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (2791)
По умолчанию

Цитата:
Сообщение от xu56857 Посмотреть сообщение
да я тоже методом научного тыка ардуину изучаю ))
ну я конкретно по данному устройству Хотя, вчера полистал по вашей ссылки сайт - вроде не так страшен черт...
Попробую сделать еще мультимасштабный и км/ч-mph вариант. Теперь главное, чтобы китайские товарищи побыстрее заказ отправили, да ПР оперативно сработала, а то уже руки чешутся
BNSF9399 вне форума  
Вверх
Старый 31.08.2016, 11:12   #10
xu56857
Московский модуль
 
Аватар для xu56857
 
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 941
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,980
Поблагодарили 3,306 раз(а) в 637 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (3321)
По умолчанию

Цитата:
Сообщение от BNSF9399 Посмотреть сообщение
еще мультимасштабный и км/ч-mph вариант
Добавить в печать еще и в милях, знаков на дисплее должно хватить, вечером попробую, примерно так:

lcd.clear();lcd.setCursor(0, 0);lcd.print(S);lcd.print("KM/H ");lcd.print(S*0.62);lcd.print("MPH");
xu56857 вне форума  
Вверх
Старый 31.08.2016, 12:40   #11
BNSF9399
Местный
 
Аватар для BNSF9399
 
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (2791)
По умолчанию

Цитата:
Сообщение от xu56857 Посмотреть сообщение
Добавить в печать еще и в милях
Не... Я пару кнопок хочу поставить, км/ч-mph и HO-TT-N
Переключение по кругу с заносом в нужные переменные нужных данных.
BNSF9399 вне форума  
Вверх
Старый 04.09.2016, 19:57   #12
BR95009
Brocken-Meister
 
Аватар для BR95009
 
Регистрация: 27.04.2012
Адрес: !Msk
Сообщений: 8,618
Сказал(а) 'не согласен(а)'!: 7
Сказали 'не согласен'! 110 раз(а) в 87 сообщениях
Сказал(а) спасибо: 7,024
Поблагодарили 9,323 раз(а) в 3,311 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (9364)
По умолчанию

А я собрался сделать передвижной, в вагоне. Для G масштаба. Датчик холла на колесо и Uno с lcd диспеем в вагоне.
__________________
H0 - DR/DB, Ep.III, G и H0m - HSB, Н0е - DR/ÖBB/Zillertalbahn Ep.V-VI. И эночка.
Московский Модуль H0-присоединяйтесь!
BR95009 вне форума  
Вверх
Старый 04.09.2016, 20:22   #13
xu56857
Московский модуль
 
Аватар для xu56857
 
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 941
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,980
Поблагодарили 3,306 раз(а) в 637 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (3321)
По умолчанию

Цитата:
Сообщение от BR95009 Посмотреть сообщение
Датчик холла на колесо
Так и пройденный путь считать можно, интересная идея, в НО тоже впихнуть можно, надо будет попробовать ))
xu56857 вне форума  
Вверх
Старый 04.09.2016, 20:32   #14
мистер И.К.С.
Ĩ.Ĉ.Š.ҧрѻҫҭҩ мӥҫҭҿӄѣӤ.Ҟ.Ҫ
 
Аватар для мистер И.К.С.
 
Регистрация: 10.07.2006
Адрес: 13 верста У.Г.Ж.Д. HOe.N.Z? . . G.Oe.HO!
Сообщений: 2,416
Сказал(а) 'не согласен(а)'!: 466
Сказали 'не согласен'! 136 раз(а) в 123 сообщениях
Сказал(а) спасибо: 3,320
Поблагодарили 7,250 раз(а) в 2,856 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (7879)
По умолчанию

Цитата:
Сообщение от BR95009 Посмотреть сообщение
А я собрался сделать передвижной, в вагоне. Для G масштаба. Датчик холла на колесо и Uno с lcd диспеем в вагоне.
обычный велокомпьютер не канает? главное выбрать тот, где коэффициент диаметра колеса выставляется не в дюймах, а в миллиметрах или абстрактной 3-4 значной цифрой. даже беспроводные есть.

fleischmann 5555 таховагон был именно такой. стоял обычный sigma sport 700

http://www.galepp.com/train/tacho/tacho-e.htm
мистер И.К.С. вне форума  
Вверх
Старый 04.09.2016, 20:51   #15
xu56857
Московский модуль
 
Аватар для xu56857
 
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 941
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,980
Поблагодарили 3,306 раз(а) в 637 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (3321)
По умолчанию

Цитата:
Сообщение от мистер И.К.С. Посмотреть сообщение
обычный велокомпьютер не канает?
наверно канает, и колесо сразу в масштабе пересчитать, но как же муки творчества? ))
xu56857 вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 04.09.2016, 21:56   #16
BR95009
Brocken-Meister
 
Аватар для BR95009
 
Регистрация: 27.04.2012
Адрес: !Msk
Сообщений: 8,618
Сказал(а) 'не согласен(а)'!: 7
Сказали 'не согласен'! 110 раз(а) в 87 сообщениях
Сказал(а) спасибо: 7,024
Поблагодарили 9,323 раз(а) в 3,311 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (9364)
По умолчанию

Цитата:
Сообщение от мистер И.К.С. Посмотреть сообщение
обычный велокомпьютер не канает?
Не, не канает. Ардуина будет с большим экраном и большой цифрой. Скорость сразу будет видно. Опять же сделаю замер и запоминание именно максимальной.

Ардуин до оппы, экраны тоже россыпью. Вагон один модернизирую, гондоллу, магнитег приклею на двух сторонний скотч да датчик хола туда же с разъемом. А сама ардуина просто кладется в гоноллу и все. Замерил скорости, отмасштабировал сивишками, все локи отстроил, все разобрал и убрал в коробку для иных опытов. До следующего нового лока. А велокомпьютер покупать, а потом выкидывать.
__________________
H0 - DR/DB, Ep.III, G и H0m - HSB, Н0е - DR/ÖBB/Zillertalbahn Ep.V-VI. И эночка.
Московский Модуль H0-присоединяйтесь!
BR95009 вне форума  
Вверх
Старый 04.09.2016, 23:00   #17
BNSF9399
Местный
 
Аватар для BNSF9399
 
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (2791)
По умолчанию

Цитата:
Сообщение от xu56857 Посмотреть сообщение
но как же муки творчества?
да-да... хочется руками и мозгами поделать чтото. а если оно еще и 10 раз дешевле готового аналога получается...
BNSF9399 вне форума  
Вверх
Старый 09.09.2016, 12:22   #18
BNSF9399
Местный
 
Аватар для BNSF9399
 
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (2791)
По умолчанию

Чесотка в руках сильнее, чем скорость почты России...
Купил вчера набор с UNO за "невменяемые" деньги и поковырял скетч.
Хотелось бы узнать ваше мнение по поводу временного интервала измерения.
Сейчас датчики опрашиваются каждую миллисекунду. Меня не очень вдохновляют надписи "GO LEFT"/"GO RIGHT", хочу сделать анимацию, но при тике в миллисекунду получается, естественно, полная ерунда. Если в цикл опроса добавить задержку в 10 миллисекунд, насколько сильно это повлияет на точность измерений?
BNSF9399 вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 09.09.2016, 19:07   #19
BR95009
Brocken-Meister
 
Аватар для BR95009
 
Регистрация: 27.04.2012
Адрес: !Msk
Сообщений: 8,618
Сказал(а) 'не согласен(а)'!: 7
Сказали 'не согласен'! 110 раз(а) в 87 сообщениях
Сказал(а) спасибо: 7,024
Поблагодарили 9,323 раз(а) в 3,311 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (9364)
По умолчанию

Все задержки на дуне лучше реализовать с помощью функции millis().

Тогда не будет вопросов по задержкам. Скетч будет крутиться без задержек.

Вместо delay(10) пишем:

Arduino код:
unsigned long PrevMillis 0;

//...
void setup(){
      
//...
      
}

void loop{

if (
millis() - PrevMillis)>= 10{
   
PrevMillis millis(); 

   
//код, выполняемый через промежуток времени 10
   //..

     
}

//end of loop 
__________________
H0 - DR/DB, Ep.III, G и H0m - HSB, Н0е - DR/ÖBB/Zillertalbahn Ep.V-VI. И эночка.
Московский Модуль H0-присоединяйтесь!
BR95009 вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 09.09.2016, 19:49   #20
xu56857
Московский модуль
 
Аватар для xu56857
 
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 941
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,980
Поблагодарили 3,306 раз(а) в 637 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (3321)
По умолчанию

самый первый вариант программки для индикатора ТМ1637, у меня был именно с функцией delay(), и нечего как-то вычисляло ))) , но это все таки неправильно, надо с millis()



Arduino код:
//спидометр
#include "TM1637.h"
#define CLK 12//pins definitions for the module and can be changed to other ports       
#define DIO 11
TM1637 disp(CLK,DIO);
void setup()
{
  
disp.set(3);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
  
disp.init(D4056A);//D4056A is the type of the module
  
pinMode(3INPUT);//срабатывание датчика слева
  
pinMode(4INPUT);//срабатывание датчика справа
  
pinMode(5OUTPUT);//индикация срабатывания датчика слева
  
pinMode(6OUTPUT);//индикация срабатывания датчика справа
  
pinMode(7OUTPUT);//индикация "готов"
}

void loop()


   
int S=0int T=0disp.display(0);
  
//  if (digitalRead(3) == HIGH && digitalRead(4) == HIGH)
{
  if (
digitalRead(3) == LOW)  // условие на опрос левого датчика 3-го порта

  
{digitalWrite(5HIGH);
     while (
digitalRead(4) == HIGH)// счет времени пока не сработал правый датчик
    
delay(10); T=T+10;}
    
S=T*3.132;
   
disp.display(S);
     
delay(2000);}

  else
     
digitalWrite(5LOW);
      if (
digitalRead(4) == LOW)  // условие на опрос правого датчика 4-го порта
    
digitalWrite(6HIGH); 
      while (
digitalRead(3) == HIGH)// счет времени пока не сработал левый датчик
    
delay(10); T=T+10;}
    
S=T*3.132;
    
disp.display(S);
      
delay(2000);}
   else
     
digitalWrite(6LOW);}

xu56857 вне форума  
Вверх
Старый 09.09.2016, 20:30   #21
BNSF9399
Местный
 
Аватар для BNSF9399
 
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (2791)
По умолчанию

Цитата:
Сообщение от BR95009 Посмотреть сообщение
Скетч будет крутиться без задержек.
вы наверное не поняли о чем вопрос. ваш вариант реализации тоже подойдет (я так думаю, ибо я только вчера начал с сями разбираться).
суть была в том, что в варианте автора опрос второго датчика, после срабатывания первого делается в пустом цикле

Arduino код:
while (digitalRead(2) == HIGH){} 
вот я хочу сюда вставить код, который будет рисовать "статусбар"в направлении движения.
если не делать задержки, то символы слишком быстро бегут и вместо "бегущей" получаем "мигающую" строку.
пробовал с задержкой 10мс - мало. 25 минимум нужно.
вот и вопрос, насколько больше станет погрешность. я конечно понимаю, что измерения все равно не точные даже в авторском варианте, поэтому внесение дополнительных задержек не есть гуд.

ну и к слову, в тех местах, где ТС использует delay - там if не прокатит, нужно в while запихивать.
сейчас импортну видео, покажу что у меня выходит на экране.
BNSF9399 вне форума  
Вверх
Старый 09.09.2016, 20:53   #22
BNSF9399
Местный
 
Аватар для BNSF9399
 
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (2791)
По умолчанию


Относительно варианта ТС добавлена мультимасштабность и измерение в милях и километрах в час.
настройки сохраняются и при повторном включении заново выбирать не надо.
пока все собрано на макетке на UNO с целью изучить язык ардуины и доработать код ТС под свои мысли-хотелки
BNSF9399 вне форума  
Вверх
Старый 09.09.2016, 21:50   #23
BR95009
Brocken-Meister
 
Аватар для BR95009
 
Регистрация: 27.04.2012
Адрес: !Msk
Сообщений: 8,618
Сказал(а) 'не согласен(а)'!: 7
Сказали 'не согласен'! 110 раз(а) в 87 сообщениях
Сказал(а) спасибо: 7,024
Поблагодарили 9,323 раз(а) в 3,311 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (9364)
По умолчанию

Цитата:
Сообщение от BNSF9399 Посмотреть сообщение
варианте автора опрос второго датчика, после срабатывания первого делается в пустом цикле
Вариант автора предполагает однозадачность. Ваш вариант предполагает многозадачность: ждем срабатывания и крутим анимацию на дисплее. Ожидание+многозадачность делается в ардуине либо через millis либо через прерывания.

Выбирайте.

---------- Сообщение добавлено в 23:50 ---------- Предыдущие сообщение было в 23:47 ----------

Цитата:
Сообщение от BNSF9399 Посмотреть сообщение
пока все собрано на макетке на UNO
Класс! Не спешите с увековечиванием в текстолите. Если будете делать PCB по лут технологии, рекомендую прогу Fritzing. Классно получается.
__________________
H0 - DR/DB, Ep.III, G и H0m - HSB, Н0е - DR/ÖBB/Zillertalbahn Ep.V-VI. И эночка.
Московский Модуль H0-присоединяйтесь!
BR95009 вне форума  
Вверх
2 пользователя(ей) сказали cпасибо:
Старый 09.09.2016, 22:07   #24
BNSF9399
Местный
 
Аватар для BNSF9399
 
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (2791)
По умолчанию

Цитата:
Сообщение от BR95009 Посмотреть сообщение
ждем срабатывания и крутим анимацию на дисплее. Ожидание+многозадачность делается в ардуине либо через millis либо через прерывания.
мммм... ну у меня тоже однозадачность получается. правый датчик сработал - в цикле ждем пока не сработает левый.
как вариант, можно добавить еще прерывание этого цикла по таймауту.
я не очень себе представляю, как из этого цикла вызвать анимацию, которая работала бы параллельно с ожиданием сигнала от второго датчика, но не внутри этого же цикла.

у меня вот так выглядит

Arduino код:
    if (digitalRead(ir_left) == LOW) { // сработал левый датчик
      
time0 millis();
      
lcd.setCursor(10);
      
lcd.print("GO LEFT ");
      
int r 11;
      
char c '<';
      while (
digitalRead(ir_right) == HIGH) { // счет времени пока не сработал правый датчик
        // рисуем бегущую строку
        
lcd.setCursor(r0);
        
lcd.print(c);
        
r--;
        if(
1){
          
11;
          if(
== '<') {
            
' ';
          }
          else {
           
='<';
          }
        }
        
delay(rowDelay); // задержка перед отрисовкой следующего символа
      
}
      
// расчет скорости и вывод на дисплей
    

ПС. Вижу вы знаток, работает ли в Си вот такая конструкция?
Arduino код:
 (== '<') ? ' ' :   ='<'
BNSF9399 вне форума  
Вверх
Старый 09.09.2016, 22:21   #25
BNSF9399
Местный
 
Аватар для BNSF9399
 
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (2791)
По умолчанию

Цитата:
Сообщение от BR95009 Посмотреть сообщение
рекомендую прогу Fritzing
От спасибо... Картинки вдохновляют, сегодня искал нечто подобное, а так и не найдя, отрисовал схему в QCad
BNSF9399 вне форума  
Вверх
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
масштабное измерение скорости V2.0 BNSF9399 Arduino 38 25.11.2016 00:07
Тепловоз ТЭП80 - наш рекордсмен скорости (271км/ч) Coyote ЖД техника 1 30.01.2016 00:04
Влияние скорости на свет Murat Электрика и DCC 2 22.08.2010 18:09
Как добиться снижения скорости лока? Sandro общий 20 22.07.2009 21:39
Регулирование скорости локомотива на аналоге qwer04061995 Электрика и DCC 11 17.09.2008 09:25


Текущее время: 14:14. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Copyright © ModelldepO.ru 2006 -