Информация
- В рейтинге
- Не участвует
- Откуда
- Тверь, Тверская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Фулстек разработчик, Инженер встраиваемых систем
Ведущий
Linux
C++
Программирование микроконтроллеров
Схемотехника
React
JavaScript
Rust
Год назад я тоже делал велокомпьютер по фану. Только на более мощном STM32F4 и с экранчиком. Только вот забросил, т.к. появился более серьёзный проект.
Планировал выводить карту на экран, писать трек, и кучу других параметров, в том числе каденс, передачи(чтобы считать КПД) и тд. Сделал плату и заказал на заводе, написал ПО для компаса и начал работать с GPS — уже выводил координаты. На этом и бросил… А сейчас уже некогда. Да и лучше куплю уже готовый Garmin.
Фоточки, если интересно imgur.com/a/TpoHY
Сначала пульсу приняли, потом системду пустили — ужас вощим
Процесс создания новых элементов достаточно прост — посмотрите на существующие — единственное что нужно — в методе draw элемента написать код отрисовки. =)
Что-то жестоко — секунда 0_0
Вы на каком МК это делаете? Не эмулируете ли случаем 8080 на GPIO? На 8080 можно обновлять хоть на всех 60фпс дисплей, если использовать хардварный интерфейс с DMA…
1.2) Да, отрисовка происходит за раз, поэтому можно сразу из системного буфера гнать данные на экран.
1.3) Не совсем понял этот вопрос… Первый буфер, в который рисуют всё методы отрисовки примитивов обязателен, а второй, используемый только драйвером — не. Например драйвер SDL его и не использует.
2.1) Драйвер лишь должен инициализировать дисплей и отправлять данные из первичного буфера на экран. Единственное дополнительное, что может потребоваться — преобразовывать цвета, если битность первичного буфера не совпадает с той, что необходима дисплею(например для экономии РАМы и тп). А так да, достаточно скормить дисплею данные с указателя.
2.2) ГУЙ рисует в свой буфер(в первичный) за один проход, который просто потом использует драйвер. Драйвер может скопировать его, а может и нет.
2.3) Конечно можно — всё сделано через структуры в которые можно тупо скопировать необходимые данные по указателю, но это будет значительно сложнее, чем написать просто функцию инициализации.