www.open-tager.ru http://www.open-tager.ru/forum/ |
|
LTArmada http://www.open-tager.ru/forum/viewtopic.php?f=5&t=3776 |
Страница 108 из 109 |
Автор: | Pingvin [ 20 апр 2018, 07:29 ] |
Заголовок сообщения: | Re: LTArmada |
Протокол обмена по блютус между "мостом" и софтиной простой до безобразия. Протокол текстовый. r0AFF21D4......F0\r i0AFF21D4......F0\r r - значит данный получены/нужно отправить по радиоканалу i - по ИК каналу 0AFF21D4......F0 - данные в шестнадцатеричном виде. \r - это служебный символ возврата каретки - "Enter" на клавиатуре. Пока полностью работает обмен только по радиоканалу. За ИК просто ещё не брался, ничего там сложного нет. Единственное - количество передаваемых бит может быть не кратно 8, то есть нужно будет указать - сколько бит передать нужно. |
Автор: | Pingvin [ 04 май 2018, 09:15 ] |
Заголовок сообщения: | Re: LTArmada |
"Матрешка" теперь универсальная - и с "Аскетом" может работать, и с "АРМадой" без смены прошивки. https://www.youtube.com/watch?time_cont ... RLN4_1Ghfw |
Автор: | Pingvin [ 19 май 2018, 07:47 ] | ||
Заголовок сообщения: | Re: LTArmada | ||
Немного "ужал" плату. Теперь АРМада помещается в рукоять Носорога.
|
Автор: | Pingvin [ 22 май 2018, 08:34 ] | ||||
Заголовок сообщения: | Re: LTArmada | ||||
Почти готово.
|
Автор: | Pingvin [ 22 май 2018, 12:53 ] |
Заголовок сообщения: | Re: LTArmada |
Rhino case and ARMada inside. https://www.youtube.com/watch?v=-BoHT1J3Mvs Чем не "народный" корпус? При партии от 50 штук цена 800 р. Скинулись кому надо и ... |
Автор: | Pingvin [ 07 авг 2018, 18:01 ] |
Заголовок сообщения: | Re: LTArmada |
Грызу плюсы понемногу - какая няшка! Например, описываем класс - пин Код: #ifndef _PIN_H #define _PIN_H #include <stdint.h> constexpr static uint8_t PORTA = 0; constexpr static uint8_t PORTB = 1; constexpr static uint8_t PORTC = 2; constexpr static uint8_t PORTD = 3; constexpr static uint8_t notAPort = 0xFF; constexpr static uint8_t PIN0 = 0; constexpr static uint8_t PIN1 = 1; constexpr static uint8_t PIN2 = 2; constexpr static uint8_t PIN3 = 3; constexpr static uint8_t PIN4 = 4; constexpr static uint8_t PIN5 = 5; constexpr static uint8_t PIN6 = 6; constexpr static uint8_t PIN7 = 7; constexpr static uint8_t notAPin = 0xFF; class Pin{ public: Pin(uint8_t port, uint8_t pin); void switchToOutput(); void set(); void reset(); private: uint8_t m_port; uint8_t m_pin; protected: }; Код: Pin::Pin(uint8_t port, uint8_t pin){ m_port=port; m_pin=pin; // Enable GPIO Peripheral clock RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA << (port), ENABLE); } void Pin::switchToOutput(){ GPIO_InitTypeDef GPIO_InitStructure; // Configure pin in output push/pull mode GPIO_InitStructure.GPIO_Pin = (1 << m_pin);//BLINK_PIN_MASK(BLINK_PIN_NUMBER); GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(((GPIO_TypeDef *)(GPIOA_BASE + (GPIOB_BASE-GPIOA_BASE)*(m_port))), &GPIO_InitStructure); } void Pin::set(){ GPIO_SetBits(((GPIO_TypeDef *)(GPIOA_BASE + (GPIOB_BASE-GPIOA_BASE)*(m_port))), (1 << m_pin)); } void Pin::reset(){ GPIO_ResetBits(((GPIO_TypeDef *)(GPIOA_BASE + (GPIOB_BASE-GPIOA_BASE)*(m_port))), (1 << m_pin)); } Теперь можем делать так Pin myPin(PORTB,PIN1); myPin.switchToOutput(); myPin.set(); myPin.reset(); А теперь - новый класс Led наследник Pin Код: class Led: public Pin{ public: Led(uint8_t port, uint8_t pin): Pin(port,pin){switchToOutput();}; void on(){set();}; void off(){reset();}; }; Теперь так можно Led myLed(PORTB,PIN1); myLed.on(); myLed.off(); Смешные, конечно, "открытия" для монстров вроде Alexies. |
Автор: | Pacifist [ 08 авг 2018, 00:33 ] |
Заголовок сообщения: | Re: LTArmada |
Боюсь даже представить какой восторг у Вас вызовет перегрузка операторов Одумайтесь, одумайтесь, товарищ Pingvin, прежде чем, понимаете, увидеть С++ без санкции соответствующих органов! Так и в Ардуинство недолго скатиться... |
Автор: | Pingvin [ 08 авг 2018, 05:58 ] |
Заголовок сообщения: | Re: LTArmada |
Будет и переопределение операторов, будут и виртуальные функции. Виртуальные буду использовать для работы с экранчиками. Они же у меня двух типов, так чтобы в основном коде каждый раз не уточнять (при помощи #ifdef), функцию из какого драйвера вызвать - буду использовать виртуальные функции. В основном коде будет только что то типа COLOR_LCD *LCD = new COLOR_LCD();//если цветной или BLACK_LCD *LCD = new BLACK_LCD();//если черно-белый приводим указатель на экранчик к указателю на базовый класс пусть базовый класс называется LCD_BASE тогда LCD_BASE* Screen = LCD; и далее просто используем виртуальные функции базового класса, во время выполнения автоматически будут вызываться нужные функции - или для черно-белого экрана, или для цветного. Screen->print(0,0,"Hello!"); Screen->clear(); и т.д. И наконец то избавлюсь от этих жутких #ifdef-ов. Надеюсь - ничего не напутал (ещё буду уточнять). Ардуинство - тот же самый C++, только все "кишки" (описания классов, шаблоны) спрятаны во всевозможные библиотеки. С Ардуиной проблема в том, что пользователю ничего в "кишочках" поправить не дают. У нас же все будет доступно (если захотим). Код должен быть удобочитаем и самодокументированный. Так что ничего плохого в Ардуино-style коде я не вижу. И я понимаю, что это был сарказм. |
Автор: | Pingvin [ 08 авг 2018, 16:23 ] |
Заголовок сообщения: | Re: LTArmada |
Немного доработал класс Pin. Теперь можно включать внешние прерывания. Например Код: Pin BtStatePin(PORTC,PIN7); BtStatePin.enableExti(true); BtStatePin.setCallback(testCallback); активирует внешние прерывания на ножке и при наступлении таковых вызовет функцию testCallback() Функцию можно переназначить на любую другую (типа void f(void)) - то есть без возвращаемого значения и аргументов. Или отключить BtStatePin.setCallback(0); Функция будет работать в контексте прерывания. |
Автор: | DiBor [ 24 сен 2018, 00:22 ] |
Заголовок сообщения: | Re: LTArmada |
Кстати такой модуль еще никто не юзал? Заявленая дальность 10км. https://ru.aliexpress.com/item/Ra-01-Lo ... 53009619b7 |
Страница 108 из 109 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |