• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang sysfs.NewDigitalPin函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/hybridgroup/gobot/sysfs.NewDigitalPin函数的典型用法代码示例。如果您正苦于以下问题:Golang NewDigitalPin函数的具体用法?Golang NewDigitalPin怎么用?Golang NewDigitalPin使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了NewDigitalPin函数的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: connectArduinoBoard

func (e *EdisonAdaptor) connectArduinoBoard() (err error) {
	if err = e.tristate.Direction(sysfs.OUT); err != nil {
		return err
	}
	if err = e.tristate.Write(sysfs.LOW); err != nil {
		return err
	}

	// Setup mux HIGH
	for _, i := range []int{263, 262} {
		io := sysfs.NewDigitalPin(i)
		if err = io.Export(); err != nil {
			return err
		}
		if err = io.Direction(sysfs.OUT); err != nil {
			return err
		}
		if err = io.Write(sysfs.HIGH); err != nil {
			return err
		}
		if err = io.Unexport(); err != nil {
			return err
		}
	}

	// Setup mux LOW
	for _, i := range []int{240, 241, 242, 243} {
		io := sysfs.NewDigitalPin(i)
		if err = io.Export(); err != nil {
			return err
		}
		if err = io.Direction(sysfs.OUT); err != nil {
			return err
		}
		if err = io.Write(sysfs.LOW); err != nil {
			return err
		}
		if err = io.Unexport(); err != nil {
			return err
		}

	}

	// Arduino IO1, IO4 and IO13
	for _, i := range []string{"131", "129", "40"} {
		if err = changePinMode(i, "0"); err != nil {
			return err
		}
	}

	err = e.tristate.Write(sysfs.HIGH)
	return
}
开发者ID:abourget,项目名称:gobot,代码行数:53,代码来源:edison_adaptor.go


示例2: I2cStart

// I2cStart initializes i2c device for addresss
func (e *EdisonAdaptor) I2cStart(address int) (err error) {
	if e.i2cDevice != nil {
		return
	}

	if err = e.tristate.Write(sysfs.LOW); err != nil {
		return
	}

	for _, i := range []int{14, 165, 212, 213} {
		io := sysfs.NewDigitalPin(i)
		if err = io.Export(); err != nil {
			return
		}
		if err = io.Direction(sysfs.IN); err != nil {
			return
		}
		if err = io.Unexport(); err != nil {
			return
		}
	}

	for _, i := range []int{236, 237, 204, 205} {
		io := sysfs.NewDigitalPin(i)
		if err = io.Export(); err != nil {
			return
		}
		if err = io.Direction(sysfs.OUT); err != nil {
			return
		}
		if err = io.Write(sysfs.LOW); err != nil {
			return
		}
		if err = io.Unexport(); err != nil {
			return
		}
	}

	for _, i := range []string{"28", "27"} {
		if err = changePinMode(i, "1"); err != nil {
			return
		}
	}

	if err = e.tristate.Write(sysfs.HIGH); err != nil {
		return
	}

	e.i2cDevice, err = sysfs.NewI2cDevice("/dev/i2c-6", address)
	return
}
开发者ID:ympons,项目名称:gobot,代码行数:52,代码来源:edison_adaptor.go


示例3: digitalPin

// digitalPin returns matched digitalPin for specified values
func (r *RaspiAdaptor) digitalPin(pin string, dir string) (sysfsPin sysfs.DigitalPin, err error) {
	var i int

	if val, ok := pins[pin][r.revision]; ok {
		i = val
	} else if val, ok := pins[pin]["*"]; ok {
		i = val
	} else {
		err = errors.New("Not a valid pin")
		return
	}

	if r.digitalPins[i] == nil {
		r.digitalPins[i] = sysfs.NewDigitalPin(i)
		if err = r.digitalPins[i].Export(); err != nil {
			return
		}
	}

	if err = r.digitalPins[i].Direction(dir); err != nil {
		return
	}

	return r.digitalPins[i], nil
}
开发者ID:katgironpe,项目名称:gobot,代码行数:26,代码来源:raspi_adaptor.go


示例4: digitalPin

// digitalPin retrieves digital pin value by name
func (b *BeagleboneAdaptor) digitalPin(pin string, dir string) (sysfsPin sysfs.DigitalPin, err error) {
	i, err := b.translatePin(pin)
	if err != nil {
		return
	}
	if b.digitalPins[i] == nil {
		b.digitalPins[i] = sysfs.NewDigitalPin(i)
		err := b.digitalPins[i].Export()
		if err != nil {
			return nil, err
		}
	}
	if err = b.digitalPins[i].Direction(dir); err != nil {
		return
	}
	return b.digitalPins[i], nil
}
开发者ID:ympons,项目名称:gobot,代码行数:18,代码来源:beaglebone_adaptor.go


示例5: digitalPin

// digitalPin returns matched digitalPin for specified values
func (r *RaspiAdaptor) digitalPin(pin string, dir string) (sysfsPin sysfs.DigitalPin, err error) {
	i, err := r.translatePin(pin)

	if err != nil {
		return
	}

	if r.digitalPins[i] == nil {
		r.digitalPins[i] = sysfs.NewDigitalPin(i)
		if err = r.digitalPins[i].Export(); err != nil {
			return
		}
	}

	if err = r.digitalPins[i].Direction(dir); err != nil {
		return
	}

	return r.digitalPins[i], nil
}
开发者ID:aryanugroho,项目名称:gobot,代码行数:21,代码来源:raspi_adaptor.go


示例6: digitalPin

// digitalPin returns matched digitalPin for specified values
func (c *ChipAdaptor) digitalPin(pin string, dir string) (sysfsPin sysfs.DigitalPin, err error) {
	i, err := c.translatePin(pin)

	if err != nil {
		return
	}

	if c.digitalPins[i] == nil {
		c.digitalPins[i] = sysfs.NewDigitalPin(i)
		if err = c.digitalPins[i].Export(); err != nil {
			return
		}
	}

	if err = c.digitalPins[i].Direction(dir); err != nil {
		return
	}

	return c.digitalPins[i], nil
}
开发者ID:ympons,项目名称:gobot,代码行数:21,代码来源:chip_adaptor.go


示例7: NewEdisonAdaptor

// NewEdisonAdaptor returns a new EdisonAdaptor with specified name
func NewEdisonAdaptor(name string) *EdisonAdaptor {
	return &EdisonAdaptor{
		name: name,
		//i2cDevices: make(map[int]io.ReadWriteCloser),
		//i2cDevices: make(map[int]io.ReadWriteCloser),
		connect: func(e *EdisonAdaptor) (err error) {
			e.tristate = sysfs.NewDigitalPin(214)
			if err = e.tristate.Export(); err != nil {
				// edison: Failed to initialize Arduino board TriState
				// assuming miniboard:
				e.miniboard = true
				e.sysfsPinMap = sysfsPinsMiniboard
				return e.connectMiniboard()
			} else {
				e.sysfsPinMap = sysfsPinsArduino
				return e.connectArduinoBoard()
			}

		},
	}
}
开发者ID:abourget,项目名称:gobot,代码行数:22,代码来源:edison_adaptor.go


示例8: digitalPin

// digitalPin returns matched digitalPin for specified values
func (e *JouleAdaptor) digitalPin(pin string, dir string) (sysfsPin sysfs.DigitalPin, err error) {
	i := sysfsPinMap[pin]
	if e.digitalPins[i.pin] == nil {
		e.digitalPins[i.pin] = sysfs.NewDigitalPin(i.pin)
		if err = e.digitalPins[i.pin].Export(); err != nil {
			// TODO: log error
			return
		}
	}

	if dir == "in" {
		if err = e.digitalPins[i.pin].Direction(sysfs.IN); err != nil {
			return
		}
	} else if dir == "out" {
		if err = e.digitalPins[i.pin].Direction(sysfs.OUT); err != nil {
			return
		}
	}
	return e.digitalPins[i.pin], nil
}
开发者ID:ympons,项目名称:gobot,代码行数:22,代码来源:joule_adaptor.go


示例9: I2cStart

// I2cStart initializes i2c device for addresss
func (e *EdisonAdaptor) I2cStart(address int) (err error) {
	if e.i2cDevice != nil {
		return
	}

	// FIXME: the I2cDevice interface doesn,t support multiple buses,
	// like the miniboard.. We select bus-6 by default here.

	if e.miniboard {
		for _, i := range []string{"20", "19"} /* bus-1 */ {
			//for _, i := range []string{"28", "27"} /* bus-6 */ {
			if err = changePinMode(i, "1"); err != nil {
				return
			}
		}

		e.i2cDevice, err = sysfs.NewI2cDevice("/dev/i2c-1", address)

	} else {

		if err = e.tristate.Write(sysfs.LOW); err != nil {
			return
		}

		// Confiure IO18, IO19
		// (ref: mraa's intel_edison_fab_c.c, func mraa_intel_edison_i2c_init_pre)
		for _, i := range []int{14, 165, 212, 213} {
			io := sysfs.NewDigitalPin(i)
			if err = io.Export(); err != nil {
				return
			}
			if err = io.Direction(sysfs.IN); err != nil {
				return
			}
			if err = io.Unexport(); err != nil {
				return
			}
		}

		// Continue on..
		for _, i := range []int{236, 237, 204, 205} {
			io := sysfs.NewDigitalPin(i)
			if err = io.Export(); err != nil {
				return
			}
			if err = io.Direction(sysfs.OUT); err != nil {
				return
			}
			if err = io.Write(sysfs.LOW); err != nil {
				return
			}
			if err = io.Unexport(); err != nil {
				return
			}
		}

		// Activate the I2c bus-6
		for _, i := range []string{"28", "27"} {
			if err = changePinMode(i, "1"); err != nil {
				return
			}
		}

		if err = e.tristate.Write(sysfs.HIGH); err != nil {
			return
		}

		e.i2cDevice, err = sysfs.NewI2cDevice("/dev/i2c-6", address)
	}

	return
}
开发者ID:abourget,项目名称:gobot,代码行数:73,代码来源:edison_adaptor.go


示例10: digitalPin

// digitalPin returns matched digitalPin for specified values
func (e *EdisonAdaptor) digitalPin(pin string, dir string) (sysfsPin sysfs.DigitalPin, err error) {
	i := e.sysfsPinMap[pin]
	if e.digitalPins[i.gpioPin] == nil {
		e.digitalPins[i.gpioPin] = sysfs.NewDigitalPin(i.gpioPin)
		if err = e.digitalPins[i.gpioPin].Export(); err != nil {
			return
		}

		if i.resistor != 0 {
			e.digitalPins[i.resistor] = sysfs.NewDigitalPin(i.resistor)
			if err = e.digitalPins[i.resistor].Export(); err != nil {
				return
			}
		}

		if i.levelShifter != 0 {
			e.digitalPins[i.levelShifter] = sysfs.NewDigitalPin(i.levelShifter)
			if err = e.digitalPins[i.levelShifter].Export(); err != nil {
				return
			}
		}

		for _, mux := range i.mux {
			e.digitalPins[mux.pin] = sysfs.NewDigitalPin(mux.pin)
			if err = e.digitalPins[mux.pin].Export(); err != nil {
				return
			}

			if err = e.digitalPins[mux.pin].Direction(sysfs.OUT); err != nil {
				return
			}

			if err = e.digitalPins[mux.pin].Write(mux.value); err != nil {
				return
			}

		}
	}

	if dir == "in" {
		if err = e.digitalPins[i.gpioPin].Direction(sysfs.IN); err != nil {
			return
		}

		if i.resistor != 0 {
			if err = e.digitalPins[i.resistor].Direction(sysfs.OUT); err != nil {
				return
			}

			if err = e.digitalPins[i.resistor].Write(sysfs.LOW); err != nil {
				return
			}
		}

		if i.levelShifter != 0 {
			if err = e.digitalPins[i.levelShifter].Direction(sysfs.OUT); err != nil {
				return
			}

			if err = e.digitalPins[i.levelShifter].Write(sysfs.LOW); err != nil {
				return
			}
		}

	} else if dir == "out" {
		if err = e.digitalPins[i.gpioPin].Direction(sysfs.OUT); err != nil {
			return
		}

		if i.resistor != 0 {
			if err = e.digitalPins[i.resistor].Direction(sysfs.IN); err != nil {
				return
			}
		}

		if i.levelShifter != 0 {
			if err = e.digitalPins[i.levelShifter].Direction(sysfs.OUT); err != nil {
				return
			}

			if err = e.digitalPins[i.levelShifter].Write(sysfs.HIGH); err != nil {
				return
			}
		}

	}
	return e.digitalPins[i.gpioPin], nil
}
开发者ID:abourget,项目名称:gobot,代码行数:89,代码来源:edison_adaptor.go


示例11: NewEdisonAdaptor

// NewEdisonAdaptor returns a new EdisonAdaptor with specified name
func NewEdisonAdaptor(name string) *EdisonAdaptor {
	return &EdisonAdaptor{
		name: name,
		//i2cDevices: make(map[int]io.ReadWriteCloser),
		//i2cDevices: make(map[int]io.ReadWriteCloser),
		connect: func(e *EdisonAdaptor) (err error) {
			e.tristate = sysfs.NewDigitalPin(214)
			if err = e.tristate.Export(); err != nil {
				return err
			}
			if err = e.tristate.Direction(sysfs.OUT); err != nil {
				return err
			}
			if err = e.tristate.Write(sysfs.LOW); err != nil {
				return err
			}

			for _, i := range []int{263, 262} {
				io := sysfs.NewDigitalPin(i)
				if err = io.Export(); err != nil {
					return err
				}
				if err = io.Direction(sysfs.OUT); err != nil {
					return err
				}
				if err = io.Write(sysfs.HIGH); err != nil {
					return err
				}
				if err = io.Unexport(); err != nil {
					return err
				}
			}

			for _, i := range []int{240, 241, 242, 243} {
				io := sysfs.NewDigitalPin(i)
				if err = io.Export(); err != nil {
					return err
				}
				if err = io.Direction(sysfs.OUT); err != nil {
					return err
				}
				if err = io.Write(sysfs.LOW); err != nil {
					return err
				}
				if err = io.Unexport(); err != nil {
					return err
				}

			}

			for _, i := range []string{"111", "115", "114", "109"} {
				if err = changePinMode(i, "1"); err != nil {
					return err
				}
			}

			for _, i := range []string{"131", "129", "40"} {
				if err = changePinMode(i, "0"); err != nil {
					return err
				}
			}

			err = e.tristate.Write(sysfs.HIGH)
			return
		},
	}
}
开发者ID:ympons,项目名称:gobot,代码行数:68,代码来源:edison_adaptor.go



注:本文中的github.com/hybridgroup/gobot/sysfs.NewDigitalPin函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang sysfs.NewMockFilesystem函数代码示例发布时间:2022-05-28
下一篇:
Golang edison.NewEdisonAdaptor函数代码示例发布时间:2022-05-28
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap