Контакты
Местоположение
Россия, Москва и Московская обл., Москва

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (8)

Лучшие ответы пользователя

Все ответы (2)
  • Как взаимодействовать с XBee модулями?

    @r1000ru
    Программирую
    Для подключения к обычному PC и общению в терминалах (через виртуальный COM-порт) достаточно двух плат 3.2 (по одной на приемопередатчик). Через эту плату вы обновите прошивку и отконфигурируете устройство. Для взаимодействия с контроллером достаточно двух ног (TX/RX) но можно использовать и остальные (прерывания, PWM мощности приема и прочее - значение ног описано в даташитах). Не забудьте, что данные устройства питаются и работают с логикой на 3V3. По этому для ардуино нужны либо переходники, либо версии на 3.3 вольта. Шилды занимаются только тем, что согласуют напряжения. Так как платы общаются по UART, у обычных ардуин он будет занят. Для отладки рекомендую использовать версии на Atmega32U4 - с аппаратным USB. Например такую: DFRobot Leonardo. У нее при общении с компьютером аппаратный UART не задействован и нет никаких посредников в виде FT232RL
    Тут довольно подробно все описано о взаимодействии контроллера и xbee. Только не забудьте, если будете использовать ардуину с аппаратным USB, Serial нужно поменять на Serial1, так как просто Serial - это виртуальный USB ком порта. А если будете использовать без аппаратного USB - xbee нужно вынимать при залитии, иначе возможны проблемы (получится параллельное соединение к FT232RL и Atmega и Xbee)
    Ответ написан
    Комментировать
  • Как создать ссылку на метод из массива-свойства структуры в Go?

    @r1000ru Автор вопроса
    Программирую
    Ниже тоже самое на Go, но без карты методов, а хотелось бы как-то красивее:
    package main
    
    import "fmt"
    
    // Test structure
    type Test struct {
    	a       int8
    	b       int8
    	opcodes [2]func() int8
    }
    
    func (t *Test) add() int8 {
    	return t.a + t.b
    }
    
    func (t *Test) sub() int8 {
    	return t.a - t.b
    }
    
    // Init properties
    func (t *Test) Init(a, b int8) {
    	t.a = a
    	t.b = b
    	// Вручную заполняем указатели на методы
    	t.opcodes[0] = t.add
    	t.opcodes[1] = t.sub
    	return
    }
    
    // Call method by ID
    func (t *Test) Call(fnID int8) int8 {
    	fn := t.opcodes[fnID]
    	if fn == nil {
    		panic(`Empty command`)
    	}
    	r := fn()
    	return r
    }
    
    func main() {
    	t := new(Test)
    	t.Init(2, 5)
    	fmt.Println(t.Call(0x00), t.Call(0x01))
    }

    UPD: Убрал switch, добавил массив. Соотвественно вопрос: можно ли сделать так, чтобы при создании экземпляра, автоматом заполнялся массив Test.opcodes указателями на методы
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (3)