Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 8, 2014 17:10:54

zip1982b
Зарегистрирован: 2014-11-08
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Быстродействие программ на Python и программирование временных интервалов.

Доброго времени суток уважаемые форумчане! Программировать на Python начал недавно, после приобретения Raspberry pi. Раньше программировал (и до сих пор практикую) микроконтроллеры avr (asm, C), ПЛК со средой исполнения CoDeSys (ST, LD, FBD). А посему есть вопросы по быстродействию к программам на python и к применимости python в своих разработках.
Написал я тут недавно простенькую прогу – Диммер для светодиодной ленты (в качестве обучения). В роли устройства выбрал недавно купленный RPi modelB. Идея такая: Нажал на кнопку -> светодиодная лента в течении 3 секунд загорается от 0% до 100%.
Нажал второй раз -> светодиодная лента гаснет (сразу). Вот и всё. Только вот у меня не получилось, зажигать светодиоды в интервале 3 секунд. В итоге получилось что моя программа зажигала светодиоды от 0% до 100% за 7 секунд. Это честно меня расстроило.

листинг во вложении:

По сути я разбил временной интервал 3 секунды на 0,1 секунды получилось 30 частей времени.
И 1024 разбил на 30 частей, для того чтобы – прошло 0,1 секунды, а в функцию LED_Dimmer записалось 34. В следующей итерации соответственно запишутся числа на 34 больше. И чем меньше интервалы времени, тем плавне должны загораться светодиоды, так я думал 

Но почему проц в 700 МГц у RPi решает такую задачу слишком долго. А ATMega16 с кварцем 8МГц в разы быстрее… Возможно решение выбрано не правильно, не исключаю.
У кого какие идеи увеличить скорость выполнения этой программы?
Возможно такие задачи лучше и дешевле решать на мк, но в качестве обучения было бы не плохо выслушать другие мнения.

Отредактировано zip1982b (Ноя. 8, 2014 17:12:46)

Офлайн

#2 Ноя. 8, 2014 17:13:26

zip1982b
Зарегистрирован: 2014-11-08
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Быстродействие программ на Python и программирование временных интервалов.

вложение

Прикреплённый файлы:
attachment програ.txt (1,4 KБ)

Офлайн

#3 Ноя. 8, 2014 20:26:09

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Быстродействие программ на Python и программирование временных интервалов.

Может причина в опечатке?

def Led_Time(argX, ragtime):
а должно быть
def Led_Time(argX, argtime):
Не стоит злоупотреблять вызовами функций:
def LED_Dimmer(arg_value):	                      # в эту функцию просто пихаем число от 0 до 1024
	wiringpi.pwmWrite(led, arg_value)
Тем более что в таком контексте она бесполезна. Хотя на такой машине 10 вызвовов функции в секунду думаю совсем не проблема.
Если вы хотите получить правильные временные интервалы то работать надо не со sleep а с абсолютным временем.



Отредактировано doza_and (Ноя. 8, 2014 20:27:52)

Офлайн

#4 Ноя. 9, 2014 15:17:03

zip1982b
Зарегистрирован: 2014-11-08
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Быстродействие программ на Python и программирование временных интервалов.

def Led_Time(argX, ragtime): - это опечатка когда копипастил и правил в блокноте.

С абсолютным временем? это с системным?

мне и самому sleep() не нравится


Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version